name: CI on: push: branches-ignore: - 'main' - 'docs' env: BUILDER_VERSION: v0.9.54 BUILDER_SOURCE: releases BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net PACKAGE_NAME: aws-crt-java LINUX_BASE_IMAGE: ubuntu-18-x64 RUN: ${{ github.run_id }}-${{ github.run_number }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} AWS_REGION: us-east-1 AWS_DEVICE_FARM_REGION: us-west-2 # Device Farm only available in us-west-2 region jobs: linux-compat: runs-on: ubuntu-22.04 # latest strategy: matrix: image: - manylinux2014-x64 - manylinux2014-x86 - al2-x64 - fedora-34-x64 - opensuse-leap - rhel8-x64 #- manylinux2014-x86 until we find 32-bit linux binaries we can use steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - 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-compiler-compat: runs-on: ubuntu-22.04 # latest strategy: matrix: compiler: - clang-3 - clang-6 - clang-8 - clang-9 - clang-10 - clang-11 - gcc-4.8 - gcc-5 - gcc-6 - gcc-7 - gcc-8 steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - 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-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }} linux-arm: name: ARM (${{ matrix.arch }}) runs-on: ubuntu-22.04 # latest strategy: matrix: arch: [armv6, armv7, arm64] steps: - name: Build ${{ env.PACKAGE_NAME }} run: | python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" chmod a+x builder ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-${{ matrix.arch }} --spec=downstream linux-musl: runs-on: ubuntu-22.04 # latest strategy: matrix: image: - alpine-3.16-x64 - alpine-3.16-arm64 - openwrt-x64-openjdk8 steps: - name: Install qemu/docker run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - name: Checkout Sources uses: actions/checkout@v2 with: submodules: true - 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 }} # armv7 needs its own action due to inability to differentiate at runtime armv6 vs armv7 in the jvm: # # At build time we can properly figure out that we're targeting armv7. # At run time we have to force armv7 (via environment variable) in order to achieve proper resource path # resolution. linux-musl-armv7: runs-on: ubuntu-20.04 # latest steps: - name: Install qemu/docker run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - name: Checkout Sources uses: actions/checkout@v2 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} run: | export AWS_CRT_ARCH=armv7 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-alpine-3.16-armv7 build -p ${{ env.PACKAGE_NAME }} raspberry: runs-on: ubuntu-22.04 # latest strategy: fail-fast: false matrix: image: - raspbian-bullseye steps: # set arm arch - name: Install qemu/docker run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - 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 }} windows: runs-on: windows-2022 # latest steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} + consumers run: | python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" python builder.pyz build -p ${{ env.PACKAGE_NAME }} --spec=downstream windows-vc14: runs-on: windows-2019 # windows-2019 is last env with Visual Studio 2015 (v14.0) strategy: matrix: arch: [x86, x64] steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} + consumers env: AWS_CMAKE_TOOLSET: v140 run: | python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" python builder.pyz build -p ${{ env.PACKAGE_NAME }} downstream osx: # With integration tests runs-on: macos-13 # latest steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} + consumers run: | python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" chmod a+x builder ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream osx-arm64: runs-on: macos-13 # latest steps: - name: Checkout Sources uses: actions/checkout@v3 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} + consumers run: | mvn -B compile -P mac-arm64 - name: verify backward compatibility run: | python3 codebuild/macos_compatibility_check.py armv8 osx-x64: runs-on: macos-13 steps: - name: Checkout Sources uses: actions/checkout@v2 with: submodules: true - name: Build ${{ env.PACKAGE_NAME }} + consumers run: | mvn -B compile -P mac-x64 - name: verify backward compatibility run: | python3 codebuild/macos_compatibility_check.py android: # ubuntu-20.04 comes with Android tooling, see: # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#android name: Android runs-on: ubuntu-20.04 # latest steps: - name: Checkout Sources uses: actions/checkout@v2 with: submodules: true # Setup JDK 11 - name: set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' distribution: 'temurin' cache: 'gradle' # Build and publish locally for the test app to find the SNAPSHOT version - name: Build ${{ env.PACKAGE_NAME }} run: | ./gradlew :android:crt:build ./gradlew -PnewVersion="1.0.0-SNAPSHOT" :android:crt:publishToMavenLocal # Setup files required by test app for Device Farm testing - name: Setup Android Test Files run: | cd src/test/android/testapp/src/main/assets python3 -m pip install boto3 python3 ./android_file_creation.py - name: Build Test App run: | cd src/test/android/testapp ../../../../gradlew assembledebug ../../../../gradlew assembleAndroidTest - name: Device Farm Tests run: | echo "Running Device Farm Python Script" python3 ./.github/workflows/run_android_ci.py \ --run_id ${{ github.run_id }} \ --run_attempt ${{ github.run_attempt }} \ --project_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/ProjectArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\') \ --device_pool_arn $(aws secretsmanager get-secret-value --region us-east-1 --secret-id "ci/DeviceFarm/DevicePoolArn" --query "SecretString" | cut -f5 -d\" | cut -f1 -d'\') # check that docs can still build check-docs: runs-on: ubuntu-22.04 # latest steps: - uses: actions/checkout@v3 with: submodules: true - name: Check docs run: | ./make-docs.sh check-submodules: runs-on: ubuntu-22.04 # latest steps: - name: Checkout Source uses: actions/checkout@v3 with: submodules: true fetch-depth: 0 - name: Check Submodules # note: using "@main" because "@${{env.BUILDER_VERSION}}" doesn't work # https://github.com/actions/runner/issues/480 uses: awslabs/aws-crt-builder/.github/actions/check-submodules@main localhost-test-linux: runs-on: ubuntu-22.04 # latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - name: Configure local host run: | python3 -m pip install h2 cd crt/aws-c-http/tests/py_localhost/ python3 server.py & python3 non_tls_server.py & - name: Build and test run: | python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream localhost-test-mac: runs-on: macos-13 # latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - name: Configure local host run: | python3 -m pip install h2 cd crt/aws-c-http/tests/py_localhost/ python3 server.py & python3 non_tls_server.py & - name: Build and test run: | python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" chmod a+x builder ./builder localhost-test -p ${{ env.PACKAGE_NAME }} --spec=downstream localhost-test-win: runs-on: windows-2022 # latest steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - name: Configure local host run: | python -m pip install h2 - name: Build and test run: | cd crt/aws-c-http/tests/py_localhost/ Start-Process -NoNewWindow python .\server.py Start-Process -NoNewWindow python .\non_tls_server.py python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')" python builder.pyz localhost-test -p ${{ env.PACKAGE_NAME }} downstream