Skip to content

Commit c35931c

Browse files
author
Artem
committed
add docker release job
1 parent 40016a8 commit c35931c

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

.circleci/build/release-docker.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/bin/bash
2+
set -e
3+
4+
HELP="Args:
5+
-v - Semver (2.42.0)
6+
-d - Build image repository (Ex: -d redisinsight)
7+
-r - Target repository (Ex: -r redis/redisinsight)
8+
"
9+
10+
while getopts "c:d:r:t:h:" opt; do
11+
case $opt in
12+
v) VERSION="$OPTARG";;
13+
d) DEV_REPO="$OPTARG";;
14+
r) RELEASE_REPO="$OPTARG";;
15+
h) echo "$HELP"; exit 0;;
16+
?) echo "$HELP" >&2; exit 1 ;;
17+
esac
18+
done
19+
20+
V_ARR=( ${VERSION//./ } )
21+
TAGS[0]=$VERSION
22+
TAGS[1]="${V_ARR[0]}.${V_ARR[1]}"
23+
TAGS[2]="latest"
24+
25+
DEV_IMAGE_AMD64=$DEV_REPO:amd64
26+
DEV_IMAGE_ARM64=$DEV_REPO:arm64
27+
RELEASE_IMAGE_AMD64=$RELEASE_REPO:$VERSION-amd64
28+
RELEASE_IMAGE_ARM64=$RELEASE_REPO:$VERSION-arm64
29+
30+
echo "
31+
TAGS: [${TAGS[0]}, ${TAGS[1]}, ${TAGS[2]}]
32+
DEV_REPO: $DEV_REPO
33+
RELEASE_REPO: $RELEASE_REPO
34+
35+
DEV_IMAGE_AMD64: $DEV_IMAGE_AMD64
36+
DEV_IMAGE_ARM64: $DEV_IMAGE_ARM64
37+
38+
RELEASE_IMAGE_AMD64: $RELEASE_IMAGE_AMD64
39+
RELEASE_IMAGE_ARM64: $RELEASE_IMAGE_ARM64
40+
"
41+
42+
# Load images from tar archives
43+
docker rmi $DEV_IMAGE_AMD64 || true
44+
docker rmi $DEV_IMAGE_ARM64 || true
45+
docker load -i release/docker/docker-linux-alpine.amd64.tar
46+
docker load -i release/docker/docker-linux-alpine.arm64.tar
47+
48+
echo "Push AMD64 image"
49+
docker tag $DEV_IMAGE_AMD64 $RELEASE_IMAGE_AMD64
50+
docker push $RELEASE_IMAGE_AMD64
51+
52+
echo "Push ARM64 image"
53+
docker tag $DEV_IMAGE_ARM64 $RELEASE_IMAGE_ARM64
54+
docker push $RELEASE_IMAGE_ARM64
55+
56+
for TAG in "${TAGS[@]}"; do
57+
echo "Releasing: $RELEASE_REPO:$TAG"
58+
docker manifest rm $RELEASE_REPO:$TAG || true
59+
docker manifest create --amend "$RELEASE_REPO:$TAG" $RELEASE_IMAGE_AMD64 $RELEASE_IMAGE_ARM64
60+
docker manifest push "$RELEASE_REPO:$TAG"
61+
done
62+
63+
echo "Success"

.circleci/config.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,24 @@ jobs:
980980
981981
aws s3 cp release/ s3://${AWS_BUCKET_NAME}/private/${applicationVersion} --recursive
982982
983+
release-docker:
984+
executor: linux-executor
985+
steps:
986+
- checkout
987+
- attach_workspace:
988+
at: .
989+
- run:
990+
name: Release docker images
991+
command: |
992+
appVersion=$(jq -r '.version' redisinsight/package.json)
993+
994+
docker login -u $DOCKER_USER -p $DOCKER_PASS
995+
996+
./.circleci/build/release-docker.sh \
997+
-d redisinsight
998+
-r $DOCKER_REPO
999+
-v $appVersion
1000+
9831001
publish-prod-aws:
9841002
executor: linux-executor
9851003
steps:
@@ -1613,6 +1631,11 @@ workflows:
16131631
requires:
16141632
- Approve Publish Release (prod)
16151633
<<: *prodFilter # double check for "latest"
1634+
- release-docker:
1635+
name: Release docker images
1636+
requires:
1637+
- Approve Publish Release (prod)
1638+
<<: *prodFilter # double check for "latest"
16161639
# Nightly tests
16171640
nightly:
16181641
triggers:

0 commit comments

Comments
 (0)