Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
201 changes: 201 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
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: Restore Amazon Linux build cache
uses: actions/cache@v4
with:
path: .cache/conformance-al2023
key: al2023-v1-${{ runner.os }}-${{ env.AWS_SDK_CPP_COMMIT }}-${{ env.AWS_LAMBDA_CPP_COMMIT }}-${{ hashFiles('scripts/build_conformance_al2023.sh') }}-${{ github.sha }}
restore-keys: al2023-v1-${{ runner.os }}-${{ env.AWS_SDK_CPP_COMMIT }}-${{ env.AWS_LAMBDA_CPP_COMMIT }}-${{ hashFiles('scripts/build_conformance_al2023.sh') }}-

- 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: ${{ github.workspace }}/.cache/conformance-al2023
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
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/build/
/build-*/
/cmake-build-*/
/.cache/
/.clangd/
__pycache__/
*.pyc
compile_commands.json
*.gcda
*.gcno
*.profraw
*.profdata
conformance/durable_execution_conformance.zip
Loading
Loading