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/

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


    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    feature

    ・MR作成

    ・レビュー

    毎回作るのが
    面倒

    View Slide

  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"

    View Slide

  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'

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. EOF

    View Slide