AWS CodeBuild 連携
  • 08 Sep 2022
  • 1 分で読めます
  • 投稿者
  • ダーク
    ライト

AWS CodeBuild 連携

  • ダーク
    ライト

Article Summary

Autify ではAWS CodeBuild project から簡単にテストプランやシナリオを実行できる公式の手法を提供しています。

はじめてみよう

このドキュメントでは、皆さんのCodeBuild project でどのようにAWS CodeBuild 連携を利用するかを順に説明していきます。

前提条件

まず、すでにCodeBuild project を使ってステージングやプロダクション等へのソフトウェアのデプロイを行なっているものとします。そのデプロイcommand のすぐ後にAutify のテストを実行するcommand を追加することで、新しくデプロイされたソフトウェアがエンドツーエンドのユーザ体験を損ねていないことを確認できるようにします。

次に、Autify for Web でテストプランかテストシナリオを作成する必要があります。テストシナリオは、そのCodeBuild project でソフトウェアがデプロイされるウェブサイトに対してレコーディングすることになります。テストプランまたはシナリオのURL (例: https://app.autify.com/projects/00/scenarios/000) をメモしておいてください、後ほど利用します。

さらに、パーソナルアクセストークンを生成する必要があります。後ほどAWS Systems Manager Parameter Store かAWS Secrets Manager に保存するために、生成されたトークンはどこかにメモしておいて下さい。

注: パーソナルアクセストークンは1人のユーザに紐づいてしまうので、CI/CD 連携のために組織にマシンユーザを作って、そのパーソナルアクセストークンを使うことをお勧めします。

パーソナルアクセストークンをAWS Systems Manager Parameter Store かAWS Secrets Manager に保存

上で生成したパーソナルアクセストークンをAWS の同じリージョン にあるAWS Systems Manager Parameter Store かAWS Secrets Manager に保存します。

Parameter Store については、CodeBuild コンソール、Parameter Store コンソール等から新しいparameter を作成できます。Parameter の名前は任意ですが、ここでは/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN としたと仮定します。安全に保存するためにSecureString タイプにして下さい。AWS による説明も参考にして下さい。

Secrets Manager については、Secret Manager コンソール等から新しいsecret を作成できます。Secret の名前は任意ですが、ここでは/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN としたと仮定します。Plaintext タイプを使います。AWS による説明も参考にして下さい。

この値は絶対にbuildspec.yml に直接保存してはいけません。平文で読むことが可能になってしまいます。

Autify for Web を実行するCodeBuild commands を追加

それでは、お手持ちのCodeBuild project か新しいproject に新しいcommand を追加しましょう。お手持ちのbuildspec.yml を開き、以下の例を参考にして編集してください。URL の値(https://app.autify.com/projects/00/scenarios/000)は上でメモしたURL になります。

ここではLinux 環境イメージを利用していると想定しています。aws/codebuild/amazonlinux2-aarch64-* が最も安いので一番良いと思います。

環境変数はコンソールの"編集" > "環境" > "追加設定" またはUpdateProject API でも設定することができます。


シンプルにテストを開始してstep を終了 (テストの完了は待たない):

phases:
  install:
    commands:
      - curl https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/install-standalone.sh | sh
  build:
    commands:
      - autify web test run https://app.autify.com/projects/00/scenarios/000
env:
  parameter-store:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"
  # OR
  secrets-manager:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"

テストを開始して、それが完了するかタイムアウトするまで待つ:

phases:
  install:
    commands:
      - curl https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/install-standalone.sh | sh
  build:
    commands:
      - autify web test run https://app.autify.com/projects/00/scenarios/000 --wait --timeout 300
env:
  parameter-store:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"
  # OR
  secrets-manager:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"

警告: この設定はテスト完了を待っている間もCodeBuild build minites を消費します。タイムアウトを延長するときは注意してください。

--url-replacements を使ってテストプラン又はシナリオを別のURL に対して開始する:

phases:
  install:
    commands:
      - curl https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/install-standalone.sh | sh
  build:
    commands:
      - autify web test run https://app.autify.com/projects/00/scenarios/000 --url-replacements http://example.com=http://example.net
env:
  parameter-store:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"
  # OR
  secrets-manager:
    AUTIFY_WEB_ACCESS_TOKEN: "/CodeBuild/AUTIFY_WEB_ACCESS_TOKEN"

--url-replacements はステージングのウェブサイトに対してプロダクションのウェブサイトで記録したテストシナリオを実行したい時などに有効です。

まとめ

Autify のAWS CodeBuild 連携を使うことで、デプロイ後にテストプランやシナリオの実行を自動化できるので、無駄な時間を使うことなくリグレッションをすぐに検知して適切な行動を取ることができるようになります。


この記事は役に立ちましたか?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.