7
7
8
8
env :
9
9
SOLANA_VERSION : 1.7.12
10
- DOCKER_SERVER : docker.io
10
+ DOCKER_HUB : docker.io
11
+ DOCKER_USER : ${{ secrets.DOCKER_IO_USER }}
12
+ IS_RELEASE : ${{
13
+ startsWith( github.ref, 'refs/tags/devnet-' ) ||
14
+ startsWith( github.ref, 'refs/tags/testnet-' ) ||
15
+ startsWith( github.ref, 'refs/tags/mainnet-' ) }}
11
16
12
17
jobs :
13
18
build :
@@ -19,41 +24,27 @@ jobs:
19
24
- name : Initialize Environment
20
25
run : |
21
26
set -eux
22
- DOCKER_IMAGE="${GITHUB_REPOSITORY}:${GITHUB_REF##*/}"
23
- echo "DOCKER_IMAGE=${DOCKER_IMAGE}" >> "${GITHUB_ENV}"
27
+ REPO_NAME="$( basename "${GITHUB_REPOSITORY}" )"
28
+ REF_NAME="$( basename "${GITHUB_REF}" )"
29
+ echo "DOCKER_IMAGE=${REPO_NAME}:${REF_NAME}" >> "${GITHUB_ENV}"
24
30
25
31
- name : Build Docker Image
26
32
run : |
27
33
set -eux
28
-
29
- # GITHUB_WORKSPACE may be relative to "/".
30
- cd /
31
- cd "${GITHUB_WORKSPACE}"
32
-
33
34
docker build \
34
35
--file docker/Dockerfile \
35
- --build-arg SOLANA_VERSION="${{ env. SOLANA_VERSION } }" \
36
- --tag "${{ env. DOCKER_IMAGE } }" \
36
+ --build-arg SOLANA_VERSION="${SOLANA_VERSION}" \
37
+ --tag "${DOCKER_IMAGE}" \
37
38
.
38
39
39
40
- name : Publish Docker Image
41
+ if : env.IS_RELEASE == 'true'
40
42
run : |
41
- # Do not set -x before referencing secrets.
42
- set -eu
43
-
44
- echo "${{ secrets.DOCKER_IO_PASS }}" | docker login \
45
- "${{ env.DOCKER_SERVER }}" \
46
- -u "${{ secrets.DOCKER_IO_USER }}" \
47
- --password-stdin
48
-
49
- set -x
50
- SRC="${{ env.DOCKER_IMAGE }}"
51
- DST="${{ env.DOCKER_SERVER }}/${SRC}"
52
- docker image tag "${SRC}" "${DST}"
53
- docker image push "${DST}"
54
-
55
- # Only publish if tagged as a release.
56
- if : |
57
- startsWith( github.ref, 'refs/tags/devnet-' )
58
- || startsWith( github.ref, 'refs/tags/testnet-' )
59
- || startsWith( github.ref, 'refs/tags/mainnet-' )
43
+ function publish() {
44
+ set -eux
45
+ PUB_IMAGE="${DOCKER_HUB}/${DOCKER_USER}/${DOCKER_IMAGE}"
46
+ docker login "${DOCKER_HUB}" -u "${DOCKER_USER}" --password-stdin
47
+ docker image tag "${DOCKER_IMAGE}" "${PUB_IMAGE}"
48
+ docker image push "${PUB_IMAGE}"
49
+ }
50
+ echo "${{ secrets.DOCKER_IO_PASS }}" | publish
0 commit comments