dependabot/dependabot-coreというdocker imageを使って、GitlabCIでruby gemsのアップデートをし、バージョンアップがあったものを自動的にMR作成できるようになりました。
事前準備
- gitlab access token作成
.gitlab-ci.ymlを調整
ruby gems更新用のJobを追加
dependabot/dependabot-core
コンテナに望ましいバージョンのrubyがない可能性があるので、rbenv
を用いてインストールしておく。
※プロジェクトの配下にruby
のバージョンを記載してある.ruby-version
があるとします。
Jobを追加後の.gitlab-ci.yml
ファイル
.gitlab-ci.yml
dependabot:
image: dependabot/dependabot-core
before_script:
- git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
- git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
- echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
- echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
- source ~/.bash_profile
- rbenv install -v `cat ./.ruby-version` --skip-existing
- rbenv global `cat ./.ruby-version`
- gem install bundler
- bundle install -j $(nproc) --path vendor
- curl -O https://raw.githubusercontent.com/dependabot/dependabot-script/master/generic-update-script.rb
- curl -O https://raw.githubusercontent.com/dependabot/dependabot-script/master/update-script.rb
script:
- bundle exec ruby ./generic-update-script.rb
only:
- schedules
.gitlab-ci.ymlに載っているdependabot
以外のJobにexcept: schedules
を追加
ruby gemsの更新だけなので、rspec/lintとかの実行はいりません
.gitlab-ci.yml
...
brakeman:
stage: audit
tags:
- docker
- gce
except:
- schedules
script:
- bundle exec brakeman -4 -A -w 1 -z
...
ScheduleにJobを登録
動けるかを試してみる
2つのGemバージョナップがあったようで
MRリストを確認
あとは、緑のmerge
ボタンをクリックだけ。