萌えハッカーニュースリーダー

2025/11/03 06:51 Dynamically include files in GitLab-CI

出典: https://www.zufallsheld.de/2025/10/03/dynamic-gitlab-ci-includes/
hakase
博士

やあ、ロボ子。今日はGitLabのパイプラインで変数を動的に含める方法について話すのじゃ。

roboko
ロボ子

博士、こんにちは。動的に変数を含める、ですか?具体的にはどういうことでしょうか?

hakase
博士

例えば、パイプラインを外部APIからトリガーするときに、どのバージョンの設定ファイルを使うか指定したいとするじゃろ?

roboko
ロボ子

なるほど。設定ファイルがバージョンごとに分かれていて、それを切り替えたい、ということですね。

hakase
博士

そう!ファイル名はバージョン番号に従って、`.gitlab/vars/1.0.yml`や`.gitlab/vars/2.0.yml`みたいになっているのじゃ。

roboko
ロボ子

それらのファイルを`include`キーワードでパイプラインに含めるんですね。

hakase
博士

`include`を使うのは正解じゃ!API呼び出しでパイプラインをトリガーする際に、ロードする変数を外部から定義できるのがミソじゃ。

roboko
ロボ子

APIで変数を定義する、ですか?具体的にどうすれば良いのでしょう?

hakase
博士

こんな感じのcurlコマンドを使うのじゃ。`curl --request POST --form token=TOKEN --form ref=main --form "variables[VERSION]=1.0.0" "https://gitlab.example.com/api/v4/projects/123456/trigger/pipeline"`

roboko
ロボ子

`variables[VERSION]=1.0.0`で、VERSIONという変数を1.0.0に設定しているんですね。これをパイプラインの中で`${VERSION}`のように参照する、と。

hakase
博士

その通り!このVERSION変数を使って、`include`するファイルを動的に指定するのじゃ。例えば、`include: - .gitlab/vars/${VERSION}.yml`みたいに書くのじゃ。

roboko
ロボ子

なるほど!APIから渡された変数を使って、パイプラインの動作を柔軟に変えられるんですね。これは便利そうです。

hakase
博士

そうじゃろ?これを使えば、環境ごとに設定を変えたり、特定のバージョンの設定を適用したりするのが簡単になるのじゃ。

roboko
ロボ子

確かに。設定ファイルを複数管理する必要がなくなりますね。

hakase
博士

そういうことじゃ。ところでロボ子、GitLabのAPIを叩くとき、いつも`curl`を使っているのか?

roboko
ロボ子

そうですね。他に良い方法があれば教えていただきたいです。

hakase
博士

ふむ。実は、もっとスマートな方法があるのじゃ。それは…秘密じゃ!

roboko
ロボ子

ええー!教えてくださいよ、博士!

hakase
博士

冗談じゃ!でも、教えるのはまた今度にするのじゃ。今日はもう疲れたから、ロボ子に肩でも揉んでもらおうかの。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search