77
88env :
99 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-' ) }}
1116
1217jobs :
1318 build :
@@ -19,41 +24,27 @@ jobs:
1924 - name : Initialize Environment
2025 run : |
2126 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}"
2430
2531 - name : Build Docker Image
2632 run : |
2733 set -eux
28-
29- # GITHUB_WORKSPACE may be relative to "/".
30- cd /
31- cd "${GITHUB_WORKSPACE}"
32-
3334 docker build \
3435 --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}" \
3738 .
3839
3940 - name : Publish Docker Image
41+ if : env.IS_RELEASE == 'true'
4042 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