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 fa820ac

Browse files
silvanocerzaper1234
authored andcommitted
[skip changelog] Update release process to ditch goreleaser
1 parent 2573f87 commit fa820ac

File tree

4 files changed

+363
-0
lines changed

4 files changed

+363
-0
lines changed

‎.github/workflows/release.yml‎

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
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: '^(?i)\[(skip|changelog)[ ,-](skip|changelog)\].*'
23+
changelog-file-path: "dist/CHANGELOG.md"
24+
25+
- name: Build
26+
run: task dist:all
27+
28+
- name: Upload artifacts
29+
uses: actions/upload-artifact@v2
30+
with:
31+
name: dist
32+
path: dist
33+
34+
notarize-macos:
35+
runs-on: macos-latest
36+
needs: create-release-artifacts
37+
38+
steps:
39+
- name: Checkout
40+
uses: actions/checkout@v2
41+
42+
- name: Download artifacts
43+
uses: actions/download-artifact@v2
44+
with:
45+
name: dist
46+
# to ensure compatibility with v1
47+
path: dist
48+
49+
- name: Import Code-Signing Certificates
50+
env:
51+
KEYCHAIN: "sign.keychain"
52+
INSTALLER_CERT_MAC_PATH: "/tmp/ArduinoCerts2020.p12"
53+
KEYCHAIN_PASSWORD: keychainpassword # Arbitrary password for a keychain that exists only for the duration of the job, so not secret
54+
run: |
55+
echo "${{ secrets.INSTALLER_CERT_MAC_P12 }}" | base64 --decode > ${{ env.INSTALLER_CERT_MAC_PATH }}
56+
security create-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
57+
security default-keychain -s ${{ env.KEYCHAIN }}
58+
security unlock-keychain -p ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
59+
security import ${{ env.INSTALLER_CERT_MAC_PATH }} -k ${{ env.KEYCHAIN }} -f pkcs12 -A -T /usr/bin/codesign -P ${{ secrets.INSTALLER_CERT_MAC_PASSWORD }}
60+
security set-key-partition-list -S apple-tool:,apple: -s -k ${{ env.KEYCHAIN_PASSWORD }} ${{ env.KEYCHAIN }}
61+
62+
- name: Install gon for code signing and app notarization
63+
run: |
64+
wget -q https://github.com/mitchellh/gon/releases/download/v0.2.3/gon_macos.zip
65+
unzip gon_macos.zip -d /usr/local/bin
66+
67+
- name: Sign and notarize binary
68+
env:
69+
AC_USERNAME: ${{ secrets.AC_USERNAME }}
70+
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
71+
run: |
72+
gon gon.config.hcl
73+
74+
- name: Re-package binary and update checksum
75+
# This step performs the following:
76+
# 1. Repackage the signed binary replaced in place by Gon (ignoring the output zip file)
77+
# 2. Recalculate package checksum and replace it in the goreleaser nnnnnn-checksums.txt file
78+
run: |
79+
# GitHub's upload/download-artifact@v2 action doesn't preserve file permissions,
80+
# so we need to add execution permission back until the action is made to do this.
81+
chmod +x dist/arduino_lint_osx_darwin_amd64/arduino-lint
82+
TAG=${GITHUB_REF/refs\/tags\//}
83+
tar -czvf dist/arduino-lint_${TAG}_macOS_64bit.tar.gz \
84+
-C dist/arduino_lint_osx_darwin_amd64/ arduino-lint \
85+
-C ../../ LICENSE.txt
86+
LINT_CHECKSUM=$(shasum -a 256 dist/arduino-lint_${TAG}_macOS_64bit.tar.gz | cut -d " " -f 1)
87+
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
88+
89+
- name: Upload artifacts
90+
uses: actions/upload-artifact@v2
91+
with:
92+
name: dist
93+
path: dist
94+
95+
create-release:
96+
runs-on: ubuntu-latest
97+
needs: notarize-macos
98+
99+
steps:
100+
- name: Checkout
101+
uses: actions/checkout@v2
102+
103+
- name: Download artifact
104+
uses: actions/download-artifact@v2
105+
with:
106+
name: dist
107+
# to ensure compatibility with v1
108+
path: dist
109+
110+
- name: Read CHANGELOG
111+
id: changelog
112+
run: |
113+
body=$(cat dist/CHANGELOG.md)
114+
body="${body//'%'/'%25'}"
115+
body="${body//$'\n'/'%0A'}"
116+
body="${body//$'\r'/'%0D'}"
117+
echo $body
118+
echo "::set-output name=BODY::$body"
119+
120+
- name: Identify Prerelease
121+
# This is a workaround while waiting for create-release action
122+
# to implement auto pre-release based on tag
123+
id: prerelease
124+
run: |
125+
wget -q -P /tmp https://github.com/fsaintjacques/semver-tool/archive/3.0.0.zip
126+
unzip -p /tmp/3.0.0.zip semver-tool-3.0.0/src/semver >/tmp/semver && chmod +x /tmp/semver
127+
if [[ $(/tmp/semver get prerel ${GITHUB_REF/refs\/tags\//}) ]]; then echo "::set-output name=IS_PRE::true"; fi
128+
129+
- name: Create Github Release
130+
id: create_release
131+
uses: actions/create-release@v1
132+
env:
133+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134+
with:
135+
tag_name: ${{ github.ref }}
136+
release_name: ${{ github.ref }}
137+
body: ${{ steps.changelog.outputs.BODY }}
138+
draft: false
139+
prerelease: ${{ steps.prerelease.outputs.IS_PRE }}
140+
141+
- name: Upload release files on Github
142+
uses: svenstaro/upload-release-action@v2
143+
with:
144+
repo_token: ${{ secrets.GITHUB_TOKEN }}
145+
file: dist/*
146+
tag: ${{ github.ref }}
147+
file_glob: true
148+
149+
- name: Upload release files on Arduino downloads servers
150+
uses: docker://plugins/s3
151+
env:
152+
PLUGIN_SOURCE: "dist/*"
153+
PLUGIN_TARGET: "/arduino-lint/"
154+
PLUGIN_STRIP_PREFIX: "dist/"
155+
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
156+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
157+
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: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
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 -it -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 }} ../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 }} {{ .LDFLAGS }}"
33+
BUILD_PLATFORM: "windows/386"
34+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
35+
PACKAGE_PLATFORM: "Windows_32bit"
36+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .PACKAGE_PLATFORM }}.zip"
37+
38+
Windows_64bit:
39+
desc: Builds Windows 64 bit binaries
40+
dir: "{{ .DIST_DIR }}"
41+
cmds:
42+
- |
43+
docker run -it -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 }} ../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 }} {{ .LDFLAGS }}"
55+
BUILD_PLATFORM: "windows/amd64"
56+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
57+
PACKAGE_PLATFORM: "Windows_64bit"
58+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .PACKAGE_PLATFORM }}.zip"
59+
60+
Linux_32bit:
61+
desc: Builds Linux 32 bit binaries
62+
dir: "{{ .DIST_DIR }}"
63+
cmds:
64+
- |
65+
docker run -it -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 }} {{ .LDFLAGS }}"
77+
BUILD_PLATFORM: "linux/386"
78+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
79+
PACKAGE_PLATFORM: "Linux_32bit"
80+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .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 -it -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 }} {{ .LDFLAGS }}"
99+
BUILD_PLATFORM: "linux/amd64"
100+
CONTAINER_TAG: "{{ .GO_VERSION }}-main"
101+
PACKAGE_PLATFORM: "Linux_64bit"
102+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
103+
104+
Linux_ARMv7:
105+
desc: Builds Linux ARMv7 binaries
106+
dir: "{{ .DIST_DIR }}"
107+
cmds:
108+
- |
109+
docker run -it -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 }} {{ .LDFLAGS }}"
121+
BUILD_PLATFORM: "linux/armv7"
122+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
123+
PACKAGE_PLATFORM: "Linux_ARMv7"
124+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
125+
126+
Linux_ARMv6:
127+
desc: Builds Linux ARMv6 binaries
128+
dir: "{{ .DIST_DIR }}"
129+
cmds:
130+
- |
131+
docker run -it -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 }} {{ .LDFLAGS }}"
143+
BUILD_PLATFORM: "linux/armv6"
144+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
145+
PACKAGE_PLATFORM: "Linux_ARMv6"
146+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .PACKAGE_PLATFORM }}.tar.gz"
147+
148+
Linux_ARM64:
149+
desc: Builds Linux ARM64 binaries
150+
dir: "{{ .DIST_DIR }}"
151+
cmds:
152+
- |
153+
docker run -it -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 }} {{ .LDFLAGS }}"
165+
BUILD_PLATFORM: "linux/arm64"
166+
CONTAINER_TAG: "{{ .GO_VERSION }}-arm"
167+
PACKAGE_PLATFORM: "Linux_ARM64"
168+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .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 -it -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 }} {{ .LDFLAGS }}"
187+
BUILD_PLATFORM: "darwin/amd64"
188+
CONTAINER_TAG: "{{ .GO_VERSION }}-darwin"
189+
PACKAGE_PLATFORM: "macOS_64bit"
190+
PACKAGE_NAME: "{{ .PROJECT_NAME }}-{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}_{{ .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+
CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild"
198+
GO_VERSION: "1.14.7"
199+
CHECKSUM_FILE: "{{ .VERSION }}-{{ .TIMESTAMP_SHORT }}-checksums.txt"

‎Taskfile.yml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
version: "3"
22

3+
includes:
4+
dist: ./DistTasks.yml
5+
36
tasks:
47
build:
58
desc: Build the project
@@ -264,6 +267,8 @@ tasks:
264267
- poetry run codespell --write-changes {{ .CODESPELL_SKIP_OPTION }} {{ .CODESPELL_IGNORE_WORDS_OPTION }}
265268

266269
vars:
270+
PROJECT_NAME: "arduino-lint"
271+
DIST_DIR: "dist"
267272
DEFAULT_PACKAGES:
268273
sh: echo `go list ./... | tr '\n' ' '`
269274
DEFAULT_PATHS:

0 commit comments

Comments
(0)

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