-
Notifications
You must be signed in to change notification settings - Fork 82
135 lines (115 loc) · 4.41 KB
/
ee-nlc-tag-push.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
name: Build EE NLC tag image
on:
push:
branches:
- "!*"
tags:
- "v5.*"
workflow_dispatch:
inputs:
HZ_VERSION:
description: 'Version of Hazelcast to build the image for, e.g. 5.3.2, 5.1.1, 5.0.1'
required: true
env:
test_container_name_ee: hazelcast-ee-test
jobs:
jdks:
uses: ./.github/workflows/get-supported-jdks.yaml
push:
runs-on: ubuntu-latest
needs: jdks
strategy:
fail-fast: false
matrix:
jdk: ${{ fromJSON(needs.jdks.outputs.jdks) }}
env:
NLC_REPOSITORY: ${{ secrets.NLC_REPOSITORY }}
NLC_REPO_USERNAME: ${{ secrets.NLC_REPO_USERNAME }}
NLC_REPO_TOKEN: ${{ secrets.NLC_REPO_TOKEN }}
NLC_IMAGE_NAME: ${{ secrets.NLC_IMAGE_NAME }}
S3_NLC_URL: ${{ secrets.S3_NLC_URL }}
HZ_VERSION: ${{ github.event.inputs.HZ_VERSION }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Set HZ version
run: |
if [ -z "${{ env.HZ_VERSION }}" ]; then
HZ_VERSION=${GITHUB_REF:11}
else
HZ_VERSION=${{ env.HZ_VERSION }}
fi
echo "HZ_VERSION=${HZ_VERSION}" >> $GITHUB_ENV
- name: Set NLC zip URL
run: |
S3_NLC_ZIP_URL=${S3_NLC_URL}/hazelcast-enterprise-${HZ_VERSION}-nlc.zip
echo "S3_NLC_ZIP_URL=${S3_NLC_ZIP_URL}" >> $GITHUB_ENV
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: 'us-east-1'
- name: Get presigned NLC URL from S3
run: |
HAZELCAST_ZIP_URL="$(aws s3 presign ${S3_NLC_ZIP_URL} --expires-in 600)"
echo "HAZELCAST_ZIP_URL=${HAZELCAST_ZIP_URL}" >> $GITHUB_ENV
- name: Login to Docker Hub
run: echo "${NLC_REPO_TOKEN}" | docker login -u ${NLC_REPO_USERNAME} ${NLC_REPOSITORY} --password-stdin
- name: Set up QEMU
uses: docker/[email protected]
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.5.1
- name: Build EE image
run: |
docker buildx build --load \
--build-arg HZ_VERSION=${HZ_VERSION} \
--build-arg JDK_VERSION=${{ matrix.jdk }} \
--build-arg HAZELCAST_ZIP_URL=${HAZELCAST_ZIP_URL} \
--tag hazelcast-nlc:test hazelcast-enterprise
- name: Run smoke test against EE image
timeout-minutes: 2
run: |
export HZ_INSTANCETRACKING_FILENAME=instance-tracking.txt
.github/scripts/simple-smoke-test.sh hazelcast-nlc:test ${{ env.test_container_name_ee }} ee ${HZ_VERSION}
- name: Get docker logs
if: ${{ always() }}
run: |
DOCKER_LOG_FILE_EE=docker-${{ env.test_container_name_ee }}-jdk${{ matrix.jdk }}.log
echo "DOCKER_LOG_FILE_EE=${DOCKER_LOG_FILE_EE}" >> $GITHUB_ENV
docker logs ${{ env.test_container_name_ee }} > ${DOCKER_LOG_FILE_EE}
- name: Store docker logs as artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: docker-logs-jdk${{ matrix.jdk }}
path: |
${{ env.DOCKER_LOG_FILE_EE }}
- name: Build/Push EE image
run: |
. .github/scripts/get-tags-to-push.sh
. .github/scripts/docker.functions.sh
DOCKER_DIR=hazelcast-enterprise
IMAGE_NAME=${NLC_IMAGE_NAME}
DEFAULT_JDK="$(get_default_jdk $DOCKER_DIR)"
TAGS_TO_PUSH=$(augment_with_suffixed_tags "$HZ_VERSION" "" "${{ matrix.jdk }}" "$DEFAULT_JDK")
echo "TAGS_TO_PUSH=$TAGS_TO_PUSH"
TAGS_ARG=""
for tag in ${TAGS_TO_PUSH[@]}
do
TAGS_ARG="${TAGS_ARG} --tag ${IMAGE_NAME}:${tag}"
done
PLATFORMS="$(get_ubi_supported_platforms "${{ matrix.jdk }}")"
docker buildx build --push \
--build-arg HZ_VERSION=${HZ_VERSION} \
--build-arg JDK_VERSION=${{ matrix.jdk }} \
--build-arg HAZELCAST_ZIP_URL=${HAZELCAST_ZIP_URL} \
${TAGS_ARG} \
--platform=${PLATFORMS} $DOCKER_DIR
- name: Slack notification
uses: ./.github/actions/slack-notification
if: failure()
with:
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK }}