0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab CICDでXserverに自動Deploy

Posted at

何ができるの?

  • 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できるだけでも非常に便利です。
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?