feat: add C++23 AWS Durable Execution SDK #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| permissions: | |
| contents: read | |
| jobs: | |
| release: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Configure | |
| run: >- | |
| cmake -S . -B build | |
| -DCMAKE_BUILD_TYPE=Release | |
| -DDURABLE_EXECUTION_BUILD_BENCHMARKS=ON | |
| - name: Build | |
| run: cmake --build build --parallel 2 | |
| - name: Test | |
| run: ctest --test-dir build --output-on-failure | |
| - name: Install | |
| run: cmake --install build --prefix "${{ runner.temp }}/install" | |
| - name: Configure package consumer | |
| run: >- | |
| cmake -S tests/package_consumer | |
| -B "${{ runner.temp }}/consumer" | |
| -DCMAKE_BUILD_TYPE=Release | |
| -DCMAKE_PREFIX_PATH="${{ runner.temp }}/install" | |
| - name: Build package consumer | |
| run: >- | |
| cmake --build "${{ runner.temp }}/consumer" --parallel 2 | |
| - name: Run package consumer | |
| run: "${{ runner.temp }}/consumer/package_consumer" | |
| - name: Benchmark smoke test | |
| run: ./build/durable_execution_microbench | |
| sanitizers: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Configure | |
| run: >- | |
| cmake -S . -B build-sanitize | |
| -DCMAKE_BUILD_TYPE=Debug | |
| -DDURABLE_EXECUTION_BUILD_EXAMPLES=OFF | |
| -DDURABLE_EXECUTION_ENABLE_SANITIZERS=ON | |
| - name: Build | |
| run: cmake --build build-sanitize --parallel 2 | |
| - name: Test | |
| env: | |
| ASAN_OPTIONS: detect_leaks=1 | |
| run: ctest --test-dir build-sanitize --output-on-failure | |
| conformance: | |
| if: >- | |
| github.event_name != 'pull_request' || | |
| github.event.pull_request.head.repo.full_name == github.repository | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 90 | |
| concurrency: | |
| group: durable-cpp-conformance-persistent | |
| cancel-in-progress: false | |
| permissions: | |
| contents: read | |
| id-token: write | |
| env: | |
| AWS_REGION: us-west-2 | |
| AWS_DEFAULT_REGION: us-west-2 | |
| CONFORMANCE_COMMIT: 02d6dca971a38c13d94d6233d12f687e55b2a572 | |
| AWS_SDK_CPP_COMMIT: 29656157ab3aec2464a16564b912aa2fdbbf6437 | |
| AWS_LAMBDA_CPP_COMMIT: 30ec0a905cc7e415f4ae7e3a8b898dc8d7c536d0 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.14" | |
| - uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: ${{ secrets.INTEGRATION_ROLE_ARN }} | |
| aws-region: ${{ env.AWS_REGION }} | |
| role-session-name: durable-cpp-${{ github.run_id }} | |
| mask-aws-account-id: true | |
| - name: Verify integration account | |
| env: | |
| EXPECTED_ACCOUNT: ${{ secrets.INTEGRATION_ACCOUNT }} | |
| run: | | |
| actual_account=$(aws sts get-caller-identity --query Account --output text) | |
| test "$actual_account" = "$EXPECTED_ACCOUNT" | |
| echo "Integration account verified" | |
| - name: Checkout pinned conformance suite | |
| run: | | |
| git clone --filter=blob:none \ | |
| https://github.com/aws/aws-durable-execution-conformance-tests.git \ | |
| "${RUNNER_TEMP}/conformance" | |
| git -C "${RUNNER_TEMP}/conformance" checkout "${CONFORMANCE_COMMIT}" | |
| python -m pip install \ | |
| "${RUNNER_TEMP}/conformance/packages/aws-durable-execution-conformance-tests" | |
| - name: Checkout pinned AWS SDK for C++ | |
| run: | | |
| git clone --filter=blob:none --no-checkout \ | |
| https://github.com/aws/aws-sdk-cpp.git \ | |
| "${RUNNER_TEMP}/aws-sdk-cpp" | |
| git -C "${RUNNER_TEMP}/aws-sdk-cpp" sparse-checkout init --cone | |
| git -C "${RUNNER_TEMP}/aws-sdk-cpp" sparse-checkout set \ | |
| cmake \ | |
| toolchains \ | |
| src/aws-cpp-sdk-core \ | |
| generated/src/aws-cpp-sdk-lambda | |
| git -C "${RUNNER_TEMP}/aws-sdk-cpp" checkout "${AWS_SDK_CPP_COMMIT}" | |
| git -C "${RUNNER_TEMP}/aws-sdk-cpp" submodule update \ | |
| --init --recursive crt/aws-crt-cpp | |
| - name: Checkout pinned aws-lambda-cpp | |
| run: | | |
| git clone --filter=blob:none \ | |
| https://github.com/awslabs/aws-lambda-cpp.git \ | |
| "${RUNNER_TEMP}/aws-lambda-cpp" | |
| git -C "${RUNNER_TEMP}/aws-lambda-cpp" checkout \ | |
| "${AWS_LAMBDA_CPP_COMMIT}" | |
| - name: Build Amazon Linux 2023 package | |
| env: | |
| AWS_SDK_CPP_SOURCE: ${{ runner.temp }}/aws-sdk-cpp | |
| AWS_LAMBDA_CPP_SOURCE: ${{ runner.temp }}/aws-lambda-cpp | |
| BUILD_ROOT: ${{ runner.temp }}/al2023-build | |
| JOBS: "2" | |
| run: scripts/build_conformance_al2023.sh | |
| - name: Install SAM CLI container wrapper | |
| run: | | |
| mkdir -p "${RUNNER_TEMP}/bin" | |
| cat >"${RUNNER_TEMP}/bin/sam" <<'EOF' | |
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| exec docker run --rm \ | |
| -e AWS_ACCESS_KEY_ID \ | |
| -e AWS_SECRET_ACCESS_KEY \ | |
| -e AWS_SESSION_TOKEN \ | |
| -e AWS_REGION \ | |
| -e AWS_DEFAULT_REGION \ | |
| -e SAM_CLI_TELEMETRY=0 \ | |
| -v "${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}" \ | |
| -v "${RUNNER_TEMP}:${RUNNER_TEMP}" \ | |
| -w "${PWD}" \ | |
| public.ecr.aws/sam/build-provided.al2023 \ | |
| sam "$@" | |
| EOF | |
| chmod +x "${RUNNER_TEMP}/bin/sam" | |
| echo "${RUNNER_TEMP}/bin" >>"${GITHUB_PATH}" | |
| - name: Run all official conformance requirements | |
| run: | | |
| mkdir -p conformance-output/history | |
| durable-execution-conformance \ | |
| --template conformance/template.json \ | |
| --language cpp \ | |
| --region "${AWS_REGION}" \ | |
| --name "cpp-persistent" \ | |
| --max-workers 4 \ | |
| --suite all \ | |
| --no-cleanup \ | |
| --report console json junit \ | |
| --report-file "${GITHUB_WORKSPACE}/conformance-output/report" \ | |
| --history-dir "${GITHUB_WORKSPACE}/conformance-output/history" \ | |
| --fail-on failed+uncovered | |
| - name: Upload conformance reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: conformance-${{ github.run_id }} | |
| path: conformance-output/ | |
| if-no-files-found: warn |