自分用メモ。
RailsならCapistranoが有名だが、Goでも同じようなツールがないか調べてみたところ
このツールが検索に引っかかったので、使い方を調べてみた。
ツール名は「sup」。
github.com
特徴は、YAML形式の設定ファイルに対象ホストやコマンドを自分で記述して
デプロイを行うこと。また1回のコマンドで複数ホストにデプロイすることも可能。
使用方法は以下。
インストール
$ go get -u github.com/pressly/sup/cmd/sup
使い方
$ sup [OPTIONS] NETWORK COMMAND [...]
NETWORKに、設定ファイルに記述した「ネットワーク名」を指定し
COMMANDに、設定ファイルに記述した「コマンド名」を指定する。
設定ファイルを作成
「Supfile」という名前ファイルをルートに作成。
envの箇所で環境変数を設定。
例ではPRODUCTION_DSTはデプロイ先のディレクトリを指定し、
hosts:ではホスト毎の情報(USER@HOST:PORT)を設定する。
以下設定例。
version: 0.4
env:
NAME: example
PRODUCTION_DST: /home/xxx/go_deploy
networks:
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]
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
この状態だけだと、ただデプロイしてるだけなので
ビルドから実行までのタスクも次回は書きたい。