みんな~!どうやってCIに変数を渡してるの?
CIで自動テストをする際にDBなどの接続情報をどうやって渡してますか?
GitLab-CIはDockerコンテナ上で実行されますよね。ビルドツールにGradleを使っているのでDocker LibraryのGradleイメージを使ってCIを実行しています。もちろんローカルでもテストを実行しますので、ローカルでもGitLab-CI上でも同じようにテストをするために、以下のような環境にしています。
graph LR
subgraph GitLab
a["GitLab-CIのシークレット変数"]
b["CIコンテナ上の~/.gradle/gradle.properties"]
end
subgraph PC
c["~/.gradle/gradle.properties"]
end
subgraph Gradleの世界
d("build.gradle")
e["datasource.yml"]
end
a -- .gitlab-ci.yml --> b
b --> d
c --> d
d --> e
シークレット変数はコンテナの環境変数として展開されるので、それをgradle.properties
に吐いて、PC上と同じ環境を装う感じです。
.gitlab-ci.yml
は以下のようになっています。
|
|
試行錯誤の結果なんですが、みなさんどんな感じでやってるんでしょうかね???