-
Notifications
You must be signed in to change notification settings - Fork 6
142 lines (122 loc) · 4.68 KB
/
create-channel.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Create Channel
# need images created at least once per branch, even if there are no docker changes
# so that downstream projects can use the branch channel.
on:
push:
branches-ignore:
- 'main'
paths:
- '.github/workflows/create-channel.yml'
- '.github/actions/**'
- '.github/docker-images/**'
- '.github/workflows/*.sh'
- 'builder/**'
create:
env:
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
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
# nothing
jobs:
package:
name: Package builder app
runs-on: ubuntu-24.04
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- name: Checkout Source
uses: actions/checkout@v4
- name: Get release tag
uses: ./.github/actions/release-tag
id: tag
- name: Package builder to S3
run: |
export CHANNEL=${{ steps.tag.outputs.release_tag }}
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/channels/$CHANNEL/builder.pyz
- name: Artifact builder
uses: actions/upload-artifact@v4
with:
name: builder
path: build/builder
- name: Upload container CI 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
standard-images:
name: ${{ matrix.variant.name }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
variant:
- name: manylinux1-x86
- name: manylinux1-x64
- name: manylinux2014-x86
- name: manylinux2014-x64
- name: manylinux2014-aarch64
- name: musllinux-1-1-aarch64
- name: musllinux-1-1-x64
- name: al2012-x64
- name: al2-x64
- name: al2023-x64
- name: ubuntu-18-x64
- name: ubuntu-20-x64
- name: ubuntu-20-aarch64
extra-build-flag: --platform=linux/aarch64
- name: ubuntu-22-x64
- name: node-10-linux-x64
- name: swift-5-al2-x64
- name: swift-5-centos-x64
- name: swift-5-ubuntu-x64
- name: rhel8-x64
- name: opensuse-leap
- name: fedora-34-x64
- name: raspbian-bullseye
- name: alpine-3.16-x64
- name: alpine-3.16-x86
- name: alpine-3.16-arm64
- name: alpine-3.16-armv7
- name: alpine-3.16-armv6
- name: openwrt-x64-openjdk8
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- 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: Install entrypoint
run: cat .github/docker-images/entrypoint.sh | sed s/version=LATEST/version=${{ steps.tag.outputs.release_tag }}/ > .github/docker-images/${{ matrix.variant.name }}/entrypoint.sh
- name: Install qemu/docker
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Build ${{ matrix.variant.name }} image
uses: whoan/docker-build-with-cache-action@v8
with:
registry: ${{ secrets.AWS_ECR_REPO }}
username: ${{ steps.creds.outputs.aws-access-key-id }}
password: ${{ steps.creds.outputs.aws-secret-access-key }}
session: ${{ steps.creds.outputs.aws-session-token }}
image_name: aws-crt-${{ matrix.variant.name }}
image_tag: ${{ steps.tag.outputs.release_tag }}
context: .github/docker-images/${{ matrix.variant.name }}
build_extra_args: --compress=true ${{ matrix.variant.extra-build-flag }}
- name: Create ECR repo if necessary
run: |
if ! aws --region us-east-1 ecr describe-repositories --repository-names aws-crt-${{ matrix.variant.name }} > /dev/null 2>&1; then \
aws --region us-east-1 ecr create-repository --repository-name aws-crt-${{ matrix.variant.name }}; \
fi
- name: Export ${{ matrix.variant.name }} image to ECR
run: |
export IMAGE_TAG=${{ steps.tag.outputs.release_tag }}
docker push ${{ secrets.AWS_ECR_REPO }}/aws-crt-${{ matrix.variant.name }}:$IMAGE_TAG