comilablog

GitLab.com + GitLab-CI + Shared runners + gulp + rsyncで自動デプロイを試みる

この辺の知識全くなかったので苦戦したけどなんとかできました。
わたしがgulp使ってたのでタイトルにgulpって書いたけど、gruntでもwebpackでもなんでも大丈夫です。

事前準備

  1. デプロイ先のサーバで公開鍵を作成してauthorized_keysに登録しておく
  2. Project Settings -> Features -> Buildsにチェックを入れる(多分デフォルトで入っているはず)
  3. Variablesに以下を登録
  4. SSH_PRIVATE_KEY: 秘密鍵
  5. SERVER_HOST: ホスト
  6. SERVER_USER: 接続ユーザ
  7. SERVER_DEST: デプロイ先のパス

.gitlab-ci.yml

.gitlab-ci.ymlというファイルをリポジトリ直下に以下の内容で作成します。

image: node:latest
cache:
paths:
- node_modules/
before_script:
- apt-get update -y
- apt-get install rsync openssh-client -y
- npm install
stages:
- deploy
job_deploy:
stage: deploy
environment: production
only:
- master
script:
- npm run build
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- rsync -avz --delete ./public "${SERVER_USER}@${SERVER_HOST}:${SERVER_DEST}"
artifacts:
paths:
- public
view raw .gitlab-ci.yml hosted with ❤ by GitHub

ファイルをpushすれば自動でデプロイが行われるはず。

参考サイト