LoginSignup
0
1

More than 3 years have passed since last update.

GitLab CIでDokkuに自動deployする

Last updated at Posted at 2019-11-27

運用でDokkuを使っているのですが、GitLab-CIでdeployの自動化ができないか悩んでいました。ググるとやり方はもちろんあるのですが、ssh-keyの転送とか面倒くさいなーと思っていたらなかなか手がつけられていませんでした。

調べたらそのあたりをDocker Image化したものがあったので使ってみると簡単に実現できたのでメモしておきます。

設定方法

GitLab設定->CI/CD

  • Variables
    キー:SSH_PRIVATE_KEY
     値:←Deploy用のPrivateKeyをコピペ

  • Runner
    「共有Runnerを有効化」
    or Runnerを指定

CIコード

.gitlab-ci.yml
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コード

.gitlab-ci.yml
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の設定だけで良いので便利です。

0
1
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
1