Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a58dfe9

Browse files
authored
Merge pull request #120 from arduino/scerza/new-release-process
[skip changelog] New release process that doesn't use goreleaser
2 parents 2573f87 + d19e1ea commit a58dfe9

File tree

9 files changed

+423
-10
lines changed

9 files changed

+423
-10
lines changed

‎.github/workflows/release.yml‎

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- "[0-9]+.[0-9]+.[0-9]+*"
7+
8+
jobs:
9+
create-release-artifacts:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v1
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Create changelog
19+
uses: arduino/create-changelog@1.0.0
20+
with:
21+
tag-regex: '^[0-9]+\.[0-9]+\.[0-9]+$'
22+
filter-regex: '^\[([sS][kK][iI][pP]|[cC][hH][aA][nN][gG][eE][lL][oO][gG])[ ,-]([cC][hH][aA][nN][gG][eE][lL][oO][gG]|[sS][kK][iI][pP])\].*'
23+
changelog-file-path: "dist/CHANGELOG.md"
24+
25+
- name: Install Taskfile
26+
uses: arduino/actions/setup-taskfile@master
27+
with:
28+
repo-token: ${{ secrets.GITHUB_TOKEN }}
29+
version: 3.x
30+
31+
- name: Build
32+
run: task dist:all
33+
34+
- name: Upload artifacts
35+
uses: actions/upload-artifact@v2
36+
with:
37+
name: dist
38+
path: dist
39+
40+
notarize-macos:
41+
runs-on: macos-latest
42+
needs: create-release-artifacts
43+
44+
steps:
45+
- name: Checkout
46+
uses: actions/checkout@v2
47+
48+
- name: Download artifacts
49+
uses: actions/download-artifact@v2
50+
with:
51+
name: dist
52+
# to ensure compatibility with v1
53+
path: dist
54+
55+
- name: Import Code-Signing Certificates
56+
env:
57+
KEYCHAIN: "sign.keychain"
58+
INSTALLER_CERT_MAC_PATH: "/tmp/ArduinoCerts2020.p12"
59+
KEYCHAIN_PASSWORD: keychainpassword # Arbitrary password for a keychain that exists only for the duration of the job, so not secret
60+
run: |
61+
echo "${{ secrets.INSTALLER_CERT_MAC_P12 }}" | base64 --decode > ${{ env.INSTALLER_CERT_MAC_PATH }}
62+
security create-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
63+
security default-keychain -s ${{ env.KEYCHAIN }}
64+
security unlock-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
65+
security import ${{ env.INSTALLER_CERT_MAC_PATH }} -k ${{ env.KEYCHAIN }} -f pkcs12 -A -T /usr/bin/codesign -P ${{ secrets.INSTALLER_CERT_MAC_PASSWORD }}
66+
security set-key-partition-list -S apple-tool:,apple: -s -k ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
67+
68+
- name: Install gon for code signing and app notarization
69+
run: |
70+
wget -q https://github.com/mitchellh/gon/releases/download/v0.2.3/gon_macos.zip
71+
unzip gon_macos.zip -d /usr/local/bin
72+
73+
- name: Sign and notarize binary
74+
env:
75+
AC_USERNAME: ${{ secrets.AC_USERNAME }}
76+
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
77+
run: |
78+
gon gon.config.hcl
79+
80+
- name: Re-package binary and update checksum
81+
# This step performs the following:
82+
# 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
83+
# 2. Recalculate package checksum and replace it in the goreleaser nnnnnn-checksums.txt file
84+
run: |
85+
# GitHub's upload/download-artifact@v2 action doesn't preserve file permissions,
86+
# so we need to add execution permission back until the action is made to do this.
87+
chmod +x dist/arduino-lint_osx_darwin_amd64/arduino-lint
88+
TAG=${GITHUB_REF/refs\/tags\//}
89+
tar -czvf dist/arduino-lint_${TAG}_macOS_64bit.tar.gz \
90+
-C dist/arduino-lint_osx_darwin_amd64/ arduino-lint \
91+
-C ../../ LICENSE.txt
92+
LINT_CHECKSUM=$(shasum -a 256 dist/arduino-lint_${TAG}_macOS_64bit.tar.gz | cut -d " " -f 1)
93+
perl -pi -w -e "s/.*arduino-lint_${TAG}_macOS_64bit.tar.gz/${LINT_CHECKSUM} arduino-lint_${TAG}_macOS_64bit.tar.gz/g;" dist/*-checksums.txt
94+
95+
- name: Upload artifacts
96+
uses: actions/upload-artifact@v2
97+
with:
98+
name: dist
99+
path: dist
100+
101+
create-release:
102+
runs-on: ubuntu-latest
103+
needs: notarize-macos
104+
105+
steps:
106+
- name: Checkout
107+
uses: actions/checkout@v2
108+
109+
- name: Download artifact
110+
uses: actions/download-artifact@v2
111+
with:
112+
name: dist
113+
# to ensure compatibility with v1
114+
path: dist
115+
116+
- name: Read CHANGELOG
117+
id: changelog
118+
run: |
119+
body=$(cat dist/CHANGELOG.md)
120+
body="${body//'%'/'%25'}"
121+
body="${body//$'\n'/'%0A'}"
122+
body="${body//$'\r'/'%0D'}"
123+
echo $body
124+
echo "::set-output name=BODY::$body"
125+
126+
- name: Identify Prerelease
127+
# This is a workaround while waiting for create-release action
128+
# to implement auto pre-release based on tag
129+
id: prerelease
130+
run: |
131+
wget -q -P /tmp https://github.com/fsaintjacques/semver-tool/archive/3.0.0.zip
132+
unzip -p /tmp/3.0.0.zip semver-tool-3.0.0/src/semver >/tmp/semver && chmod +x /tmp/semver
133+
if [[ $(/tmp/semver get prerel ${GITHUB_REF/refs\/tags\//}) ]]; then echo "::set-output name=IS_PRE::true"; fi
134+
135+
- name: Create Github Release
136+
id: create_release
137+
uses: actions/create-release@v1
138+
env:
139+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
140+
with:
141+
tag_name: ${{ github.ref }}
142+
release_name: ${{ github.ref }}
143+
body: ${{ steps.changelog.outputs.BODY }}
144+
draft: false
145+
prerelease: ${{ steps.prerelease.outputs.IS_PRE }}
146+
147+
- name: Upload release files on Github
148+
uses: svenstaro/upload-release-action@v2
149+
with:
150+
repo_token: ${{ secrets.GITHUB_TOKEN }}
151+
file: dist/*
152+
tag: ${{ github.ref }}
153+
file_glob: true
154+
155+
- name: Upload release files on Arduino downloads servers
156+
uses: docker://plugins/s3
157+
env:
158+
PLUGIN_SOURCE: "dist/*"
159+
PLUGIN_TARGET: "/arduino-lint/"
160+
PLUGIN_STRIP_PREFIX: "dist/"
161+
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
162+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
163+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

‎.gitignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ coverage_unit.txt
1818
/docsgen/arduino-cli
1919
/docsgen/arduino-cli.exe
2020
/docs/commands/*.md
21+
22+
/dist

‎DistTasks.yml‎

Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
version: "3"
2+
3+
tasks:
4+
all:
5+
desc: Build for distribution for all platforms
6+
cmds:
7+
- task: Windows_32bit
8+
- task: Windows_64bit
9+
- task: Linux_32bit
10+
- task: Linux_64bit
11+
- task: Linux_ARMv6
12+
- task: Linux_ARMv7
13+
- task: Linux_ARM64
14+
- task: macOS_64bit
15+
16+
Windows_32bit:
17+
desc: Builds Windows 32 bit binaries
18+
dir: "{{ .DIST_DIR }}"
19+
cmds:
20+
- |
21+
docker run -v `pwd`/..:/home/lint -w /home/lint \
22+
-e CGO_ENABLED=1 \
23+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
24+
--build-cmd "{{ .BUILD_COMMAND }}" \
25+
-p "{{ .BUILD_PLATFORM }}"
26+
27+
zip {{ .PACKAGE_NAME}} {{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe ../LICENSE.txt -j
28+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
29+
30+
vars:
31+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_windows_386"
32+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .DIST_LDFLAGS }}"
33+
BUILD_PLATFORM: "windows/386"
34+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
35+
PACKAGE_PLATFORM: "Windows_32bit"
36+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
37+
38+
Windows_64bit:
39+
desc: Builds Windows 64 bit binaries
40+
dir: "{{ .DIST_DIR }}"
41+
cmds:
42+
- |
43+
docker run -v `pwd`/..:/home/lint -w /home/lint \
44+
-e CGO_ENABLED=1 \
45+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
46+
--build-cmd "{{ .BUILD_COMMAND }}" \
47+
-p "{{ .BUILD_PLATFORM }}"
48+
49+
zip {{ .PACKAGE_NAME}} {{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe ../LICENSE.txt -j
50+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
51+
52+
vars:
53+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_windows_amd64"
54+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }}.exe {{ .DIST_LDFLAGS }}"
55+
BUILD_PLATFORM: "windows/amd64"
56+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
57+
PACKAGE_PLATFORM: "Windows_64bit"
58+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.zip"
59+
60+
Linux_32bit:
61+
desc: Builds Linux 32 bit binaries
62+
dir: "{{ .DIST_DIR }}"
63+
cmds:
64+
- |
65+
docker run -v `pwd`/..:/home/lint -w /home/lint \
66+
-e CGO_ENABLED=1 \
67+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
68+
--build-cmd "{{ .BUILD_COMMAND }}" \
69+
-p "{{ .BUILD_PLATFORM }}"
70+
71+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
72+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
73+
74+
vars:
75+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_amd32"
76+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
77+
BUILD_PLATFORM: "linux/386"
78+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
79+
PACKAGE_PLATFORM: "Linux_32bit"
80+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
81+
82+
Linux_64bit:
83+
desc: Builds Linux 64 bit binaries
84+
dir: "{{ .DIST_DIR }}"
85+
cmds:
86+
- |
87+
docker run -v `pwd`/..:/home/lint -w /home/lint \
88+
-e CGO_ENABLED=1 \
89+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
90+
--build-cmd "{{ .BUILD_COMMAND }}" \
91+
-p "{{ .BUILD_PLATFORM }}"
92+
93+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
94+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
95+
96+
vars:
97+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_amd64"
98+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
99+
BUILD_PLATFORM: "linux/amd64"
100+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
101+
PACKAGE_PLATFORM: "Linux_64bit"
102+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
103+
104+
Linux_ARMv7:
105+
desc: Builds Linux ARMv7 binaries
106+
dir: "{{ .DIST_DIR }}"
107+
cmds:
108+
- |
109+
docker run -v `pwd`/..:/home/lint -w /home/lint \
110+
-e CGO_ENABLED=1 \
111+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
112+
--build-cmd "{{ .BUILD_COMMAND }}" \
113+
-p "{{ .BUILD_PLATFORM }}"
114+
115+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
116+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
117+
118+
vars:
119+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_7"
120+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
121+
BUILD_PLATFORM: "linux/armv7"
122+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
123+
PACKAGE_PLATFORM: "Linux_ARMv7"
124+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
125+
126+
Linux_ARMv6:
127+
desc: Builds Linux ARMv6 binaries
128+
dir: "{{ .DIST_DIR }}"
129+
cmds:
130+
- |
131+
docker run -v `pwd`/..:/home/lint -w /home/lint \
132+
-e CGO_ENABLED=1 \
133+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
134+
--build-cmd "{{ .BUILD_COMMAND }}" \
135+
-p "{{ .BUILD_PLATFORM }}"
136+
137+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
138+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
139+
140+
vars:
141+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_6"
142+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
143+
BUILD_PLATFORM: "linux/armv6"
144+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
145+
PACKAGE_PLATFORM: "Linux_ARMv6"
146+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
147+
148+
Linux_ARM64:
149+
desc: Builds Linux ARM64 binaries
150+
dir: "{{ .DIST_DIR }}"
151+
cmds:
152+
- |
153+
docker run -v `pwd`/..:/home/lint -w /home/lint \
154+
-e CGO_ENABLED=1 \
155+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
156+
--build-cmd "{{ .BUILD_COMMAND }}" \
157+
-p "{{ .BUILD_PLATFORM }}"
158+
159+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
160+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
161+
162+
vars:
163+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_linux_arm_6"
164+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
165+
BUILD_PLATFORM: "linux/arm64"
166+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
167+
PACKAGE_PLATFORM: "Linux_ARM64"
168+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
169+
170+
macOS_64bit:
171+
desc: Builds Mac OS X 64 bit binaries
172+
dir: "{{ .DIST_DIR }}"
173+
cmds:
174+
- |
175+
docker run -v `pwd`/..:/home/lint -w /home/lint \
176+
-e CGO_ENABLED=1 \
177+
{{ .CONTAINER }}:{{ .CONTAINER_TAG }} \
178+
--build-cmd "{{ .BUILD_COMMAND }}" \
179+
-p "{{ .BUILD_PLATFORM }}"
180+
181+
tar cz -C {{ .PLATFORM_DIR }} {{ .PROJECT_NAME }} -C ../.. LICENSE.txt -f {{ .PACKAGE_NAME }}
182+
sha256sum {{ .PACKAGE_NAME }} >> {{ .CHECKSUM_FILE }}
183+
184+
vars:
185+
PLATFORM_DIR: "{{ .PROJECT_NAME }}_osx_darwin_amd64"
186+
BUILD_COMMAND: "go build -o {{ .DIST_DIR }}/{{ .PLATFORM_DIR }}/{{ .PROJECT_NAME }} {{ .DIST_LDFLAGS }}"
187+
BUILD_PLATFORM: "darwin/amd64"
188+
CONTAINER_TAG: "{{ .GO_VERSION }}-darwin"
189+
PACKAGE_PLATFORM: "macOS_64bit"
190+
PACKAGE_NAME: "{{ .PROJECT_NAME }}_{{ .VERSION }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
191+
192+
vars:
193+
VERSION:
194+
sh: echo "`git describe --tags --abbrev=0`"
195+
TIMESTAMP_SHORT:
196+
sh: echo "{{now | date "20060102"}}"
197+
DIST_LDFLAGS: >-
198+
-ldflags
199+
'
200+
-X {{ .CONFIGURATION_PACKAGE }}.version={{.VERSION}}
201+
-X {{ .CONFIGURATION_PACKAGE }}.commit={{.COMMIT}}
202+
-X {{ .CONFIGURATION_PACKAGE }}.buildTimestamp={{.TIMESTAMP}}
203+
'
204+
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
205+
GO_VERSION: "1.14.7"
206+
CHECKSUM_FILE: "{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}-checksums.txt"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /