diff --git a/.github/workflows/aws-ci.yml b/.github/workflows/aws-ci.yml
new file mode 100644
index 000000000..c3fad6dcf
--- /dev/null
+++ b/.github/workflows/aws-ci.yml
@@ -0,0 +1,47 @@
+
+name: AWS CI
+
+on:
+ workflow_dispatch:
+ pull_request:
+ branches:
+ - main
+ - dev
+ - 'feature/**'
+
+permissions:
+ id-token: write
+
+jobs:
+ run-ci:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Configure AWS Credentials
+ uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 #v4
+ with:
+ role-to-assume: ${{ secrets.CI_MAIN_TESTING_ACCOUNT_ROLE_ARN }}
+ role-duration-seconds: 7200
+ aws-region: us-west-2
+ - name: Invoke Load Balancer Lambda
+ id: lambda
+ shell: pwsh
+ run: |
+ aws lambda invoke response.json --function-name "${{ secrets.CI_TESTING_LOAD_BALANCER_LAMBDA_NAME }}" --cli-binary-format raw-in-base64-out --payload '{"Roles": "${{ secrets.CI_TEST_RUNNER_ACCOUNT_ROLES }}", "ProjectName": "${{ secrets.CI_TESTING_CODE_BUILD_PROJECT_NAME }}", "Branch": "${{ github.sha }}"}'
+ $roleArn=$(cat ./response.json)
+ "roleArn=$($roleArn -replace '"', '')" >> $env:GITHUB_OUTPUT
+ - name: Configure Test Runner Credentials
+ uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 #v4
+ with:
+ role-to-assume: ${{ steps.lambda.outputs.roleArn }}
+ role-duration-seconds: 7200
+ aws-region: us-west-2
+ - name: Run Tests on AWS
+ id: codebuild
+ uses: aws-actions/aws-codebuild-run-build@v1
+ with:
+ project-name: ${{ secrets.CI_TESTING_CODE_BUILD_PROJECT_NAME }}
+ - name: CodeBuild Link
+ shell: pwsh
+ run: |
+ $buildId = "${{ steps.codebuild.outputs.aws-build-id }}"
+ echo $buildId
diff --git a/buildtools/build.proj b/buildtools/build.proj
index beb681a63..be0b331c8 100644
--- a/buildtools/build.proj
+++ b/buildtools/build.proj
@@ -38,9 +38,11 @@
-
-
-
+
+
+
+
+
diff --git a/buildtools/ci.buildspec.yml b/buildtools/ci.buildspec.yml
new file mode 100644
index 000000000..9094387d9
--- /dev/null
+++ b/buildtools/ci.buildspec.yml
@@ -0,0 +1,16 @@
+version: 0.2
+
+phases:
+ install:
+ runtime-versions:
+ dotnet: 8.x
+ commands:
+ # The tests need .NET 3.1, 6 and 8. .NET6 is installed by default. .NET8 is added in the runtime-versions. .NET 3.1 is installed manually.
+ - curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 3.1
+ # Mono is needed to run the unit tests on Linux
+ - curl https://download.mono-project.com/repo/centos8-stable.repo | tee /etc/yum.repos.d/mono-stable.repo
+ - dnf install -y mono-complete mono-devel
+ build:
+ commands:
+ - dotnet msbuild buildtools/build.proj /t:unit-tests /p:Cicd=true
+ - dotnet msbuild buildtools/build.proj /t:integ-tests /p:Cicd=true
\ No newline at end of file