Skip to content

Commit

Permalink
Merge pull request #291 from fingerprintjs/ci/e2e_test_improvements
Browse files Browse the repository at this point in the history
ci: replace test branch flow with new flow
  • Loading branch information
necipallef authored Sep 25, 2024
2 parents 5330a64 + 6841fc5 commit f29afc7
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 193 deletions.
46 changes: 0 additions & 46 deletions .github/workflows/cleanup_old_e2e_tasks.yml

This file was deleted.

107 changes: 0 additions & 107 deletions .github/workflows/deploy_test_branch.yml

This file was deleted.

84 changes: 84 additions & 0 deletions .github/workflows/e2e_test_for_prs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Run e2e for topic branch
on:
pull_request:

jobs:
check-changed-files:
runs-on: ubuntu-20.04
name: Check changed files
outputs:
NEED_TO_RUN_TESTS: ${{ steps.decision.outputs.NEED_TO_RUN_TESTS }}
steps:
- name: Git clone
uses: actions/checkout@v4
- name: Get changed files
id: decision
run: |
git fetch origin $GITHUB_BASE_REF
diff=$(git diff --name-only origin/$GITHUB_BASE_REF..HEAD)
echo $diff
needToRunTests=false
for changed_file in $diff; do
if [[ ${changed_file} =~ ^(proxy|scripts|mgmt-lambda)\/.+$ ]]; then
needToRunTests=true
fi
if [[ ${changed_file} =~ ^\.github\/workflows\/.+$ ]]; then
needToRunTests=true
fi
done
echo $needToRunTests
echo NEED_TO_RUN_TESTS=${needToRunTests} >> $GITHUB_OUTPUT
run-e2e-for-topic-branch:
needs: check-changed-files
if: needs['check-changed-files'].outputs.NEED_TO_RUN_TESTS == 'true'
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
name: Run e2e for topic branch
runs-on: ubuntu-latest
steps:
- name: Git clone
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 #v4.0.2
with:
role-to-assume: ${{secrets.AWS_E2E_ROLE_ARN}}
aws-region: ${{vars.AWS_E2E_REGION}}
- name: Trigger AWS CodePipeline
run: |
git_hash=${{ github.event.pull_request.head.sha }}
echo $git_hash
codepipeline_execution_id=$(aws codepipeline start-pipeline-execution --name ${{vars.AWS_E2E_TOPIC_BRANCH_CODEPIPELINE_NAME}} --source-revisions actionName=Source,revisionType=COMMIT_ID,revisionValue=$git_hash --query 'pipelineExecutionId' --output text)
echo "Pipeline execution ID: $codepipeline_execution_id"
echo "codepipeline_execution_id=$codepipeline_execution_id" >> $GITHUB_ENV
- name: Poll Pipeline Status
id: poll-status
run: |
while true; do
sleep 30
status=$(aws codepipeline get-pipeline-execution \
--pipeline-name ${{vars.AWS_E2E_TOPIC_BRANCH_CODEPIPELINE_NAME}} \
--pipeline-execution-id ${{ env.codepipeline_execution_id }} \
--query 'pipelineExecution.status' --output text)
echo "Current pipeline status: $status"
if [[ "$status" == "Succeeded" ]]; then
echo "Pipeline execution succeeded!"
exit 0
elif [[ "$status" == "Failed" ]]; then
echo "Pipeline execution failed!"
exit 1
fi
done
- name: Output Pipeline Link
if: always()
run: |
region=${{ vars.AWS_E2E_REGION }}
pipeline_name=${{ vars.AWS_E2E_TOPIC_BRANCH_CODEPIPELINE_NAME }}
execution_id=${{ env.codepipeline_execution_id }}
pipeline_url="https://${region}.console.aws.amazon.com/codesuite/codepipeline/pipelines/${pipeline_name}/executions/${execution_id}?region=${region}"
echo "AWS CodePipeline Execution URL: $pipeline_url"
echo "## AWS CodePipeline Execution Link" >> $GITHUB_STEP_SUMMARY
echo "[$pipeline_url]($pipeline_url)" >> $GITHUB_STEP_SUMMARY
18 changes: 0 additions & 18 deletions .github/workflows/serialize_job_info.js

This file was deleted.

15 changes: 15 additions & 0 deletions buildspec-e2e-pr-join-artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 0.2

