1
- name : release
1
+ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/release-go-task.md
2
+ name : Release
3
+
4
+ env :
5
+ # As defined by the Taskfile's PROJECT_NAME variable
6
+ PROJECT_NAME : arduino-fwuploader
7
+ # As defined by the Taskfile's DIST_DIR variable
8
+ DIST_DIR : dist
9
+ # The project's folder on Arduino's download server for uploading builds
10
+ AWS_PLUGIN_TARGET : /arduino-fwuploader/
11
+ ARTIFACT_NAME : dist
12
+ # See: https://github.com/actions/setup-go/tree/v2#readme
13
+ GO_VERSION : ^1.16.2
2
14
3
15
on :
4
16
push :
@@ -10,66 +22,76 @@ jobs:
10
22
runs-on : ubuntu-latest
11
23
12
24
steps :
13
- - name : Checkout
25
+ - name : Checkout repository
14
26
uses : actions/checkout@v2
15
27
with :
16
28
fetch-depth : 0
17
29
18
30
- name : Create changelog
19
31
uses : arduino/create-changelog@v1
20
32
with :
21
- tag-regex : ' ^[0-9]+\.[0-9]+\.[0-9]+$'
33
+ tag-regex : ' ^[0-9]+\.[0-9]+\.[0-9]+.* $'
22
34
filter-regex : ' ^\[(skip|changelog)[ ,-](skip|changelog)\].*'
23
35
case-insensitive-regex : true
24
- changelog-file-path : " dist /CHANGELOG.md"
36
+ changelog-file-path : " ${{ env.DIST_DIR }} /CHANGELOG.md"
25
37
26
- - name : Install Taskfile
38
+ - name : Install Go
39
+ uses : actions/setup-go@v2
40
+ with :
41
+ go-version : ${{ env.GO_VERSION }}
42
+
43
+ - name : Install Task
27
44
uses : arduino/setup-task@v1
28
45
with :
29
46
repo-token : ${{ secrets.GITHUB_TOKEN }}
30
47
version : 3.x
31
48
32
- - uses : actions/setup-go@v2
33
- with :
34
- go-version : " ^1.16.2"
35
-
36
49
- name : Build
37
50
run : task dist:all
38
51
39
52
- name : Upload artifacts
40
53
uses : actions/upload-artifact@v2
41
54
with :
42
- name : dist
43
- path : dist
55
+ if-no-files-found : error
56
+ name : ${{ env.ARTIFACT_NAME }}
57
+ path : ${{ env.DIST_DIR }}
44
58
45
59
notarize-macos :
46
60
runs-on : macos-latest
47
61
needs : create-release-artifacts
48
62
49
63
steps :
50
- - name : Checkout
64
+ - name : Checkout repository
51
65
uses : actions/checkout@v2
52
66
53
67
- name : Download artifacts
54
68
uses : actions/download-artifact@v2
55
69
with :
56
- name : dist
57
- # to ensure compatibility with v1
58
- # https://github.com/actions/download-artifact#compatibility-between-v1-and-v2
59
- path : dist
70
+ name : ${{ env.ARTIFACT_NAME }}
71
+ path : ${{ env.DIST_DIR }}
60
72
61
73
- name : Import Code-Signing Certificates
62
74
env :
63
75
KEYCHAIN : " sign.keychain"
64
76
INSTALLER_CERT_MAC_PATH : " /tmp/ArduinoCerts2020.p12"
65
77
KEYCHAIN_PASSWORD : keychainpassword # Arbitrary password for a keychain that exists only for the duration of the job, so not secret
66
78
run : |
67
- echo "${{ secrets.INSTALLER_CERT_MAC_P12 }}" | base64 --decode > ${{ env.INSTALLER_CERT_MAC_PATH }}
68
- security create-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
69
- security default-keychain -s ${{ env.KEYCHAIN }}
70
- security unlock-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
71
- security import ${{ env.INSTALLER_CERT_MAC_PATH }} -k ${{ env.KEYCHAIN }} -f pkcs12 -A -T /usr/bin/codesign -P "${{ secrets.INSTALLER_CERT_MAC_PASSWORD }}"
72
- security set-key-partition-list -S apple-tool:,apple: -s -k ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
79
+ echo "${{ secrets.INSTALLER_CERT_MAC_P12 }}" | base64 --decode > "${{ env.INSTALLER_CERT_MAC_PATH }}"
80
+ security create-keychain -p "${{ env.KEYCHAIN_PASSWORD }}" "${{ env.KEYCHAIN }}"
81
+ security default-keychain -s "${{ env.KEYCHAIN }}"
82
+ security unlock-keychain -p "${{ env.KEYCHAIN_PASSWORD }}" "${{ env.KEYCHAIN }}"
83
+ security import \
84
+ "${{ env.INSTALLER_CERT_MAC_PATH }}" \
85
+ -k "${{ env.KEYCHAIN }}" \
86
+ -f pkcs12 \
87
+ -A \
88
+ -T "/usr/bin/codesign" \
89
+ -P "${{ secrets.INSTALLER_CERT_MAC_PASSWORD }}"
90
+ security set-key-partition-list \
91
+ -S apple-tool:,apple: \
92
+ -s \
93
+ -k "${{ env.KEYCHAIN_PASSWORD }}" \
94
+ "${{ env.KEYCHAIN }}"
73
95
74
96
- name : Install gon for code signing and app notarization
75
97
run : |
@@ -83,22 +105,24 @@ jobs:
83
105
run : |
84
106
gon gon.config.hcl
85
107
86
- - name : Re-package binary and update checksum
87
- # Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
108
+ - name : Re-package binary
109
+ # This step performs the following:
110
+ # 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
88
111
run : |
89
112
# GitHub's upload/download-artifact@v2 actions don't preserve file permissions,
90
- # so we need to add execution permission back.
91
- chmod +x dist /macos64/arduino-fwuploader
92
- TAG=${GITHUB_REF/refs\/tags\//}
93
- tar czf dist/arduino-fwuploader_${ TAG}_macOS_64bit.tar.gz \
94
- LICENSE.txt \
95
- -C dist /macos64/ arduino-fwuploader
113
+ # so we need to add execution permission back until the action is made to do this .
114
+ chmod +x ${{ env.DIST_DIR }} /macos64/${{ env.PROJECT_NAME }}
115
+ TAG=" ${GITHUB_REF/refs\/tags\//}"
116
+ tar -czvf "${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}_${ TAG}_macOS_64bit.tar.gz" \
117
+ LICENSE.txt \
118
+ -C ${{ env.DIST_DIR }} /macos64/ ${{ env.PROJECT_NAME }}
96
119
97
120
- name : Upload artifacts
98
121
uses : actions/upload-artifact@v2
99
122
with :
100
- name : dist
101
- path : dist
123
+ if-no-files-found : error
124
+ name : ${{ env.ARTIFACT_NAME }}
125
+ path : ${{ env.DIST_DIR }}
102
126
103
127
create-release :
104
128
runs-on : ubuntu-latest
@@ -111,10 +135,8 @@ jobs:
111
135
- name : Download artifact
112
136
uses : actions/download-artifact@v2
113
137
with :
114
- name : dist
115
- # to ensure compatibility with v1
116
- # https://github.com/actions/download-artifact#compatibility-between-v1-and-v2
117
- path : dist
138
+ name : ${{ env.ARTIFACT_NAME }}
139
+ path : ${{ env.DIST_DIR }}
118
140
119
141
- name : Install Taskfile
120
142
uses : arduino/setup-task@v1
@@ -134,23 +156,23 @@ jobs:
134
156
run : |
135
157
wget -q -P /tmp https://github.com/fsaintjacques/semver-tool/archive/3.0.0.zip
136
158
unzip -p /tmp/3.0.0.zip semver-tool-3.0.0/src/semver >/tmp/semver && chmod +x /tmp/semver
137
- if [[ $(/tmp/semver get prerel ${GITHUB_REF/refs\/tags\//}) ]]; then echo "::set-output name=IS_PRE::true"; fi
159
+ if [[ " $(/tmp/semver get prerel " ${GITHUB_REF/refs\/tags\//}")" ]]; then echo "::set-output name=IS_PRE::true"; fi
138
160
139
161
- name : Create Github Release and upload artifacts
140
162
uses : ncipollo/release-action@v1
141
163
with :
142
164
token : ${{ secrets.GITHUB_TOKEN }}
143
- bodyFile : " dist /CHANGELOG.md"
165
+ bodyFile : ${{ env.DIST_DIR }} /CHANGELOG.md
144
166
draft : false
145
167
prerelease : ${{ steps.prerelease.outputs.IS_PRE }}
146
- artifacts : dist /arduino-fwuploader*,dist /package_index.json
168
+ artifacts : ${{ env.DIST_DIR }} /arduino-fwuploader*,${{ env.DIST_DIR }} /package_index.json
147
169
148
170
- name : Upload release files on Arduino downloads servers
149
171
uses : docker://plugins/s3
150
172
env :
151
- PLUGIN_SOURCE : " dist /arduino-fwuploader*"
152
- PLUGIN_TARGET : " /arduino-fwuploader/ "
153
- PLUGIN_STRIP_PREFIX : " dist /"
173
+ PLUGIN_SOURCE : " ${{ env.DIST_DIR }} /arduino-fwuploader*"
174
+ PLUGIN_TARGET : ${{ env.AWS_PLUGIN_TARGET }}
175
+ PLUGIN_STRIP_PREFIX : " ${{ env.DIST_DIR }} /"
154
176
PLUGIN_BUCKET : ${{ secrets.DOWNLOADS_BUCKET }}
155
177
AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
156
178
AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
0 commit comments