[アップデート] Amazon CodeCatalyst のワークフローでスケジュールに基づくトリガータイプが設定出来るようになりました

2023.10.18

いわさです。

Amazon CodeCatalyst ではワークフローを使って、リポジトリコードのビルドやデプロイを自動化することが出来ます。
これまではワークフローをトリガーするイベントにリモートリポジトリへのプッシュか、あるいはプルリクエストの送信が必要でした。

今朝のアップデートで Cron 式を使ったスケジュールに基づいてトリガーすることが出来るようになりました。

これにより、これまでの基本的な使い方に加えてナイトリービルドのような一定間隔で自動ビルドとデプロイを繰り返すような仕組みも CodeCatalyst で実現出来るようになります。

なお、Amazon CodeCatalyst は、本日時点では AWS CLI での操作もかなり限定的でワークフローを操作することは出来ません。
そのためこれまではスケジュールされたビルド・デプロイを行うためには、コードプッシュやプルリクエスト作成をスケジュール実行するなどが必要でなかなか難しい状況でした。

イベントトリガーでスケジュールを選択

アップデート後はワークフローのトリガータイプに新たに「Schedule」が追加されています。

トリガータイプ「Schedule」では、次のように Cron 式でスケジュールを指定する形となっています。

CodeCatalyst の Cron 式では、以下の 6 つのフィールドがスペース区切りで設定する形式となっています。 - minutes - hours - days-of-month - month - days-of-week - year

それぞれのフィールドの仕様や Cron 式の例については次の公式ドキュメントも参考にしてください。

なお、ビジュアルエディターの場合はトリガータイプで Schedule を選択しますが、ワークフロー定義ファイル(YAML)では実際には次のように定義されてます。

Expression を省略した場合は「0 * * * ? *」が設定されます。
また、後述しますがブランチもオプションで指定出来て、実行対象のブランチをフィルタリングすることが可能です。

スケジュールされたワークフローを実行してみる

スケジュールされたワークフローは作成直後に初回実行がすぐに開始されたりはしません。
スケジュールされた時間に達するまでは次のように開始されない状態となります。

また、ワークフローファイルの実地あはリポジトリに格納された YAML ファイルですが、対象ブランチに対してワークフローのトリガーで指定したブランチが一致していない場合は次のように inactive なワークフローとして扱われて実行されません。

上記の場合は main ブランチに対してはスケジュール実行がされない形となっているので、このブランチでワークフローを実行したい場合は別途プッシュトリガーやプルリクエストトリガーのワークフロートリガーを定義する必要があります。

スケジュールされた時間に到達すると即開始

ワーカーの空き状況などにも依存するのかなぁと思ってはいるのですが、私が確認した際にはスケジュールされた時間に達して数秒以内に即開始されていました。

複数ブランチの指定も可能

対象ブランチは複数指定が可能です。
次のように個別にブランチを指定するか、あるいはブランチパターンを指定することでパターンマッチさせることも出来ます。(feature/* ブランチを対象にする、など)

前述しましたが、ワークフローの実体はリポジトリに格納された YAML ファイルですので CodeCatalyst コンソールから編集する際は注意してください。
main ブランチの定義ファイルを編集していたけど派生ブランチには反映されておらず、次のようにワークフローが期待したとおりにアクティブにならないことがありました。

ワークフローを編集する際には定義ファイルが該当ブランチかどうか確認するようにしましょう。

ブランチごとにワークフローがアクティブ化されていれば次のようにスケジュールされたワークフローが動作します。

さいごに

本日は Amazon CodeCatalyst のワークフローでスケジュールに基づくトリガータイプが設定出来るようになったので使ってみました。

ある程度の規模の開発チームやプロダクトを継続開発していると、ワークフローのスケジュール実行はほぼ必須だと思います。
「今まで出来なかったのか」というのが実は第一印象だったのですが、CodeCatalyst は今のところ継続的に機能追加が続いていて良い感じです。