Skip to content

Commit cf0a216

Browse files
committed
Add step to generate full changelog on release
1 parent dcebd86 commit cf0a216

File tree

1 file changed

+72
-48
lines changed

1 file changed

+72
-48
lines changed

.github/workflows/build.yml

Lines changed: 72 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ on:
1515

1616
env:
1717
JOB_TRANSFER_ARTIFACT: build-artifacts
18+
CHANGELOG_ARTIFACTS: changelog
1819

1920
jobs:
20-
2121
build:
2222
if: github.repository == 'arduino/arduino-ide'
2323
strategy:
@@ -56,29 +56,29 @@ jobs:
5656
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
5757
IS_FORK: ${{ github.event.pull_request.head.repo.fork == true }}
5858
run: |
59-
# See: https://www.electron.build/code-signing
60-
if [ $IS_FORK = true ]; then
61-
echo "Skipping the app signing: building from a fork."
62-
else
63-
if [ "${{ runner.OS }}" = "macOS" ]; then
64-
export CSC_LINK="${{ runner.temp }}/signing_certificate.p12"
65-
# APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
66-
# https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
67-
echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "$CSC_LINK"
59+
# See: https://www.electron.build/code-signing
60+
if [ $IS_FORK = true ]; then
61+
echo "Skipping the app signing: building from a fork."
62+
else
63+
if [ "${{ runner.OS }}" = "macOS" ]; then
64+
export CSC_LINK="${{ runner.temp }}/signing_certificate.p12"
65+
# APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
66+
# https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
67+
echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "$CSC_LINK"
6868
69-
export CSC_KEY_PASSWORD="${{ secrets.KEYCHAIN_PASSWORD }}"
69+
export CSC_KEY_PASSWORD="${{ secrets.KEYCHAIN_PASSWORD }}"
7070
71-
elif [ "${{ runner.OS }}" = "Windows" ]; then
72-
export CSC_LINK="${{ runner.temp }}/signing_certificate.pfx"
73-
npm config set msvs_version 2017 --global
74-
echo "${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PFX }}" | base64 --decode > "$CSC_LINK"
71+
elif [ "${{ runner.OS }}" = "Windows" ]; then
72+
export CSC_LINK="${{ runner.temp }}/signing_certificate.pfx"
73+
npm config set msvs_version 2017 --global
74+
echo "${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PFX }}" | base64 --decode > "$CSC_LINK"
7575
76-
export CSC_KEY_PASSWORD="${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }}"
77-
fi
76+
export CSC_KEY_PASSWORD="${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }}"
7877
fi
78+
fi
7979
80-
yarn --cwd ./electron/packager/
81-
yarn --cwd ./electron/packager/ package
80+
yarn --cwd ./electron/packager/
81+
yarn --cwd ./electron/packager/ package
8282
8383
- name: Upload [GitHub Actions]
8484
uses: actions/upload-artifact@v2
@@ -95,15 +95,15 @@ jobs:
9595
strategy:
9696
matrix:
9797
artifact:
98-
- path: "*Linux_64bit.zip"
98+
- path: '*Linux_64bit.zip'
9999
name: Linux_X86-64
100-
- path: "*macOS_64bit.dmg"
100+
- path: '*macOS_64bit.dmg'
101101
name: macOS
102-
- path: "*Windows_64bit.exe"
102+
- path: '*Windows_64bit.exe'
103103
name: Windows_X86-64_interactive_installer
104-
- path: "*Windows_64bit.msi"
104+
- path: '*Windows_64bit.msi'
105105
name: Windows_X86-64_MSI
106-
- path: "*Windows_64bit.zip"
106+
- path: '*Windows_64bit.zip'
107107
name: Windows_X86-64_zip
108108

