何ができるの?
- GitLabのmainブランチにMergeすると、自動でXserverにデプロイされる。
- 今回は最低限の設定で、mainブランチの中身を自動デプロイする仕組みです。
- htmlなんかはこれをやると良いんじゃないでしょうか。
こんな人向け
- GitLabを使っている
- Xserverのレンタルサーバーを利用している
- デプロイを手動でやっていている
- デプロイが手動なものだからミスが多い
- チーム開発している
設定ファイル
.gitlab-ci.yml
variables:
STAGE_HOST: [サーバーID].xsrv.jp
STAGE_USER: [サーバーID]
DEPLOY: /home/[サーバーID]/[ドメイン名]/public_html/[アップロード先のフォルダまでのパス]
stages:
- deploy
deploy:
stage: deploy
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- touch ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- ssh-keyscan -p 10022 $STAGE_HOST >> ~/.ssh/known_hosts
- apt-get update
- apt-get install -y rsync
script:
- time rsync -av --exclude='.gitlab-ci.yml' --exclude='.git/' -e "ssh -p 10022" --delete --checksum ./ $STAGE_USER@$STAGE_HOST:$DEPLOY
rules:
- if: '$SSH_PRIVATE_KEY && $CI_COMMIT_REF_NAME=="main"'
まとめ
- 今回はテストとしてGitLabのCiCDを使ってみました。
- シンプルだけど、実践的ですごく便利な機能です。
- 今後は、Rails, Laravelとデプロイするものを大きくしていき、Xserver以外にもデプロイできるようになりたいですね。
- 特に、フレームワークのDeployは、permission関係の設定やその他のシェルコマンドなども必要なので色々と試行錯誤が必要そうです。
- とはいえ、静的サイトを自動Deployできるだけでも非常に便利です。