Skip to content

Commit 88c3250

Browse files
[stable2407] Backport docker fix to 2407 (#6017)
This PR backports fixes for the docker publishing flow from master: - #5896 - #5387
1 parent f72fe54 commit 88c3250

5 files changed

Lines changed: 110 additions & 22 deletions

File tree

.github/scripts/common/lib.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ fetch_release_artifacts() {
242242
# - GITHUB_TOKEN
243243
# - REPO in the form paritytech/polkadot
244244
fetch_release_artifacts_from_s3() {
245+
BINARY=$1
245246
echo "Version : $VERSION"
246247
echo "Repo : $REPO"
247248
echo "Binary : $BINARY"
@@ -461,7 +462,7 @@ function get_polkadot_node_version_from_code() {
461462

462463
validate_stable_tag() {
463464
tag="$1"
464-
pattern='^stable[0-9]+(-[0-9]+)?$'
465+
pattern="^stable[0-9]{4}(-[0-9]+)?(-rc[0-9]+)?$"
465466

466467
if [[ $tag =~ $pattern ]]; then
467468
echo $tag

.github/workflows/release-50_publish-docker.yml

Lines changed: 54 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -75,39 +75,43 @@ env:
7575
# EVENT_ACTION: ${{ github.event.action }}
7676
EVENT_NAME: ${{ github.event_name }}
7777
IMAGE_TYPE: ${{ inputs.image_type }}
78-
VERSION: ${{ inputs.version }}
7978

8079
jobs:
8180
validate-inputs:
8281
runs-on: ubuntu-latest
8382
outputs:
83+
version: ${{ steps.validate_inputs.outputs.VERSION }}
84+
release_id: ${{ steps.validate_inputs.outputs.RELEASE_ID }}
8485
stable_tag: ${{ steps.validate_inputs.outputs.stable_tag }}
8586

8687
steps:
8788
- name: Checkout sources
88-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
89+
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
8990

9091
- name: Validate inputs
9192
id: validate_inputs
9293
run: |
9394
. ./.github/scripts/common/lib.sh
9495
9596
VERSION=$(filter_version_from_input "${{ inputs.version }}")
96-
echo "VERSION=${VERSION}" >> $GITHUB_ENV
97+
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
9798
9899
RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
99-
echo "RELEASE_ID=${RELEASE_ID}" >> $GITHUB_ENV
100+
echo "RELEASE_ID=${RELEASE_ID}" >> $GITHUB_OUTPUT
101+
102+
echo "Release ID: $RELEASE_ID"
100103
101104
STABLE_TAG=$(validate_stable_tag ${{ inputs.stable_tag }})
102105
echo "stable_tag=${STABLE_TAG}" >> $GITHUB_OUTPUT
103106
104107
fetch-artifacts: # this job will be triggered for the polkadot-parachain rc and release or polkadot rc image build
105108
if: ${{ inputs.binary == 'polkadot-parachain' || inputs.binary == 'chain-spec-builder' || inputs.image_type == 'rc' }}
106109
runs-on: ubuntu-latest
110+
needs: [validate-inputs]
107111

108112
steps:
109113
- name: Checkout sources
110-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
114+
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
111115

112116
#TODO: this step will be needed when automated triggering will work
113117
#this step runs only if the workflow is triggered automatically when new release is published
@@ -129,14 +133,23 @@ jobs:
129133
run: |
130134
. ./.github/scripts/common/lib.sh
131135
132-
fetch_release_artifacts_from_s3
136+
VERSION="${{ needs.validate-inputs.outputs.VERSION }}"
137+
if [[ ${{ inputs.binary }} == 'polkadot' ]]; then
138+
bins=(polkadot polkadot-prepare-worker polkadot-execute-worker)
139+
for bin in "${bins[@]}"; do
140+
fetch_release_artifacts_from_s3 $bin
141+
done
142+
else
143+
fetch_release_artifacts_from_s3 $BINARY
144+
fi
133145
134146
- name: Fetch chain-spec-builder rc artifacts or release artifacts based on release id
135147
#this step runs only if the workflow is triggered manually and only for chain-spec-builder
136148
if: ${{ env.EVENT_NAME == 'workflow_dispatch' && inputs.binary == 'chain-spec-builder' }}
137149
run: |
138150
. ./.github/scripts/common/lib.sh
139151
152+
RELEASE_ID="${{ needs.validate-inputs.outputs.RELEASE_ID }}"
140153
fetch_release_artifacts
141154
142155
- name: Upload artifacts
@@ -153,7 +166,7 @@ jobs:
153166

154167
steps:
155168
- name: Checkout sources
156-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
169+
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
157170

158171
- name: Download artifacts
159172
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
@@ -181,32 +194,45 @@ jobs:
181194
run: |
182195
. ./.github/scripts/common/lib.sh
183196
184-
RELEASE_ID=$(check_release_id "${{ inputs.release_id }}")
185-
release=release-$RELEASE_ID && \
186-
echo "release=${release}" >> $GITHUB_OUTPUT
197+
echo "release=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
187198
188199
commit=$(git rev-parse --short HEAD) && \
189200
echo "commit=${commit}" >> $GITHUB_OUTPUT
190201
191-
tag=$(git name-rev --tags --name-only $(git rev-parse HEAD)) && \
192-
[ "${tag}" != "undefined" ] && echo "tag=${tag}" >> $GITHUB_OUTPUT || \
193-
echo "No tag, doing without"
202+
echo "tag=${{ needs.validate-inputs.outputs.version }}" >> $GITHUB_OUTPUT
194203
195204
- name: Fetch release tags
196205
working-directory: release-artifacts
197206
if: ${{ env.IMAGE_TYPE == 'release'}}
198207
id: fetch_release_refs
199208
run: |
200209
chmod a+rx $BINARY
201-
[[ $BINARY != 'chain-spec-builder' ]] && VERSION=$(./$BINARY --version | awk '{ print $2 }' )
202210
203-
release=$( echo $VERSION | cut -f1 -d- )
211+
if [[ $BINARY != 'chain-spec-builder' ]]; then
212+
VERSION=$(./$BINARY --version | awk '{ print $2 }' )
213+
release=$( echo $VERSION | cut -f1 -d- )
214+
else
215+
release=$(echo ${{ needs.validate-inputs.outputs.VERSION }} | sed 's/^v//')
216+
fi
217+
204218
echo "tag=latest" >> $GITHUB_OUTPUT
205219
echo "release=${release}" >> $GITHUB_OUTPUT
206220
echo "stable=${{ needs.validate-inputs.outputs.stable_tag }}" >> $GITHUB_OUTPUT
207221
208-
- name: Build Injected Container image for polkadot rc or chain-spec-builder
209-
if: ${{ env.BINARY == 'polkadot' || env.BINARY == 'chain-spec-builder' }}
222+
- name: Build Injected Container image for polkadot rc
223+
if: ${{ env.BINARY == 'polkadot' }}
224+
env:
225+
ARTIFACTS_FOLDER: release-artifacts
226+
IMAGE_NAME: ${{ env.BINARY }}
227+
OWNER: ${{ env.DOCKER_OWNER }}
228+
TAGS: ${{ join(steps.fetch_rc_refs.outputs.*, ',') || join(steps.fetch_release_refs.outputs.*, ',') }}
229+
run: |
230+
ls -al
231+
echo "Building container for $BINARY"
232+
./docker/scripts/polkadot/build-injected.sh $ARTIFACTS_FOLDER
233+
234+
- name: Build Injected Container image chain-spec-builder
235+
if: ${{ env.BINARY == 'chain-spec-builder' }}
210236
env:
211237
ARTIFACTS_FOLDER: release-artifacts
212238
IMAGE_NAME: ${{ env.BINARY }}
@@ -233,8 +259,16 @@ jobs:
233259
echo "Building container for $BINARY"
234260
./docker/scripts/build-injected.sh
235261
236-
- name: Login to Dockerhub
237-
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
262+
- name: Login to Dockerhub to publish polkadot
263+
if: ${{ env.BINARY == 'polkadot' }}
264+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
265+
with:
266+
username: ${{ secrets.POLKADOT_DOCKERHUB_USERNAME }}
267+
password: ${{ secrets.POLKADOT_DOCKERHUB_TOKEN }}
268+
269+
- name: Login to Dockerhub to puiblish polkadot-parachain/chain-spec-builder
270+
if: ${{ env.BINARY == 'polkadot-parachain' || env.BINARY == 'chain-spec-builder' }}
271+
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
238272
with:
239273
username: ${{ secrets.CUMULUS_DOCKERHUB_USERNAME }}
240274
password: ${{ secrets.CUMULUS_DOCKERHUB_TOKEN }}
@@ -285,7 +319,7 @@ jobs:
285319
environment: release
286320
steps:
287321
- name: Checkout sources
288-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
322+
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
289323

290324
- name: Set up Docker Buildx
291325
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
FROM docker.io/parity/base-bin
2+
3+
# metadata
4+
ARG VCS_REF
5+
ARG BUILD_DATE
6+
ARG IMAGE_NAME
7+
# That can be a single one or a comma separated list
8+
ARG BINARY=polkadot
9+
10+
LABEL io.parity.image.authors="[email protected]" \
11+
io.parity.image.vendor="Parity Technologies" \
12+
io.parity.image.title="parity/polkadot" \
13+
io.parity.image.description="Polkadot: a platform for web3. This is the official Parity image with an injected binary." \
14+
io.parity.image.source="https://github.com/paritytech/polkadot-sdk/blob/${VCS_REF}/docker/dockerfiles/polkadot/polkadot_injected.Dockerfile" \
15+
io.parity.image.revision="${VCS_REF}" \
16+
io.parity.image.created="${BUILD_DATE}" \
17+
io.parity.image.documentation="https://github.com/paritytech/polkadot-sdk/"
18+
19+
# show backtraces
20+
ENV RUST_BACKTRACE 1
21+
22+
USER root
23+
WORKDIR /app
24+
25+
# add polkadot and polkadot-*-worker binaries to the docker image
26+
COPY bin/* /usr/local/bin/
27+
COPY entrypoint.sh .
28+
29+
30+
RUN chmod -R a+rx "/usr/local/bin"; \
31+
mkdir -p /data /polkadot/.local/share && \
32+
chown -R parity:parity /data && \
33+
ln -s /data /polkadot/.local/share/polkadot
34+
35+
USER parity
36+
37+
# check if executable works in this container
38+
RUN /usr/local/bin/polkadot --version
39+
RUN /usr/local/bin/polkadot-prepare-worker --version
40+
RUN /usr/local/bin/polkadot-execute-worker --version
41+
42+
43+
EXPOSE 30333 9933 9944 9615
44+
VOLUME ["/polkadot"]
45+
46+
ENV BINARY=${BINARY}
47+
48+
# ENTRYPOINT
49+
ENTRYPOINT ["/app/entrypoint.sh"]
50+
51+
# We call the help by default
52+
CMD ["--help"]

docker/scripts/build-injected.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ VCS_REF=${VCS_REF:-01234567}
4040
echo "Using engine: $ENGINE"
4141
echo "Using Dockerfile: $DOCKERFILE"
4242
echo "Using context: $CONTEXT"
43-
echo "Building ${IMAGE}:latest container image for ${BINARY} v${VERSION} from ${ARTIFACTS_FOLDER} hang on!"
43+
echo "Building ${IMAGE}:latest container image for ${BINARY} ${VERSION} from ${ARTIFACTS_FOLDER} hang on!"
4444
echo "ARTIFACTS_FOLDER=$ARTIFACTS_FOLDER"
4545
echo "CONTEXT=$CONTEXT"
4646

docker/scripts/polkadot/build-injected.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ PROJECT_ROOT=`git rev-parse --show-toplevel`
99

1010
export BINARY=polkadot,polkadot-execute-worker,polkadot-prepare-worker
1111
export ARTIFACTS_FOLDER=$1
12+
export DOCKERFILE="docker/dockerfiles/polkadot/polkadot_injected.Dockerfile"
1213

1314
$PROJECT_ROOT/docker/scripts/build-injected.sh

0 commit comments

Comments
 (0)