mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-07-09 04:16:38 +00:00
Add step to generate full changelog on release
This commit is contained in:
parent
dcebd863cc
commit
cf0a2161af
120
.github/workflows/build.yml
vendored
120
.github/workflows/build.yml
vendored
@ -15,9 +15,9 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
JOB_TRANSFER_ARTIFACT: build-artifacts
|
JOB_TRANSFER_ARTIFACT: build-artifacts
|
||||||
|
CHANGELOG_ARTIFACTS: changelog
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
build:
|
build:
|
||||||
if: github.repository == 'arduino/arduino-ide'
|
if: github.repository == 'arduino/arduino-ide'
|
||||||
strategy:
|
strategy:
|
||||||
@ -56,29 +56,29 @@ jobs:
|
|||||||
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
|
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
IS_FORK: ${{ github.event.pull_request.head.repo.fork == true }}
|
IS_FORK: ${{ github.event.pull_request.head.repo.fork == true }}
|
||||||
run: |
|
run: |
|
||||||
# See: https://www.electron.build/code-signing
|
# See: https://www.electron.build/code-signing
|
||||||
if [ $IS_FORK = true ]; then
|
if [ $IS_FORK = true ]; then
|
||||||
echo "Skipping the app signing: building from a fork."
|
echo "Skipping the app signing: building from a fork."
|
||||||
else
|
else
|
||||||
if [ "${{ runner.OS }}" = "macOS" ]; then
|
if [ "${{ runner.OS }}" = "macOS" ]; then
|
||||||
export CSC_LINK="${{ runner.temp }}/signing_certificate.p12"
|
export CSC_LINK="${{ runner.temp }}/signing_certificate.p12"
|
||||||
# APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
|
# APPLE_SIGNING_CERTIFICATE_P12 secret was produced by following the procedure from:
|
||||||
# https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
|
# https://www.kencochrane.com/2020/08/01/build-and-sign-golang-binaries-for-macos-with-github-actions/#exporting-the-developer-certificate
|
||||||
echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "$CSC_LINK"
|
echo "${{ secrets.APPLE_SIGNING_CERTIFICATE_P12 }}" | base64 --decode > "$CSC_LINK"
|
||||||
|
|
||||||
export CSC_KEY_PASSWORD="${{ secrets.KEYCHAIN_PASSWORD }}"
|
export CSC_KEY_PASSWORD="${{ secrets.KEYCHAIN_PASSWORD }}"
|
||||||
|
|
||||||
elif [ "${{ runner.OS }}" = "Windows" ]; then
|
elif [ "${{ runner.OS }}" = "Windows" ]; then
|
||||||
export CSC_LINK="${{ runner.temp }}/signing_certificate.pfx"
|
export CSC_LINK="${{ runner.temp }}/signing_certificate.pfx"
|
||||||
npm config set msvs_version 2017 --global
|
npm config set msvs_version 2017 --global
|
||||||
echo "${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PFX }}" | base64 --decode > "$CSC_LINK"
|
echo "${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PFX }}" | base64 --decode > "$CSC_LINK"
|
||||||
|
|
||||||
export CSC_KEY_PASSWORD="${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }}"
|
export CSC_KEY_PASSWORD="${{ secrets.WINDOWS_SIGNING_CERTIFICATE_PASSWORD }}"
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
yarn --cwd ./electron/packager/
|
yarn --cwd ./electron/packager/
|
||||||
yarn --cwd ./electron/packager/ package
|
yarn --cwd ./electron/packager/ package
|
||||||
|
|
||||||
- name: Upload [GitHub Actions]
|
- name: Upload [GitHub Actions]
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
@ -95,15 +95,15 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
artifact:
|
artifact:
|
||||||
- path: "*Linux_64bit.zip"
|
- path: '*Linux_64bit.zip'
|
||||||
name: Linux_X86-64
|
name: Linux_X86-64
|
||||||
- path: "*macOS_64bit.dmg"
|
- path: '*macOS_64bit.dmg'
|
||||||
name: macOS
|
name: macOS
|
||||||
- path: "*Windows_64bit.exe"
|
- path: '*Windows_64bit.exe'
|
||||||
name: Windows_X86-64_interactive_installer
|
name: Windows_X86-64_interactive_installer
|
||||||
- path: "*Windows_64bit.msi"
|
- path: '*Windows_64bit.msi'
|
||||||
name: Windows_X86-64_MSI
|
name: Windows_X86-64_MSI
|
||||||
- path: "*Windows_64bit.zip"
|
- path: '*Windows_64bit.zip'
|
||||||
name: Windows_X86-64_zip
|
name: Windows_X86-64_zip
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -112,7 +112,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: ${{ env.JOB_TRANSFER_ARTIFACT }}
|
name: ${{ env.JOB_TRANSFER_ARTIFACT }}
|
||||||
path: ${{ env.JOB_TRANSFER_ARTIFACT }}
|
path: ${{ env.JOB_TRANSFER_ARTIFACT }}
|
||||||
|
|
||||||
- name: Upload tester build artifact
|
- name: Upload tester build artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
@ -135,24 +135,24 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
|
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
run: |
|
run: |
|
||||||
export LATEST_TAG=$(git describe --abbrev=0)
|
export LATEST_TAG=$(git describe --abbrev=0)
|
||||||
export GIT_LOG=$(git log --pretty=" - %s [%h]" $LATEST_TAG..HEAD | sed 's/ *$//g')
|
export GIT_LOG=$(git log --pretty=" - %s [%h]" $LATEST_TAG..HEAD | sed 's/ *$//g')
|
||||||
if [ "$IS_RELEASE" = true ]; then
|
if [ "$IS_RELEASE" = true ]; then
|
||||||
export BODY=$(echo -e "$GIT_LOG")
|
export BODY=$(echo -e "$GIT_LOG")
|
||||||
else
|
else
|
||||||
export LATEST_TAG_WITH_LINK=$(echo "[$LATEST_TAG](https://github.com/arduino/arduino-ide/releases/tag/$LATEST_TAG)")
|
export LATEST_TAG_WITH_LINK=$(echo "[$LATEST_TAG](https://github.com/arduino/arduino-ide/releases/tag/$LATEST_TAG)")
|
||||||
if [ -z "$GIT_LOG" ]; then
|
if [ -z "$GIT_LOG" ]; then
|
||||||
export BODY="There were no changes since version $LATEST_TAG_WITH_LINK."
|
export BODY="There were no changes since version $LATEST_TAG_WITH_LINK."
|
||||||
else
|
else
|
||||||
export BODY=$(echo -e "Changes since version $LATEST_TAG_WITH_LINK:\n$GIT_LOG")
|
export BODY=$(echo -e "Changes since version $LATEST_TAG_WITH_LINK:\n$GIT_LOG")
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
echo -e "$BODY"
|
fi
|
||||||
OUTPUT_SAFE_BODY="${BODY//'%'/'%25'}"
|
echo -e "$BODY"
|
||||||
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\n'/'%0A'}"
|
OUTPUT_SAFE_BODY="${BODY//'%'/'%25'}"
|
||||||
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\r'/'%0D'}"
|
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\n'/'%0A'}"
|
||||||
echo "::set-output name=BODY::$OUTPUT_SAFE_BODY"
|
OUTPUT_SAFE_BODY="${OUTPUT_SAFE_BODY//$'\r'/'%0D'}"
|
||||||
echo "$BODY" > CHANGELOG.txt
|
echo "::set-output name=BODY::$OUTPUT_SAFE_BODY"
|
||||||
|
echo "$BODY" > CHANGELOG.txt
|
||||||
|
|
||||||
- name: Upload Changelog [GitHub Actions]
|
- name: Upload Changelog [GitHub Actions]
|
||||||
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
|
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')
|
||||||
@ -175,9 +175,9 @@ jobs:
|
|||||||
- name: Publish Nightly [S3]
|
- name: Publish Nightly [S3]
|
||||||
uses: docker://plugins/s3
|
uses: docker://plugins/s3
|
||||||
env:
|
env:
|
||||||
PLUGIN_SOURCE: "${{ env.JOB_TRANSFER_ARTIFACT }}/*"
|
PLUGIN_SOURCE: '${{ env.JOB_TRANSFER_ARTIFACT }}/*'
|
||||||
PLUGIN_STRIP_PREFIX: "${{ env.JOB_TRANSFER_ARTIFACT }}/"
|
PLUGIN_STRIP_PREFIX: '${{ env.JOB_TRANSFER_ARTIFACT }}/'
|
||||||
PLUGIN_TARGET: "/arduino-ide/nightly"
|
PLUGIN_TARGET: '/arduino-ide/nightly'
|
||||||
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
|
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
@ -198,6 +198,20 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo ::set-output name=TAG_NAME::${GITHUB_REF#refs/tags/}
|
echo ::set-output name=TAG_NAME::${GITHUB_REF#refs/tags/}
|
||||||
|
|
||||||
|
- name: Create full changelog
|
||||||
|
id: full-changelog
|
||||||
|
run: |
|
||||||
|
mkdir "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}"
|
||||||
|
|
||||||
|
# Get the changelog file name to build
|
||||||
|
CHANGELOG_FILE_NAME="${{ steps.tag_name.outputs.TAG_NAME }}-${date --iso-8601=s}.md"
|
||||||
|
|
||||||
|
# Create manifest file pointing to latest changelog file name
|
||||||
|
echo "$CHANGELOG_FILE_NAME" >> "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}/latest.txt"
|
||||||
|
|
||||||
|
# Compose changelog
|
||||||
|
yarn run compose-changelog "${{ github.workspace }}/${{ env.CHANGELOG_ARTIFACTS }}/$CHANGELOG_FILE_NAME"
|
||||||
|
|
||||||
- name: Publish Release [GitHub]
|
- name: Publish Release [GitHub]
|
||||||
uses: svenstaro/upload-release-action@2.2.0
|
uses: svenstaro/upload-release-action@2.2.0
|
||||||
with:
|
with:
|
||||||
@ -208,12 +222,22 @@ jobs:
|
|||||||
file_glob: true
|
file_glob: true
|
||||||
body: ${{ needs.changelog.outputs.BODY }}
|
body: ${{ needs.changelog.outputs.BODY }}
|
||||||
|
|
||||||
|
- name: Publish Changelog [S3]
|
||||||
|
uses: docker://plugins/s3
|
||||||
|
env:
|
||||||
|
PLUGIN_SOURCE: '${{ env.CHANGELOG_ARTIFACTS }}/*'
|
||||||
|
PLUGIN_STRIP_PREFIX: '${{ env.CHANGELOG_ARTIFACTS }}/'
|
||||||
|
PLUGIN_TARGET: '/arduino-ide/changelog'
|
||||||
|
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
|
||||||
- name: Publish Release [S3]
|
- name: Publish Release [S3]
|
||||||
uses: docker://plugins/s3
|
uses: docker://plugins/s3
|
||||||
env:
|
env:
|
||||||
PLUGIN_SOURCE: "${{ env.JOB_TRANSFER_ARTIFACT }}/*"
|
PLUGIN_SOURCE: '${{ env.JOB_TRANSFER_ARTIFACT }}/*'
|
||||||
PLUGIN_STRIP_PREFIX: "${{ env.JOB_TRANSFER_ARTIFACT }}/"
|
PLUGIN_STRIP_PREFIX: '${{ env.JOB_TRANSFER_ARTIFACT }}/'
|
||||||
PLUGIN_TARGET: "/arduino-ide"
|
PLUGIN_TARGET: '/arduino-ide'
|
||||||
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
|
PLUGIN_BUCKET: ${{ secrets.DOWNLOADS_BUCKET }}
|
||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user