2020-01-01 から 2020-03-31 にかけて仕事でやったことを書きます。 勿論全部は書けないのでいくつかピックアップして書きます。
- Monorepo
- 更新検知のシェルスクリプトを Go でリプレース
- CircleCI のコードリストアの改善(コスト削減・高速化)
- リポジトリが非常にでかいので全部 checkout, restore すると時間がかかる
- Job ごとに必要最小限のコードだけをリストアすることで高速化
- サーバの OS upgrade
- Ansible
- CI の更新検知で、 PR の label で対象を指定できるようにした(コードに変更がなくてもテストが実行できるようにした)
- たまにテストしたいときはある
- それまではてきとうにコードを修正しないとテストが実行されなかったが、 PR の label で対象の playbook を指定できるようにした
- key=value 形式を YAML に変換
- https://www.ansible.com/blog/ansible-best-practices-essentials
- Use Native YAML Syntax
- CI の更新検知で、 PR の label で対象を指定できるようにした(コードに変更がなくてもテストが実行できるようにした)
- .circleci/config.yml のリファクタリング
- job を parameterize して共通化したり
- parameterize された command を使って共通化したり
- コード量の大幅な削減
- Terraform
- CircleCI の環境変数を設定することで、 master での CI を一時的に禁止できるようにした
- State を弄ってたりするときに予期せぬ apply が実行されないようにするため
- master branch の CI が終わるまで wait
- master の CI が走っている間に PR の CI でまだ apply されていないリソースが差分として出るのを防ぐ
- shfmt, shellcheck の導入
- CI/CD でシェルスクリプトを書いているので、それらを lint
- State Locking の導入
- Terraform Cloud の検証
- 結果、見送り
- すでに CI/CD pipeline を構築している自分たちにとっては、わざわざ移行するメリットが薄いと判断
- CircleCI の環境変数を設定することで、 master での CI を一時的に禁止できるようにした
- MongoDB upgrade
- Jenkins Alternative の検証
- RunDeck
- Argo Workflows
- 結局、ローカルで検証した程度