Update docker images #152
Workflow file for this run
This file contains 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: Create Release | |
# Make new images for every published release | |
on: | |
release: | |
types: [published] | |
workflow_dispatch: | |
env: | |
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_REGION: 'us-east-1' | |
jobs: | |
package: | |
name: Package builder app | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Source | |
uses: actions/checkout@v4 | |
- name: Get release tag | |
uses: ./.github/actions/release-tag | |
id: tag | |
# re-enable this when requirements.txt has actual dependencies | |
# - name: Bundle dependencies | |
# run: | | |
# python3 -m pip install -r requirements.txt --target builder | |
# rm -rf builder/*.dist-info | |
- name: Package builder to S3 | |
run: | | |
mkdir -p build | |
mkdir -p staging | |
cp -r builder staging/. | |
python3 -m zipapp --python="/usr/bin/env python3" -m "builder.main:main" --output=build/builder staging | |
aws s3 cp build/builder s3://$AWS_S3_BUCKET/releases/${{ steps.tag.outputs.release_tag }}/builder.pyz | |
- name: Artifact builder | |
uses: actions/upload-artifact@v3 | |
with: | |
name: builder | |
path: build/builder | |
export-linux-images: | |
name: Release aws-crt-${{ matrix.variant }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
variant: | |
- manylinux1-x86 | |
- manylinux1-x64 | |
- manylinux2014-x86 | |
- manylinux2014-x64 | |
- manylinux2014-aarch64 | |
- musllinux-1-1-aarch64 | |
- musllinux-1-1-x64 | |
- al2012-x64 | |
- al2-x64 | |
- ubuntu-18-x64 | |
- ubuntu-20-x64 | |
- ubuntu-20-aarch64 | |
- node-10-linux-x64 | |
- swift-5-al2-x64 | |
- swift-5-centos-x64 | |
- swift-5-ubuntu-x64 | |
- rhel8-x64 | |
- opensuse-leap | |
- fedora-34-x64 | |
- raspbian-bullseye | |
- alpine-3.16-x64 | |
- alpine-3.16-x86 | |
- alpine-3.16-arm64 | |
- alpine-3.16-armv7 | |
- alpine-3.16-armv6 | |
- openwrt-x64-openjdk8 | |
steps: | |
- name: Checkout Sources | |
uses: actions/checkout@v4 | |
- name: Get release tag | |
uses: ./.github/actions/release-tag | |
id: tag | |
- name: Install entrypoint | |
run: cat .github/docker-images/entrypoint.sh | sed s/version=LATEST/version=${{ steps.tag.outputs.release_tag }}/ > .github/docker-images/${{ matrix.variant }}/entrypoint.sh | |
- name: Install qemu/docker | |
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
- name: Build aws-crt-${{ matrix.variant }} image | |
uses: whoan/docker-build-with-cache-action@v8 | |
with: | |
registry: ${{ secrets.AWS_ECR_REPO }} | |
username: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
image_name: aws-crt-${{ matrix.variant }} | |
image_tag: ${{ steps.tag.outputs.release_tag }} | |
context: .github/docker-images/${{ matrix.variant }} | |
build_extra_args: --compress=true | |
- name: Login to docker repos | |
run: | | |
aws ecr get-login-password --region us-east-1 | docker login ${{ secrets.AWS_ECR_REPO }} -u AWS --password-stdin | |
- name: Create ECR repo if necessary | |
run: | | |
if ! aws --region us-east-1 ecr describe-repositories --repository-names aws-crt-${{ matrix.variant }} > /dev/null 2>&1; then \ | |
aws --region us-east-1 ecr create-repository --repository-name aws-crt-${{ matrix.variant }}; \ | |
fi | |
- name: Tag/push release images as latest | |
run: | | |
export IMAGE_TAG=${{ steps.tag.outputs.release_tag }} | |
docker tag ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:$IMAGE_TAG ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:latest | |
docker push ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:$IMAGE_TAG | |
docker push ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:latest | |
- name: Export aws-crt-${{ matrix.variant }} image to S3/releases | |
run: | | |
export IMAGE_TAG=${{ steps.tag.outputs.release_tag }} | |
docker save ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:$IMAGE_TAG \ | |
| gzip \ | |
| aws s3 cp - s3://${{env.AWS_S3_BUCKET}}/releases/$IMAGE_TAG/aws-crt-${{ matrix.variant }}.tar.gz | |
aws s3 cp s3://${{env.AWS_S3_BUCKET}}/releases/$IMAGE_TAG/aws-crt-${{ matrix.variant }}.tar.gz s3://${{env.AWS_S3_BUCKET}}/LATEST/aws-crt-${{ matrix.variant }}.tar.gz | |
upload-ci-script: | |
name: Upload container ci script | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Source | |
uses: actions/checkout@v4 | |
- name: Get release tag | |
uses: ./.github/actions/release-tag | |
id: tag | |
- name: Upload script | |
run: aws s3 cp ./.github/workflows/linux-container-ci.sh s3://aws-crt-test-stuff/ci/${{ steps.tag.outputs.release_tag }}/linux-container-ci.sh |