# 鍵の作成
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa__deploy_from_gitlab_cicd
# 公開鍵
cat ~/.ssh/id_rsa__deploy_from_gitlab_cicd.pub
# 秘密鍵
cat ~/.ssh/id_rsa__deploy_from_gitlab_cicd
表示される公開鍵、秘密鍵をクリップボードにコピーしておきます
cd .ssh
vi authorized_keys
(ここでviから先ほどクリップボードにコピーした鍵をペーストする。)
(例)例えば次のように設定すると
command="echo 'SSH OK!!!'; pwd" ssh-rsa AAAAB3NzaC1yc2EAAAA...........(省略)...........== Gitlab_CICD
SSH接続するとコマンドを実行してすぐ切断されます。
(実行例)
SSH OK!!!
/var/www/vhosts/my-host.com
これを使ってデプロイするコマンドを記述しておきます。
例) .bash_profileを読み込んでパスを設定した後、deploy.sh を実行する場合
command="source ~/.bash_profile; echo '' ; echo '● SSH Command Start ↓' ; sh deploy.sh ; echo '● SSH Command End ↑' ; echo''; " ssh-rsa AAAAB3NzaC1yc2EAAAA...........(省略)...........== Gitlab_CICD
deploy.sh の内容は好きに作成してください。
設定後にssh正しく接続できるか確認します
(コマンド例)
ssh -tt <ユーザー名>@<サーバIP> -p <ポート番号> -i ~/.ssh/id_rsa__deploy_from_gitlab_cicd
グループかプロジェクトの「Settings」→「CI/CD」→「Variable」から「Add Variable」をクリックします。
次のような設定で作成します
Key : id_rsa__deploy_from_gitlab_cicd
Value : <先程のコピーした秘密鍵>
Type : File
合わせて「SSH_IP_ADDRESS」「SSH_USER」に変数を設定しておいても良いでしょう。
管理画面から編集します。 編集が完了すると対象のリポジトリの .gitlab-ci.yml に保存され、 Job が1つ実行されます。
YML ファイルサンプル
(build のステージは省略しています。デプロイの前にビルドが通ることを確認した方が良いでしょう)
stages:
- deploy
cache:
paths:
- node_modules/
deploy_production:
stage: deploy
image: kroniak/ssh-client
before_script:
- apk add curl
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
script:
- ip addr show
- curl -s http://httpbin.org/ip
- curl -s inet-ip.info
- pwd
- ssh -tt $SSH_USER@$SSH_IP_ADDRESS -p 22 -i ~/.ssh/id_rsa
接続先のターミナルを
.bash_profile
# change TERM
export TERM=xterm
としておきましょう。