みんな~!どうやって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は以下のようになっています。
|  |  | 
試行錯誤の結果なんですが、みなさんどんな感じでやってるんでしょうかね???