Skip to content
Open
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
71 changes: 71 additions & 0 deletions .github/workflows/ci-slow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: CI Slow

on:
push:
branches-ignore:
- 'main'
- 'docs'

env:
BUILDER_VERSION: v0.9.76
BUILDER_SOURCE: releases
BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
PACKAGE_NAME: aws-crt-cpp
LINUX_BASE_IMAGE: ubuntu-18-x64
RUN: ${{ github.run_id }}-${{ github.run_number }}
CRT_CI_ROLE: ${{ secrets.CRT_CI_ROLE_ARN }}
AWS_DEFAULT_REGION: us-east-1

permissions:
id-token: write # This is required for requesting the JWT

# cancel in-progress builds after a new commit
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
# Slow Alpine ARM builds that require QEMU emulation
linux-compat-alpine-arm:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
image:
- alpine-3.16-armv6
- alpine-3.16-armv7
- alpine-3.16-arm64
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
role-duration-seconds: 7200 # 2 hours
- name: Install qemu/docker
run: docker run --privileged --rm tonistiigi/binfmt --install all
- name: Build ${{ env.PACKAGE_NAME }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}

# Raspberry Pi builds that require QEMU emulation
raspberry:
runs-on: ubuntu-24.04 # latest
Comment on lines +51 to +53
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can move raspberry pi test to run on arm ubuntu instance. It's armv8 so that you don't need qemu.
like what we did for python here

Also the alpine-3.16-arm64 can benefit from the same setting.

strategy:
fail-fast: false
matrix:
image:
- raspbian-bullseye
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
role-duration-seconds: 7200 # 2 hours
# set arm arch
- name: Install qemu/docker
run: docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7
- name: Build ${{ env.PACKAGE_NAME }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
26 changes: 6 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ on:
- 'docs'

env:
BUILDER_VERSION: v0.9.76
BUILDER_SOURCE: releases
BUILDER_VERSION: latest-clang
BUILDER_SOURCE: channels
BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
PACKAGE_NAME: aws-crt-cpp
LINUX_BASE_IMAGE: ubuntu-18-x64
Expand Down Expand Up @@ -47,6 +47,7 @@ jobs:
# These linux-compat images need to run without -DUSE_OPENSSL because they do not have OpenSSL packages
# that are up-to-date (AL2) or don't provide OpenSSL development packages that is found in CMake (alpine)
# or are not able to connect on the socket even with the correct setup (manylinux2014)
# Note: Alpine ARM builds (alpine-3.16-armv6, alpine-3.16-armv7, alpine-3.16-arm64) are in ci-slow.yml
linux-compat:
runs-on: ubuntu-24.04
strategy:
Expand All @@ -58,17 +59,11 @@ jobs:
- al2-x64
- alpine-3.16-x64
- alpine-3.16-x86
- alpine-3.16-armv6
- alpine-3.16-armv7
- alpine-3.16-arm64
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
role-duration-seconds: 7200 # 2 hours
- name: Install qemu/docker
run: docker run --privileged --rm tonistiigi/binfmt --install all
- name: Build ${{ env.PACKAGE_NAME }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
Expand Down Expand Up @@ -107,27 +102,18 @@ jobs:
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }} --cmake-extra=-DUSE_OPENSSL=ON

raspberry:
# Test with the latest clang compiler using ubuntu-20-x64 base image
linux-clang-latest:
runs-on: ubuntu-24.04 # latest
strategy:
fail-fast: false
matrix:
image:
- raspbian-bullseye
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
role-duration-seconds: 7200 # 2 hours
# set arm arch
- name: Install qemu/docker
run: docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7

- name: Build ${{ env.PACKAGE_NAME }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ matrix.image }} build -p ${{ env.PACKAGE_NAME }}
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-ubuntu-20-x64 build -p ${{ env.PACKAGE_NAME }} --compiler=clang-latest --cmake-extra=-DUSE_OPENSSL=ON
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not add the latest to the same metrics above?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ubuntu-18-x64 can only find up to clang 19 while ubuntu-20-x64 finds clang 21. We can probably add clang-latest to ubuntu-18-x64 as well but I think we're moving away from testing middle versions beyond min and latest.


std-compat:
runs-on: ubuntu-24.04 # latest
Expand Down