CircleCIで環境変数の登録を自動化するプログラムを書いたので、作成した内容を書いていきます。
課題
CircleCIの環境変数の設定の際にブラウザからポチポチして登録していたのですが、単純作業で登録が面倒なのと、誤操作により設定ミスが発生することがありました。
CircleCIの環境変数について
まず環境変数の設定方法のバリエーションについてです。
大きくは、以下の6つのレベルで環境変数を設定することができます。今回の対象は、Project Environment Variablesの設定に関しての記事になります。
登録方法は、Build > Project > Settings で設定します。(もしこれ以外の登録方法をご存知の方がいらっしゃいましたら教えていただきたいです。)
- Global Environment Variables
- Project Environment Variables
- Job Environment Variables
- Container Environment Variables
- Step Environment Variables
- Bash Environment Variables
解決策
今回はGo言語のagoutiというライブラリとChromeDriverを使用して、ブラウザ操作を自動化します。
https://agouti.org/
https://chromedriver.chromium.org/downloads
全体の処理のフロー
① CircleCIのGithubログイン認証を行う
https://circleci.com/login/
② 環境変数設定ページに遷移
③ Add Environment Variableをクリックし、入力フォームを開く
④ 入力フォームにNameとValueを入力する。
⑤ 登録完了
必要な設定
①ChromeDriverをインストールする。
$ brew install chromedriver
②constに設定されている各変数に任意の値を入力してください。
- GithubUserName ... あなたのGithubのユーザー名を入力してください。
- GithubPassWord ... あなたのGithubのパスワードをを入力してください。
- Organization ... 個人開発の場合はGithubのユーザー名、組織開発の場合は組織名を入力してください。
- Repository ... 対象のリポジトリ名を入力してください。
const (
CircleCIURL = "https://circleci.com/login/"
GithubUserName = "あなたのGithubのユーザー名"
GithubPassWord = "あなたのGithubのパスワード"
Organization = "組織名"
Repository = "リポジトリ名"
)
③登録する環境変数の準備
下記のmapでkeyに環境変数名、valueに登録する値を設定してください。
func setVariables(page *agouti.Page) error {
vars := map[string]string{
"HOGE": "hoge",
"PUGE": "puge",
"FUGA": "fuga",
}
...
}
全体のソースコードはGithubに上げてありますので、下記のURLからご確認ください。
https://github.com/kozy0810/agouti-circleci
ローカルで実行
上記の設定が完了しましたら、ローカルで下記のコマンドを実行してください。
$ go run main.go
まとめ
Go言語でCircleCIの環境変数の登録を自動化する方法について記述しました。
ブラウザでポチポチして登録するより、時間やストレスを大きく削減できるかと思います。
使用する際には、機密情報になると思いますのでセキュリティには十分ご注意ください。
今回初めてQiitaの記事を書いてみました。
もし参考になりましたらLGTMをいただけると嬉しいです。