From 52bc82a29bb08f2f8f87a92f380149945eb8d6f1 Mon Sep 17 00:00:00 2001 From: Clare Liguori Date: Mon, 16 Dec 2019 16:12:19 -0800 Subject: [PATCH] feat: Build and integ test scripts for pipeline --- buildspec.yml | 14 ++++++++++++++ buildspec_check_dist.yml | 18 ++++++++++++++++++ buildspec_integ.yml | 24 ++++++++++++++++++++++++ run_integ_test.sh | 25 +++++++++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 buildspec.yml create mode 100644 buildspec_check_dist.yml create mode 100644 buildspec_integ.yml create mode 100755 run_integ_test.sh diff --git a/buildspec.yml b/buildspec.yml new file mode 100644 index 000000000..a3654da52 --- /dev/null +++ b/buildspec.yml @@ -0,0 +1,14 @@ +version: 0.2 + +phases: + install: + runtime-versions: + nodejs: 10 + build: + commands: + # Run unit tests + - npm ci + - npm run test +artifacts: + files: + - '**/*' diff --git a/buildspec_check_dist.yml b/buildspec_check_dist.yml new file mode 100644 index 000000000..df9d77d7a --- /dev/null +++ b/buildspec_check_dist.yml @@ -0,0 +1,18 @@ +version: 0.2 + +phases: + install: + runtime-versions: + nodejs: 10 + build: + commands: + # Validate that the dist/ folder has the latest code packaged. + # If there are unpackaged changes, this build will fail. + # The GitHub Actions 'package' workflow will eventually run + # and will sync the dist folder, which will re-trigger this build. + - npm ci + - npm run package + - git diff --exit-code dist/index.js +artifacts: + files: + - '**/*' diff --git a/buildspec_integ.yml b/buildspec_integ.yml new file mode 100644 index 000000000..3cb5e094a --- /dev/null +++ b/buildspec_integ.yml @@ -0,0 +1,24 @@ +version: 0.2 + +env: + variables: + GITHUB_HUB_CLI_VERSION: 2.13.0 + +phases: + install: + runtime-versions: + nodejs: 10 + build: + commands: + # Install hub CLI + - wget https://github.com/github/hub/releases/download/v$GITHUB_HUB_CLI_VERSION/hub-linux-amd64-$GITHUB_HUB_CLI_VERSION.tgz + - tar -xzvf hub-linux-amd64-$GITHUB_HUB_CLI_VERSION.tgz && sudo mv hub-linux-amd64-$GITHUB_HUB_CLI_VERSION/bin/hub /usr/local/bin + + # Configure git client + - git config user.name "CodeBuild Integration Test" + - git config user.email $COMMIT_EMAIL_ADDRESS + - git config credential.helper "store --file=.git/credentials" + - echo "https://${GITHUB_TOKEN}:@github.com" > .git/credentials + + # Run integration tests + - ./run_integ_test.sh diff --git a/run_integ_test.sh b/run_integ_test.sh new file mode 100755 index 000000000..37bdaa7d1 --- /dev/null +++ b/run_integ_test.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -ex + +# Retrieve the action commit ID to test +ACTION_GIT_COMMIT_ID=`git rev-parse HEAD` + +# Update the integ test action workflow file with the latest action commit ID +git checkout integ-tests +sed -i 's|aws-actions/configure-aws-credentials@v1|aws-actions/configure-aws-credentials@$ACTION_GIT_COMMIT_ID|g' test-workflow.yml +cp test-workflow.yml .github/workflows +git add .github/workflows +git commit -m "Test commit $ACTION_GIT_COMMIT_ID" + +# Trigger the action workflow +git push origin integ-tests + +# Validate that the action workflow succeeds +# Exit codes: success = 0; failure = 1; pending = 2; no status = 3 +while hub ci-status; [ $? -ge 2 ] do + echo "waiting for test workflow to complete..." + sleep 5 +done + +hub ci-status