phases:
build:
commands:
# $CODEBUILD_SRC_DIR => rc branch
# $CODEBUILD_SRC_DIR_SourceArtifact => topic branch
- cd $CODEBUILD_SRC_DIR_SourceArtifact
- git status
- cp $CODEBUILD_SRC_DIR/buildspec-e2e.yml buildspec-e2e.yml
- cp $CODEBUILD_SRC_DIR/buildspec-mock-e2e.yml buildspec-mock-e2e.yml
artifacts:
files:
- '**/*'
base-directory: $CODEBUILD_SRC_DIR_SourceArtifact
19 changes: 9 additions & 10 deletions buildspec-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ phases:
nodejs: 20
commands:
- npm i -g pnpm
- export COMMIT_SHA=$(cat meta.json | jq -r '.sha')
- echo $COMMIT_SHA
- echo $CODEBUILD_BUILD_ID
- echo $CODEBUILD_PUBLIC_BUILD_URL
- ls -a
Expand All @@ -20,16 +18,17 @@ phases:
- ls -lah
- pulumi version
- pnpm install
- pnpm -C website install && pnpm -C website build
- cd tests && pnpm install && npx playwright install --with-deps && cd ..
- cd infra/lambda && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd ../../
- cd infra/cloudfront && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd ../../
- cd infra && pnpm install && pnpm run lambda:up && pnpm run lambda:export && pnpm run cloudfront:up && pnpm run cloudfront:export && cd ../
- pnpm build
- cp -r dist e2e
- pnpm -C e2e/website install && pnpm -C e2e/website build
- cd e2e/tests && pnpm install && npx playwright install --with-deps && cd -
- cd e2e/infra/lambda && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd -
- cd e2e/infra/cloudfront && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd -
- cd e2e/infra && pnpm install && pnpm run lambda:up && pnpm run lambda:export && pnpm run cloudfront:up && pnpm run cloudfront:export && cd -
build:
commands:
- ls -a
- cd tests && pnpm test
- cd e2e/tests && pnpm test && cd -
finally:
- cd ../
- echo $COMMIT_SHA
- cd infra && pnpm cloudfront:destroy && pnpm lambda:destroy && cd ../
- cd e2e/infra && pnpm cloudfront:destroy && pnpm lambda:destroy && cd -
19 changes: 8 additions & 11 deletions buildspec-mock-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ phases:
nodejs: 20
commands:
- npm i -g pnpm
- export COMMIT_SHA=$(cat meta.json | jq -r '.sha')
- export VERSION=$(cat meta.json | jq -r '.version')
- echo $COMMIT_SHA
- echo $VERSION
- echo $CODEBUILD_BUILD_ID
- echo $CODEBUILD_PUBLIC_BUILD_URL
- ls -a
Expand All @@ -22,16 +18,17 @@ phases:
- ls -lah
- pulumi version
- pnpm install
- pnpm build
- npm i -g ts-node
- pnpm -C website install && pnpm -C website build
- cd tests && pnpm install && cd ..
- cd infra/lambda && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd ../../
- cd infra/cloudfront && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd ../../
- cd infra && pnpm install && pnpm run lambda:up && pnpm run lambda:export && pnpm run cloudfront:up && pnpm run cloudfront:export && cd ../
- pnpm -C e2e/website install && pnpm -C e2e/website build
- cd e2e/tests && pnpm install && cd -
- cd e2e/infra/lambda && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd -
- cd e2e/infra/cloudfront && pnpm install && pulumi stack init e2e && pulumi stack select e2e && cd -
- cd e2e/infra && pnpm install && pnpm run lambda:up && pnpm run lambda:export && pnpm run cloudfront:up && pnpm run cloudfront:export && cd -
build:
commands:
- ts-node ./scripts/mockTests.ts --project=tsconfig.json
- ts-node e2e/scripts/mockTests.ts --project=tsconfig.json
finally:
- echo $COMMIT_SHA
- cd infra && pnpm cloudfront:destroy && pnpm lambda:destroy && cd ../
- cd e2e/infra && pnpm cloudfront:destroy && pnpm lambda:destroy && cd -

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ function assertIsCustomerVariableValue(value: unknown, key: string): asserts val
}
}

// TODO Update notion documentation to contain correct keys
export function validateSecret(obj: unknown): asserts obj is CustomerVariablesRecord {
if (!obj || typeof obj !== 'object') {
throw new TypeError('Secrets Manager secret is not an object')
Expand Down

0 comments on commit f29afc7

Please sign in to comment.