運用でDokkuを使っているのですが、GitLab-CIでdeployの自動化ができないか悩んでいました。ググるとやり方はもちろんあるのですが、ssh-keyの転送とか面倒くさいなーと思っていたらなかなか手がつけられていませんでした。
調べたらそのあたりをDocker Image化したものがあったので使ってみると簡単に実現できたのでメモしておきます。
設定方法
GitLab設定->CI/CD
-
Variables
キー:SSH_PRIVATE_KEY
値:←Deploy用のPrivateKeyをコピペ -
Runner
「共有Runnerを有効化」
or Runnerを指定
CIコード
stages:
- deploy
variables:
APP_NAME: demo
# https://github.com/IlyaSemenov/gitlab-ci-git-push
# set $SSH_PRIVATE_KEY to GitLab
deploy-prod:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: production
url: http://$APP_NAME.dokku.me/
only:
- master
script:
- git-push ssh://dokku@dokku.me:22/$APP_NAME
※APP_NAMEとdokku.meは実際に使うものに変更が必要です。
developブランチをテストリリースする方法
以下のように、dokkuでdeploy-branchを設定します。
dokku git:set myapp deploy-branch develop
参考:
http://dokku.viewdocs.io/dokku/deployment/methods/git/#changing-the-deploy-branch
CIコード
stages:
- deploy
variables:
APP_NAME: demo
APP_NAME_DEV: demo-dev
# https://github.com/IlyaSemenov/gitlab-ci-git-push
# set $SSH_PRIVATE_KEY to GitLab
deploy-staging:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: production
url: http://$APP_NAME_DEV.dokku.me/
only:
- develop
script:
- git-push ssh://dokku@dokku.me:22/$APP_NAME_DEV
deploy-prod:
image: ilyasemenov/gitlab-ci-git-push
stage: deploy
environment:
name: production
url: http://$APP_NAME.dokku.me/
only:
- master
script:
- git-push ssh://dokku@dokku.me:22/$APP_NAME
※APP_NAME, APP_NAME_DEVとdokku.meは実際に使うものに変更が必要です。
メモ
Dokku以外にもHerokuやDeis等、Gitレポジトリーでデプロイするような物に共通で使えるようです。
やっている事はPrivate Keyの転送とかググれば出てくる手順なのですが、一発でできてSSH_PRIVATE_KEYの設定だけで良いので便利です。