自分用メモ。
RailsならCapistranoが有名だが、Goでも同じようなツールがないか調べてみたところ
このツールが検索に引っかかったので、使い方を調べてみた。
ツール名は「sup」。
github.com
特徴は、YAML形式の設定ファイルに対象ホストやコマンドを自分で記述して
デプロイを行うこと。また1回のコマンドで複数ホストにデプロイすることも可能。
使用方法は以下。
インストール
$ go get -u github.com/pressly/sup/cmd/sup
動作確認
$ sup -v
使い方
$ sup [OPTIONS] NETWORK COMMAND [...]
NETWORKに、設定ファイルに記述した「ネットワーク名」を指定し
COMMANDに、設定ファイルに記述した「コマンド名」を指定する。
設定ファイルを作成
「Supfile」という名前ファイルをルートに作成。
envの箇所で環境変数を設定。
例ではPRODUCTION_DSTはデプロイ先のディレクトリを指定し、
hosts:ではホスト毎の情報(USER@HOST:PORT)を設定する。
以下設定例。
version: 0.4 env: # Environment variables for all commands NAME: example PRODUCTION_DST: /home/xxx/go_deploy networks: # Groups of hosts dev: hosts: - localhost staging: hosts: - USER@HOST:PORT production: hosts: - USER@HOST:PORT commands: start-echo: desc: start message run: echo [START] $NAME HOST[$SUP_NETWORK] end-echo: desc: ending message run: echo [END] $NAME HOST[$SUP_NETWORK] # Named set of commands to be run remotely ping: desc: Print uname and current date/time. run: uname -a; date pre-build: desc: Initialize directory run: mkdir -p $PRODUCTION_DST upload: desc: Upload dist files to all hosts upload: - src: ./ dst: $PRODUCTION_DST targets: deploy: - start-echo - pre-build - upload - end-echo
上記の例では
targetsに「deploy」を設定し
一括で処理したいショートカットを設定している。
なので以下のようにコマンドを打つと、一気に4つの処理が同時に走る。
$ sup production deploy
この状態だけだと、ただデプロイしてるだけなので
ビルドから実行までのタスクも次回は書きたい。