Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gitlab CIでMRを自動生成する

Gitlab CIでMRを自動生成する

2022/6/8(水)に行われた「自動化大好きエンジニアLT会 - vol.7」での発表資料です。
https://rakus.connpass.com/event/245663/

1a2f29252240936c0ac4db4edab36d41?s=128

forcia_dev_pr

June 15, 2022
Tweet

More Decks by forcia_dev_pr

Other Decks in Programming

Transcript

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


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

  3. 自己紹介 • 籏野 拓 (Taku Hatano) • ソフトウェアエンジニア@フォルシア株式会社 ◦ 福利厚生系webサイトの検索ページ

    ◦ 社内のお役立ちツール開発など • 活動領域 ◦ Next.js/expressでアプリケーション開発 ◦ 最近はk8sでのアプリ構築もやったりしました 3
  4. Gitlab CIとは • Gitlabが提供するCI/CDを自動化するための仕組み • GitlabCIが実行する各jobはプロジェクトに紐づいている ◦ 特定のブランチ更新などをトリガーにジョブを実行 4

  5. • いわゆるGitHub Flow ◦ 開発ブランチを切る ◦ MR提出 ◦ レビュー完了後マージ ブランチ戦略

    5 master
 feature
 ・MR作成
 ・レビュー
 毎回作るのが 面倒
  6. • 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"
  7. • 設定ファイルの一部を切り出して、リポジトリに登録 ◦ 様々なプロジェクトで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'
  8. • 思った以上に快適 • MR作成漏れが防げる • MRのフォーマットを統一しやすい ◦ テンプレートを用意しても使われなければ意味がない 良かった点 8

  9. • テスト • deploy • tagの自動付与 • 自動マージ • MRのレビュワー自動アサイン

    • …etc Gitlab CIで実現している自動化 9
  10. ご清聴ありがとうございました 10

  11. EOF