109109
steps:
@@ -112,7 +112,7 @@ jobs:
112112
with:
113113
name: ${{ env.JOB_TRANSFER_ARTIFACT }}
114114
path: ${{ env.JOB_TRANSFER_ARTIFACT }}
115-
115+
116116
- name: Upload tester build artifact
117117
uses: actions/upload-artifact@v2
118118
with:
@@ -135,24 +135,24 @@ jobs:
135135
env:
136136
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
137137
run: |
138-
export LATEST_TAG=$(git describe --abbrev=0)
139-
export GIT_LOG=$(git log --pretty=" - %s [%h]" $LATEST_TAG..HEAD | sed 's/ *$//g')
140-
if [ "$IS_RELEASE" = true ]; then
141-
export BODY=$(echo -e "$GIT_LOG")
142-
else
143-
export LATEST_TAG_WITH_LINK=$(echo "[$LATEST_TAG](https://github.com/arduino/arduino-ide/releases/tag/$LATEST_TAG)")
144-
if [ -z "$GIT_LOG" ]; then
145-
export BODY="There were no changes since version $LATEST_TAG_WITH_LINK."
146-
else
147-
export BODY=$(echo -e "Changes since version $LATEST_TAG_WITH_LINK:\n$GIT_LOG")
148-
fi
138+
export LATEST_TAG=$(git describe --abbrev=0)
139+
export GIT_LOG=$(git log --pretty=" - %s [%h]" $LATEST_TAG..HEAD | sed 's/ *$//g')
140+
if [ "$IS_RELEASE" = true ]; then
141+
export BODY=$(echo -e "$GIT_LOG")
142+
else
143+
export LATEST_TAG_WITH_LINK=$(echo "[$LATEST_TAG](https://github.com/arduino/arduino-ide/releases/tag/$LATEST_TAG)")
144+
if [ -z "$GIT_LOG" ]; then
145+
export BODY="There were no changes since version $LATEST_TAG_WITH_LINK."
146+
else
147+
export BODY=$(echo -e "Changes since version $LATEST_TAG_WITH_LINK:\n$GIT_LOG")
149148
fi
150-
echo -e "$BODY"
151-
OUTPUT_SAFE_BODY="${BODY//'%'/'%25'}"
152-
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\n'/'%0A'}"
153-
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\r'/'%0D'}"
154-
echo "::set-output name=BODY::$OUTPUT_SAFE_BODY"
155-
echo "$BODY" > CHANGELOG.txt
149+
fi
150+
echo -e "$BODY"
151+
OUTPUT_SAFE_BODY="${BODY//'%'/'%25'}"
152+
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\n'/'%0A'}"
153+
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\r'/'%0D'}"
154+
echo "::set-output name=BODY::$OUTPUT_SAFE_BODY"
155+
echo "$BODY" > CHANGELOG.txt
156156
157157
- name: Upload Changelog [GitHub Actions]
158158
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
@@ -175,9 +175,9 @@ jobs:
175175
- name: Publish Nightly [S3]
176176
uses: docker://plugins/s3
177177
env:
178-
PLUGIN_SOURCE: "${{ env.JOB_TRANSFER_ARTIFACT }}/*"
179-
PLUGIN_STRIP_PREFIX: "${{ env.JOB_TRANSFER_ARTIFACT }}/"
180-
PLUGIN_TARGET: "/arduino-ide/nightly"
178+
PLUGIN_SOURCE: '${{ env.JOB_TRANSFER_ARTIFACT }}/*'
179+
PLUGIN_STRIP_PREFIX: '${{ env.JOB_TRANSFER_ARTIFACT }}/'
180+
PLUGIN_TARGET: '/arduino-ide/nightly'
181181
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
182182
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
183183
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -198,6 +198,20 @@ jobs:
198198
run: |
199199
echo ::set-output name=TAG_NAME::${GITHUB_REF#refs/tags/}
200200
201+
- name: Create full changelog
202+
id: full-changelog
203+
run: |
204+
mkdir "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}"
205+
206+
# Get the changelog file name to build
207+
CHANGELOG_FILE_NAME="${{ steps.tag_name.outputs.TAG_NAME }}-${date --iso-8601=s}.md"
208+
209+
# Create manifest file pointing to latest changelog file name
210+
echo "$CHANGELOG_FILE_NAME" >> "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}/latest.txt"
211+
212+
# Compose changelog
213+
yarn run compose-changelog "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}/$CHANGELOG_FILE_NAME"
214+
201215
- name: Publish Release [GitHub]
202216
uses: svenstaro/upload-release-action@2.2.0
203217
with:
@@ -208,12 +222,22 @@ jobs:
208222
file_glob: true
209223
body: ${{ needs.changelog.outputs.BODY }}
210224

225+
- name: Publish Changelog [S3]
226+
uses: docker://plugins/s3
227+
env:
228+
PLUGIN_SOURCE: '${{ env.CHANGELOG_ARTIFACTS }}/*'
229+
PLUGIN_STRIP_PREFIX: '${{ env.CHANGELOG_ARTIFACTS }}/'
230+
PLUGIN_TARGET: '/arduino-ide/changelog'
231+
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
232+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
233+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
234+
211235
- name: Publish Release [S3]
212236
uses: docker://plugins/s3
213237
env:
214-
PLUGIN_SOURCE: "${{ env.JOB_TRANSFER_ARTIFACT }}/*"
215-
PLUGIN_STRIP_PREFIX: "${{ env.JOB_TRANSFER_ARTIFACT }}/"
216-
PLUGIN_TARGET: "/arduino-ide"
238+
PLUGIN_SOURCE: '${{ env.JOB_TRANSFER_ARTIFACT }}/*'
239+
PLUGIN_STRIP_PREFIX: '${{ env.JOB_TRANSFER_ARTIFACT }}/'
240+
PLUGIN_TARGET: '/arduino-ide'
217241
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
218242
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
219243
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

0 commit comments

Comments
 (0)