2022/6/8(水)に行われた「自動化大好きエンジニアLT会 - vol.7」での発表資料です。 https://rakus.connpass.com/event/245663/
Gitlab CIでMRを自動生成する 籏野 拓 2022.6.8 @自動化大好きエンジニアLT会 - vol.7
View Slide
● 自己紹介● 自動化したフロー● まとめ本日のお品書き2
自己紹介● 籏野 拓 (Taku Hatano)● ソフトウェアエンジニア@フォルシア株式会社○ 福利厚生系webサイトの検索ページ○ 社内のお役立ちツール開発など● 活動領域○ Next.js/expressでアプリケーション開発○ 最近はk8sでのアプリ構築もやったりしました3
Gitlab CIとは● Gitlabが提供するCI/CDを自動化するための仕組み● GitlabCIが実行する各jobはプロジェクトに紐づいている○ 特定のブランチ更新などをトリガーにジョブを実行4
● いわゆるGitHub Flow○ 開発ブランチを切る○ MR提出○ レビュー完了後マージブランチ戦略5master feature ・MR作成 ・レビュー 毎回作るのが面倒
● 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"
● 設定ファイルの一部を切り出して、リポジトリに登録○ 様々なプロジェクトでincludeしてCIを実行できるようになったGitlab CIの設定の共有7include:# MRを自動生成- project: 'misc/gitlab-ci-template'ref: 'master'file: '/create_mr/template.yml'create_mr:variables:PRIVATE_TOKEN: $GITLAB_BOT_TOKENMR_TEMPLATE_TYPE: defaultTARGET_BRANCH: masterIS_DRAFT: 1OPTIONS: 'remove_source_branch=yes'
● 思った以上に快適● MR作成漏れが防げる● MRのフォーマットを統一しやすい○ テンプレートを用意しても使われなければ意味がない良かった点8
● テスト● deploy● tagの自動付与● 自動マージ● MRのレビュワー自動アサイン● …etcGitlab CIで実現している自動化9
ご清聴ありがとうございました10
EOF