Skip to content

Commit 8ffed5e

Browse files
Merge pull request #326 from MatteoPologruto/release-go-crosscompile-matrix
Build releases simultaneously in `release-go-crosscompile-task` workflow
2 parents 3056aa1 + 03e77c9 commit 8ffed5e

File tree

2 files changed

+23
-51
lines changed

2 files changed

+23
-51
lines changed

workflow-templates/assets/release-go-crosscompile-task/DistTasks.yml

-25
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,7 @@ version: "3"
1717
#
1818
# The project MUST contain a LICENSE.txt file in the root folder or packaging will fail.
1919

20-
vars:
21-
CHECKSUM_FILE: "{{.VERSION}}-checksums.txt"
22-
2320
tasks:
24-
all:
25-
desc: Build for distribution for all platforms
26-
cmds:
27-
- task: Windows_32bit
28-
- task: Windows_64bit
29-
- task: Linux_32bit
30-
- task: Linux_64bit
31-
- task: Linux_ARMv6
32-
- task: Linux_ARMv7
33-
- task: Linux_ARM64
34-
- task: macOS_64bit
35-
- task: macOS_ARM64
36-
3721
Windows_32bit:
3822
desc: Builds Windows 32 bit binaries
3923
env:
@@ -45,7 +29,6 @@ tasks:
4529
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}
4630
cd {{.DIST_DIR}}
4731
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
48-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
4932
vars:
5033
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_386"
5134
PACKAGE_PLATFORM: "Windows_32bit"
@@ -61,7 +44,6 @@ tasks:
6144
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe {{.LDFLAGS}}
6245
cd {{.DIST_DIR}}
6346
zip {{.PACKAGE_NAME}} {{.PLATFORM_DIR}}/{{.PROJECT_NAME}}.exe ../LICENSE.txt -j
64-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
6547
vars:
6648
PLATFORM_DIR: "{{.PROJECT_NAME}}_windows_amd64"
6749
PACKAGE_PLATFORM: "Windows_64bit"
@@ -78,7 +60,6 @@ tasks:
7860
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
7961
cd {{.DIST_DIR}}
8062
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
81-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
8263
vars:
8364
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd32"
8465
PACKAGE_PLATFORM: "Linux_32bit"
@@ -94,7 +75,6 @@ tasks:
9475
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
9576
cd {{.DIST_DIR}}
9677
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
97-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
9878
vars:
9979
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_amd64"
10080
PACKAGE_PLATFORM: "Linux_64bit"
@@ -111,7 +91,6 @@ tasks:
11191
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
11292
cd {{.DIST_DIR}}
11393
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
114-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
11594
vars:
11695
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_7"
11796
PACKAGE_PLATFORM: "Linux_ARMv7"
@@ -128,7 +107,6 @@ tasks:
128107
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
129108
cd {{.DIST_DIR}}
130109
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
131-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
132110
vars:
133111
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_6"
134112
PACKAGE_PLATFORM: "Linux_ARMv6"
@@ -144,7 +122,6 @@ tasks:
144122
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
145123
cd {{.DIST_DIR}}
146124
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
147-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
148125
vars:
149126
PLATFORM_DIR: "{{.PROJECT_NAME}}_linux_arm_64"
150127
PACKAGE_PLATFORM: "Linux_ARM64"
@@ -160,7 +137,6 @@ tasks:
160137
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
161138
cd {{.DIST_DIR}}
162139
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
163-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
164140
vars:
165141
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_amd64"
166142
PACKAGE_PLATFORM: "macOS_64bit"
@@ -176,7 +152,6 @@ tasks:
176152
go build -o {{.DIST_DIR}}/{{.PLATFORM_DIR}}/{{.PROJECT_NAME}} {{.LDFLAGS}}
177153
cd {{.DIST_DIR}}
178154
tar cz -C {{.PLATFORM_DIR}} {{.PROJECT_NAME}} -C ../.. LICENSE.txt -f {{.PACKAGE_NAME}}
179-
sha256sum {{.PACKAGE_NAME}} >> {{.CHECKSUM_FILE}}
180155
vars:
181156
PLATFORM_DIR: "{{.PROJECT_NAME}}_osx_darwin_arm64"
182157
PACKAGE_PLATFORM: "macOS_ARM64"

workflow-templates/release-go-crosscompile-task.yml

+23-26
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,28 @@ jobs:
2121
create-release-artifacts:
2222
runs-on: ubuntu-latest
2323

