2021年4月19日月曜日

Gitlab CI から branch を作成する方法

Gitlab CI から branch を作成する方法

概要

Gitlab CI から特定のリポジトリに対して branch を作成する方法を紹介します
ポイントは認証部分かなと思います

環境

  • Gitlab 13.9.5-ee
  • Ubuntu 18.04
  • docker 19.03.6

runner の準備

今回はコンテナで起動しています
gitlab-runner のコンテナでの起動方法はこちらで紹介しています

CI の変数設定

git にアクセスするための認証情報を Gitlab の CI の変数設定に登録します
リポジトリの Settings -> CI/CD -> Variables から登録します
今回は git に対してパスワード認証するので登録していますが鍵認証を使う場合は少しやり方が異なるので注意してください

  • GIT_USER・・・ git push するユーザ
  • GIT_PASSWORD・・・ git push するユーザのパスワード

Gitlab の場合トークン認証を使うこともできます
その場合は GIT_USER には oauth2 というユーザ名を設定しましょう

.gitlab-ci.yml の作成

本題の .gitlab-ci.yml を作成します
使用するイメージは git コマンドが使える必要があります
今回は alpine/git を使っていますが git コマンドが使えれば何でも OK です

stages:
  - create_branch

create_branch:
  image:
    name: alpine/git:latest
    entrypoint: [""]
  stage: create_branch
  before_script:
    - "git config --global user.name root"
    - "git config --global user.email root@mail.domain"
    - "git config --global credential.helper store"
    - "echo https://${GIT_USER}:${GIT_PASSWORD}@gitlab.example.com > ~/.git-credentials"
  script:
    - "git clone https://gitlab.example.com/root/test.git"
    - "cd test"
    - "export LATEST_SHA=$(git show -s --format=%h)"
    - "git checkout -b test_from_${LATEST_SHA}"
    - "git push -u origin test_from_${LATEST_SHA}"

説明

git の認証情報は credential.helper を使って事前に登録しておきます
この方法でなくても良いですがファイルに認証情報を書けば勝手にしようしてくれるのでこのようにしています

ブランチを作成するリポジトリは CI を実行するリポジトリ位ではなく別のリポジトリを clone して持ってきています
ブランチを作成するリポジトリが CI を実行しているリポジトリなのであれば clone の必要はありません
また clone するので clone 先のリポジトリに clone する権限がある必要があります

ブランチ名は何でも OK ですが今回は変数として最新のコミットハッシュを入れています

動作確認

push して CI を実行してみましょう
ブランチが作成されていれば OK です

最後に

次回は作成した branch を元に Gitlab CI から MergeRequest を作成してみます

0 件のコメント:

コメントを投稿