Open11

CircleCI の勉強をするー

bufferingsbufferings

これまで雰囲気でちょっと触ってただけだけど、わけあって(?)ちゃんと勉強しようと思ったのだった。というわけで個人的なメモ。

bufferingsbufferings

これよむー。よく分かってないので、勘違いして変なことを言ってるかもしれない

https://circleci.com/docs/ja/2.0/workflows/

依存関係でワークフローを制御するのはやったことあるー

承認待ち

type: approval で承認待ちもできるんだね

注意点は、承認期限が90日であること、だけどワークスペースの保持期間は15日だからワークスペースを使ってる場合は15日以内に承認しないといけないって感じか

承認タイプのワークフローの下にしか作れなくて、名前は何でもいいけど、ジョブ名とかぶらないようにしないといけない

cron

cron 指定をトリガーにすることができる

それを指定した場合、push をトリガーにした実行はされなくなるから、push でも実行したい場合は明示的に定義する必要がある

最大15分遅れる可能性がある。へー。

🤔 どうして15分なんだろう?15分以上は遅れないのかなぁ?

コンテキスト

org で設定できるコンテキストを、ワークフローのステップに適用できる

ブランチ

ワークフローにブランチを指定する場合は、ジョブのところに指定したブランチ制限は無視されるから、ジョブのところのを削除して、ワークフローのところで定義しないといけない

🤔 「ワークフローにブランチを指定する場合は、ジョブのところに指定したブランチ制限は無視される」ってことは、ワークフローにブランチを指定しなかったら、ジョブの方のブランチ制限が有効になるのかなぁ?それともワークフローを宣言している時点でジョブの方は無効なのかなぁ?

ブランチの指定には正規表現が使える

タグ

タグを指定するための設定も別で存在する。こっちも正規表現が使える

ブランチを指定しなかったら全部のブランチに対して実行されるから、タグを指定しただけだとすべてのブランチ+タグで実行される。タグだけに対して実行したい場合は(ブランチに対しては実行したくない場合は)ブランチの除外設定を入れる必要がある

へー。正規表現は Java のを見たらいいのか

ワークスペース

複数のジョブ間でアーティファクトを受け渡すのに使える。追加専用。

🤔 ↓この図はまだよくわかんないな

https://circleci.com/docs/assets/img/docs/workspaces.png

persist_to_workspace で保存して attach_workspace で使う感じなのかな?🤔 詳しくはよくわかんないな。

失敗したジョブの再実行

🤔 再実行は分かるんだけど、ワークスペースはどうなるんだろう?そのジョブだけが再実行されて、後続のジョブは実行されないって感じなのかな?

ふーん。面白かった。

bufferingsbufferings

これ読んだ。環境変数の話。読んだだけで実際に動かして確認したわけじゃないから勘違いあるかも。

https://circleci.com/docs/ja/2.0/env-vars/

注意点として、シークレットを扱うのには、リポジトリの config.yml に書くんじゃなくて、CircleCI のプロジェクトかOrgの環境変数に設定すること。普通のことだとは思うけどよく分かってないときは config.yml に書こうとする人いそうよね。

  • プロジェクトとOrgの環境変数は4文字以上ならCircleCIのログの中ではマスクされる
    • 🤔 見ようと思えばSSHとかでつないで見れるだろうな。ただ、実行ログに出てこないのは良いことだな
    • ただし、CircleCI Serverは未対応
  • 環境変数は書く場所によって優先順位がある
  • config.yml の中では環境変数は使えない。Dockerのパスワード部分だけ例外で許可されてる
    • 🤔 どうしてそこだけ許可されてるんだろう? DockerHub が制限いれたときに対応したんかな?
  • その代わり BASH_ENV にいれておけば環境変数として使える
    • 🤔 BASH_ENV はステップを超えて共有されるってことなのかなぁ?動作確認したい気持ち
  • v2.1 の設定ファイルでは parameters という宣言を使うことでパイプライン内で使える変数を宣言できる
    • 🤔 parameters については別のページがあるみたいなので詳しくはそこでチェックしよっと
  • ジョブやステップに設定として環境変数を差し込むことができる
    • 🤔 これはコンテナを起動するときに差し込むのと同じ感じなのかな
    • 7桁以上の数字は指数表記になっちゃうから文字列にしてねって書いてある。へー。
  • 🤔 複数行のところ、いまいち意味がわかんないなぁ
    • →翻訳が変な感じだった。翻訳しなおしたら意味分かった。

Alpine のとこ意味が分からんと思ったら翻訳間違えてるなぁ。PRだすかな。
→出した。