Create Release #140
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 | |
- 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@v5 | |
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 | |
# The job will directly pull the image from the latest, and push to the new tag. | |
# This job is only for a temporary fix. The image would not get updated. | |
passthrough-images: | |
name: ${{ matrix.variant }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
variant: | |
- raspbian-bullseye | |
steps: | |
- name: Checkout Sources | |
uses: actions/checkout@v4 | |
- name: Get release tag | |
uses: ./.github/actions/release-tag | |
id: tag | |
- name: Login to docker repo | |
run: aws ecr get-login-password --region us-east-1 | docker login ${{ secrets.AWS_ECR_REPO }} -u AWS --password-stdin | |
- name: Pull latest image and push | |
run: | | |
if ! aws --region us-east-1 ecr describe-repositories --repository-names aws-crt-${{ matrix.variant }} > /dev/null 2>&1; then \ | |
exit 1 | |
fi | |
export IMAGE_TAG=${{ steps.tag.outputs.release_tag }} | |
docker pull ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:latest | |
docker tag ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:latest ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:$IMAGE_TAG | |
docker push ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant }}:$IMAGE_TAG | |
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 |