はじめに
同じEnv parameterを異なるrepositoryに入れたい!という要望が来ました。このweb_backend とweb_frontendはデプロイ先サーバが同じでもディレクトリが異なるので片方の.envにアクセスして読み込むことはできない、という関係性です。
## web_backend repository
vim .env
ENV = development
CLIENT_ID = "test%develop898"
## web_frontend repository
vim .env
ENV = development
CLIENT_ID = "test%develop898"
また、2つのrepositoryの.envファイルに同じパラメータを入れると管理が2重になって面倒...ということでJenkinsで管理しちゃおう作戦。その中でJenkinsのenvパラメータを外部groovyから読む方法を試したので書いていきます。
今回のenv parameterはユーザに見えてもOKな値とします。
開発
Jenkinsからアクセスできる場所にgroovy fileを作ります。今回は例えばdev.groovyを作り、中にenvとして設定したいパラメータを書いていきます。
vim env/dev.groovy
env.ENV="development"
env.CLIENT_ID="test%develop898"
...etc.
あとはJenkinsのscriptの中でload($groovy_file)をするだけです。
script {
$groovy_file_path="/path/to/env/env-dev.groovy"
load "${groovy_file_path}"
echo "${env.ENV}"
ehco "${env.CLIENT_ID}"
}
これでパラメータを表示できたかと思います🥳
簡単!
おわりに
私たちのpipelineでは実際env parameterを使うのはrakeタスクなので、ここからrakeタスクに渡してあげる必要があります。例えば↓
やっぱりenv parameterが増減した時に面倒.... rakeタスクと、タスクを呼んでいるすべてのJenkins scriptの更新が必要ですね。管理が面倒なので簡単にしたいという目的と離れちゃうので、私は今回は使わないことにしました。
セキュリティ的に見せてはいけないパラメータならJenkinsのCredentialに登録すると良いかもですね。
参考になれば幸いです🍎