学習コンテンツ/STARPASS の成果物テストを管理・実行するレポジトリです。
以下のコマンドでテストを開始します。
bash start.sh
実行には以下の環境変数が必要です。
PROJECT_ID
SUBMITTER_PAT
SUBMISSION_REPO_URL
IS_DEV
テストは codebuild という aws のマシン上にある Linux 環境で行います。
以下は概要図です。 このリポジトリの役目はオレンジ色の部分です。
要点 💁
このリポジトリが行うことは以下です。
- 環境変数からテストを行う project を判定する。
- 提出物のリポジトリをクローンする。
- 該当テストのソースコードが入ったリポジトリをクローンする。
- テストを実行する。
- テストのソースコードが入ったリポジトリの用意
start.sh
内に管理するテストケースの用意scripts
ディレクトリ内にテストスクリプトを用意- docker またはローカル環境で実行確認
- プルリク
- デバッグ用の環境変数について情報を入力
例: 学習コンテンツAVAX-AssetTokenization
の場合 💁
現状こちらのリポジトリに関しては, 以下のような考えです。
-
STARPASS のテストの場合: 提出者の実力を検証することが目的のため, 不正を防止するためにテスト内容は private なリポジトリで用意。
-
学習コンテンツのテストの場合: 学習コンテンツの完成形リポジトリを使う(この例だとこちら)。 厳密なテストというよりは挙動確認が目的のため, コードの流用性を優先して public なリポジトリも許容する。
SHIFTBASE_PAT
にアクセス権を追加してください。SHIFTBASE_PAT
についてはデバッグ用の notion ページを参照してください。
start.sh
内に以下のコードと同様のテストケースが羅列されている箇所があります。
そこに新しいテストケースを追加します。
"503" )
TEST_SOURCE_REPO_URL=https://github.com/unchain-tech/AVAX-Asset-Tokenization.git
SCRIPT=avax_asset_tokenization.sh
IS_STARTER_PRESENT="no"
;;
503
: project idTEST_SOURCE_REPO_URL
: テストのソースコードが入ったリポジトリ URL(https)。SCRIPT
: 実行するスクリプトのファイル名。ファイル自体は次のステップで作成します。IS_STARTER_PRESENT
: スタータープロジェクトの有無。コンテンツにスタータープロジェクトがある場合は文字列"yes"
を、ない場合は"no"
を設定します。
scripts
ディレクトリ内に先ほど決めた名前でファイルを作成します。
スクリプト内に何を実行するのかを記述します。
このスクリプト実行時には既に 2 つのリポジトリがクローンされていて, スクリプト内では以下の環境変数によってそれぞれのリポジトリにアクセスできるので利用してください。
PATH_TO_SUBMISSION_REPO
: 提出されたレポジトリへのパスPATH_TO_TEST_SOURCE_REPO
: オリジナルのテストコードが入ったリポジトリへのパス
npm
で検索するとインストールしている箇所があるので, npm
は使用できます。
rust
はないので, rust
はスクリプト内でインストールする必要があります。
codebuild の実行環境は以下の手順で割り出しました。
- 過去のビルド記録に
aws/codebuild/standard:6.0
という docker image の使用記載があった。- こちらから該当する docker image のソースコードリンクを取得。
docker
codebuild で使用されている docker image をローカルでビルドするのは 1 時間以上かかったので断念しました。
もし実行される場合はこちらの README を参照して下さい。
※ m1 mac の場合, docker build --platform linux/amd64 -t aws/codebuild/standard:6.0 .
でビルドを実行する必要があります。
ローカル
Linux または macOS など, bash スクリプトが実行できれば, ローカルでもある程度動作確認ができると思います。
スクリプトを実行する前に以下の環境変数をセットする必要があります。
# テストをするプロジェクトIDを指します。
export PROJECT_ID=503
# 本番では, 提出されたリポジトリのURLを指します。
# デバッグ時は, TEST_SOURCE_REPO_URLを提出物として設定してテストの挙動を確かめます。
export SUBMISSION_REPO_URL=https://github.com/unchain-tech/AVAX-Asset-Tokenization.git
# 本番では, 提出者のリポジトリをクローンする際に使用するアクセストークンを指します。
# デバッグ時は, 先ほど指定したSUBMISSION_REPO_URLがpublicな場合は関係ないので以下のトークン(dummy)をそのまま設定してください。privateの場合は適切なアクセストークンを設定してください。
export SUBMITTER_PAT="このリンク先にあるtokenを貼り付けてください: https://www.notion.so/unchain-shiftbase/PAT-09c4fb73059f43d39fc677d2527f293c#5464e8bb2f0d4c8f99ac6983593a5db7"
# 本番では, AWSのパラメータストアという場所に保存されている, privateリポジトリのクローンに必要なトークン。
# デバッグ時は, パラメータストアとは連携していないので, 以下のリンク先にあるtokenという欄にあるものをここで設定してください。
export SHIFTBASE_PAT="このリンク先にあるtokenを貼り付けてください: https://www.notion.so/unchain-shiftbase/PAT-09c4fb73059f43d39fc677d2527f293c#5464e8bb2f0d4c8f99ac6983593a5db7"
# 開発環境での実行である場合は"yes", 本番環境での実行である場合は"no"を代入してください。
export IS_DEV=""yes" or "no""
このリポジトリ内にて, 以下のコマンドでstart.sh
を実行してください。
bash start.sh
テスト実行が無事確認できたらプルリクしてください。
デバッグ用の notion ページの環境変数のデータベースに, 使用した環境変数を記録してください。