-
Notifications
You must be signed in to change notification settings - Fork 0
58 lines (51 loc) · 1.88 KB
/
ecr_sync.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
name: ECR Image Sync
on:
push:
paths:
- 'conf/containers/'
branches:
- main
- dev
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Extract image names and tags from quay.config
id: extract-names-and-tags
run: |
# Extract image names and tags from quay.config and set as output variables
grep -E "^[[:space:]]*\w+_container[[:space:]]*=" conf/containers/quay.config |
grep -vE "//" |
awk -F "'" '{print $2}' |
tr '\n' ',' |
sed 's/,$//'|
awk '{print "::set-output name=container_images::" $0}'
- name: Pull and Push Docker images
id: push-images
env:
AWS_ACCESS_KEY_ID: ${{ secrets.IAC_DATASETS_ECR_DELIVERY_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.IAC_DATASETS_ECR_DELIVERY_AWS_SECRET_ACCESS_KEY }}
AWS_REGION: eu-west-1
run: |
aws ecr get-login-password \
--region eu-west-1 | docker login --username AWS \
--password-stdin 518054667335.dkr.ecr.eu-west-1.amazonaws.com
IFS=',' read -ra IMAGES <<< "${{ steps.extract-names-and-tags.outputs.container_images }}"
pushed_images=()
for IMAGE in "${IMAGES[@]}"; do
DEST_IMAGE="518054667335.dkr.ecr.eu-west-1.amazonaws.com/${IMAGE#quay.io/}"
docker pull $IMAGE
docker tag $IMAGE $DEST_IMAGE
docker push $DEST_IMAGE
pushed_images+=("$DEST_IMAGE")
done
echo "${pushed_images[@]}" > pushed_image_tags.txt
- name: Output pushed images
run: cat pushed_image_tags.txt