Slide 1

Slide 1 text

Gitlab CIでMRを自動生成する
 籏野 拓
 2022.6.8 @自動化大好きエンジニアLT会 - vol.7


Slide 2

Slide 2 text

● 自己紹介 ● 自動化したフロー ● まとめ 本日のお品書き 2

Slide 3

Slide 3 text

自己紹介 ● 籏野 拓 (Taku Hatano) ● ソフトウェアエンジニア@フォルシア株式会社 ○ 福利厚生系webサイトの検索ページ ○ 社内のお役立ちツール開発など ● 活動領域 ○ Next.js/expressでアプリケーション開発 ○ 最近はk8sでのアプリ構築もやったりしました 3

Slide 4

Slide 4 text

Gitlab CIとは ● Gitlabが提供するCI/CDを自動化するための仕組み ● GitlabCIが実行する各jobはプロジェクトに紐づいている ○ 特定のブランチ更新などをトリガーにジョブを実行 4

Slide 5

Slide 5 text

● いわゆるGitHub Flow ○ 開発ブランチを切る ○ MR提出 ○ レビュー完了後マージ ブランチ戦略 5 master
 feature
 ・MR作成
 ・レビュー
 毎回作るのが 面倒

Slide 6

Slide 6 text

● Gitlab APIを利用 ○ MR作成済みかをチェック→なければMRを作成 ● GitlabCIが提供する環境変数/ユーザー設定の環境変数を利用 ○ 各プロジェクトで同じコードを使いまわせる GitLabCIの設定 - MR生成 6 【Gitlab CIが提供する環境変数の一例】 
 CI_BUILD_REF_NAME: pushしたブランチ名 
 CI_PROJECT_ID: プロジェクトID 
 参考 【MR作成のリクエスト】 curl -X POST -H "Private-Token: ${PRIVATE_TOKEN}" \ -d "title=${TITLE}&source_branch=${CI_BUILD_REF_NAME}&target_branch=${TARGET_BRANCH} &description=${DESCRIPTION}&${OPTIONS}" \ "${GITLAB_DOMAIN}/api/v4/projects/${CI_PROJECT_ID}/merge_requests"

Slide 7

Slide 7 text

● 設定ファイルの一部を切り出して、リポジトリに登録 ○ 様々なプロジェクトでincludeしてCIを実行できるようになった Gitlab CIの設定の共有 7 include: # MRを自動生成 - project: 'misc/gitlab-ci-template' ref: 'master' file: '/create_mr/template.yml' create_mr: variables: PRIVATE_TOKEN: $GITLAB_BOT_TOKEN MR_TEMPLATE_TYPE: default TARGET_BRANCH: master IS_DRAFT: 1 OPTIONS: 'remove_source_branch=yes'

Slide 8

Slide 8 text

● 思った以上に快適 ● MR作成漏れが防げる ● MRのフォーマットを統一しやすい ○ テンプレートを用意しても使われなければ意味がない 良かった点 8

Slide 9

Slide 9 text

● テスト ● deploy ● tagの自動付与 ● 自動マージ ● MRのレビュワー自動アサイン ● …etc Gitlab CIで実現している自動化 9

Slide 10

Slide 10 text

ご清聴ありがとうございました 10

Slide 11

Slide 11 text

EOF