• 153 Words

    2021-08 やったこと

    仕事 AWS IAM User を削除する際に force_destroy が true になっているか Conftest でテスト Terraform の State 分割 Terraform Modules を別リポジトリで管理して versioning git-secrets を secretlint に移行 git-secrets がメンテされてなくて、既知バグが放置されているから CI で terraform fmt によるフォーマットの自動化 WIP: AWS WAF の COUNT, BLOCK ログを Firehose で抽出 WIP: AWS CodeBuild で Provisioning Error が発生したら自動で Retry WIP: AWS CodeBuild のための GitHub App の開発 WIP: AWS SSO について調査 OSS Contribution Renovate の GitHub Actions のドキュメントの修正をしました。 ドキュメント中に書かれたバージョンを Renovate で自動 update するようにしました。
    • 636 Words

    aqua - CLI ツールのバージョン管理

    2021-09-04 追記: aqua v0.1.0 から v0.5.0 での変更点 aqua という OSS を開発しているので紹介します。 記事の内容は aqua v0.1.0 に基づきます。将来的に仕様が変わる可能性があります。 aqua とは aqua は CLI ツールのバージョン管理のための CLI です。 aqua で管理する主な対象は GitHub Release で公開されているツールです。 YAML の設定ファイルを書いてコマンドを実行すると指定したツールをインストールすることができます。 例えば以下のような設定ファイルを書き、 aqua install というコマンドを実行すると jq, conftest などが GitHub Release からダウンロードされ、インストールされます。 packages: - name: jq registry: inline version: jq-1.6 - name: conftest registry: inline version: v0.27.0 inline_registry: - name: jq type: github_release repo_owner: stedolan repo_name: jq asset: 'jq-{{if eq .OS "darwin"}}osx-amd64{{else}}{{if eq .
    • 483 Words

    AWS CodeBuild を実行する Github App を作る

    GitHub Repository の CI に CodeBuild を使う場合、 CodeBuild の Webhook integration (以下 CodeBuild GitHub integration と呼ぶことにします) を使うのが一番自然でしょう。 基本的なユースケースならこれでよいのですが、 GitHub App を活用することでより高度な CI を実現することができます。 解決したい課題 Batch Build の課題 起動・終了が遅い 全 build が成功した Batch Build を Retry できない Web UI がわかりにくい 余計な build が起動する build 単体を Retry できない build ごとに条件設定とかできない buildspec を動的に生成できない CodeBuild GitHub integration の課題 Build Project ごとに Repository Webhook が 1 つ作られる webhook 1 repository あたり 20 個までしか作れない (これを裏付ける客観的なソースはないですが) webhook の数が増えると build の動作が不安定になるのを観測しています Filter の条件が限られている(例えば PR label で filter とかできない) 複数の build を実行できない(Batch Build も 1 つとみなした場合の話) CodeBuild の課題 Retry した場合 webhook で起動したときの環境変数が設定されない GitHub App Amazon API Gateway と Lambda を使って GitHub App を構築します。 Lambda で webhook を受け取り、 AWS SDK を使って build を実行します。