24+
strategy:
25+
matrix:
26+
os:
27+
- Windows_32bit
28+
- Windows_64bit
29+
- Linux_32bit
30+
- Linux_64bit
31+
- Linux_ARMv6
32+
- Linux_ARMv7
33+
- Linux_ARM64
34+
- macOS_64bit
35+
- macOS_ARM64
36+
2437
steps:
2538
- name: Checkout repository
2639
uses: actions/checkout@v3
2740
with:
2841
fetch-depth: 0
2942

3043
- name: Create changelog
44+
# Avoid creating the same changelog for each os
45+
if: matrix.os == 'Windows_32bit'
3146
uses: arduino/create-changelog@v1
3247
with:
3348
tag-regex: '^[0-9]+\.[0-9]+\.[0-9]+.*$'
@@ -47,7 +62,7 @@ jobs:
4762
version: 3.x
4863

4964
- name: Build
50-
run: task dist:all
65+
run: task dist:${{ matrix.os }}
5166

5267
- name: Upload artifacts
5368
uses: actions/upload-artifact@v3
@@ -60,9 +75,6 @@ jobs:
6075
name: Notarize ${{ matrix.artifact.name }}
6176
runs-on: macos-latest
6277
needs: create-release-artifacts
63-
outputs:
64-
checksum-darwin_amd64: ${{ steps.re-package.outputs.checksum-darwin_amd64 }}
65-
checksum-darwin_arm64: ${{ steps.re-package.outputs.checksum-darwin_arm64 }}
6678

6779
env:
6880
GON_CONFIG_PATH: gon.config.hcl
@@ -140,14 +152,10 @@ jobs:
140152
run: |
141153
gon "${{ env.GON_CONFIG_PATH }}"
142154
143-
- name: Re-package binary and output checksum
155+
- name: Re-package binary
144156
id: re-package
145157
working-directory: ${{ env.DIST_DIR }}
146-
# This step performs the following:
147-
# 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
148-
# 2. Recalculate package checksum
149-
# 3. Output the new checksum to include in the nnnnnn-checksums.txt file
150-
# (it cannot be done there because of workflow job parallelization)
158+
# Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
151159
run: |
152160
# GitHub's upload/download-artifact actions don't preserve file permissions,
153161
# so we need to add execution permission back until the action is made to do this.
@@ -157,11 +165,9 @@ jobs:
157165
tar -czvf "$PACKAGE_FILENAME" \
158166
-C "${{ env.PROJECT_NAME }}_osx_${{ matrix.artifact.name }}/" "${{ env.PROJECT_NAME }}" \
159167
-C ../../ LICENSE.txt
160-
CHECKSUM_LINE="$(shasum -a 256 $PACKAGE_FILENAME)"
161168
echo "PACKAGE_FILENAME=$PACKAGE_FILENAME" >> $GITHUB_ENV
162-
echo "checksum-${{ matrix.artifact.name }}=$CHECKSUM_LINE" >> $GITHUB_OUTPUT
163169
164-
- name: Upload artifacts
170+
- name: Upload artifact
165171
uses: actions/upload-artifact@v3
166172
with:
167173
if-no-files-found: error
@@ -179,20 +185,11 @@ jobs:
179185
name: ${{ env.ARTIFACT_NAME }}
180186
path: ${{ env.DIST_DIR }}
181187

182-
- name: Update checksum
188+
- name: Create checksum file
189+
working-directory: ${{ env.DIST_DIR}}
183190
run: |
184-
declare \
185-
-a \
186-
checksum_lines=(
187-
"${{ needs.notarize-macos.outputs.checksum-darwin_amd64 }}" \
188-
"${{ needs.notarize-macos.outputs.checksum-darwin_arm64 }}"
189-
)
190-
for checksum_line in "${checksum_lines[@]}"
191-
do
192-
CHECKSUM=$(echo ${checksum_line} | cut -d " " -f 1)
193-
PACKAGE_FILENAME=$(echo ${checksum_line} | cut -d " " -f 2)
194-
perl -pi -w -e "s/.*${PACKAGE_FILENAME}/${CHECKSUM} ${PACKAGE_FILENAME}/g;" ${{ env.DIST_DIR }}/*-checksums.txt
195-
done
191+
TAG="${GITHUB_REF/refs\/tags\//}"
192+
sha256sum ${{ env.PROJECT_NAME }}_${TAG}* > ${TAG}-checksums.txt
196193
197194
- name: Identify Prerelease
198195
# This is a workaround while waiting for create-release action

0 commit comments

Comments
 (0)