u20 (#7803) #45
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Release or Nightly Installer | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
tags: | |
- 'release_xt_**' | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
surge_version: | |
name: Set up surge version | |
runs-on: ubuntu-latest | |
outputs: | |
surge_version: ${{ steps.vers.outputs.surge_version}} | |
surge_is_nightly: ${{ steps.vers.outputs.surge_is_nightly}} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: calculate version | |
id: vers | |
run: | | |
ref=${{ github.ref }} | |
echo "## Creating version from '${ref}'" >> $GITHUB_STEP_SUMMARY | |
if [[ "$ref" == "refs/heads/main" ]]; then | |
echo "Generating Nightly Version" >> $GITHUB_STEP_SUMMARY | |
export SURGE_VERSION="NIGHTLY-$(date +%Y-%m-%d)-$(git rev-parse --short HEAD)" | |
echo "surge_is_nightly=1" >> "$GITHUB_OUTPUT" | |
else | |
echo "Generating Release Version" >> $GITHUB_STEP_SUMMARY | |
tagv=${ref/refs\/tags\/release_xt_} | |
export SURGE_VERSION=${tagv} | |
echo "surge_is_nightly=0" >> "$GITHUB_OUTPUT" | |
fi | |
echo "SURGE_VERSION=${SURGE_VERSION}" >> $GITHUB_STEP_SUMMARY | |
echo "surge_version=${SURGE_VERSION}" >> "$GITHUB_OUTPUT" | |
build_plugin: | |
name: Release Build - ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
needs: [ surge_version ] | |
strategy: | |
matrix: | |
include: | |
- os: windows-latest | |
name: windows-64bit | |
cmakeArgs: -GNinja -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang | |
- os: macos-latest | |
name: macos | |
cmakeArgs: -D"CMAKE_OSX_ARCHITECTURES=arm64;x86_64" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: apple-actions/import-codesign-certs@v3 | |
if: runner.os == 'macOS' | |
with: | |
p12-file-base64: ${{ secrets.MAC_CERTS_P12 }} | |
p12-password: ${{ secrets.CERT_PWD }} | |
- name: Prepare for JUCE | |
uses: surge-synthesizer/sst-githubactions/prepare-for-juce@main | |
with: | |
os: ${{ runner.os }} | |
- name: Build release version | |
run: | | |
export MAC_SIGNING_CERT="${{ secrets.MAC_SIGNING_CERT_NAME }}" | |
export MAC_INSTALLING_CERT="${{ secrets.MAC_INSTALLING_CERT_NAME }}" | |
export MAC_SIGNING_ID="${{ secrets.MAC_SIGNING_ID }}" | |
export MAC_SIGNING_1UPW="${{ secrets.MAC_SIGNING_1UPW }}" | |
export MAC_SIGNING_TEAM="${{ secrets.MAC_SIGNING_TEAM }}" | |
export SURGE_VERSION="${{ needs.surge_version.outputs.surge_version }}" | |
cmake -S . -B ./build -DAZURE_PIPELINE=1 -DSURGE_VERSION="${{ needs.surge_version.outputs.surge_version }}" -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmakeArgs }} | |
cmake --build ./build --config Release --target surge-xt-distribution --parallel 3 | |
- name: Show Installer Directory | |
run: | | |
ls -l ./build/surge-xt-dist | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: build/surge-xt-dist | |
name: build-${{ matrix.name }} | |
build_plugin_docker: | |
name: Docker Build Ubuntu18 | |
runs-on: ubuntu-latest | |
needs: [ surge_version ] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Build in Docker | |
uses: surge-synthesizer/sst-githubactions/cmake-in-docker@main | |
with: | |
image: ghcr.io/surge-synthesizer/sst-dockerimages/ubuntu20_gcc11:main | |
username: ${{ github.actor }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
cmakeArgs: -DAZURE_PIPELINE=1 -DSURGE_BUILD_LV2=TRUE -DSURGE_VERSION="${{ needs.surge_version.outputs.surge_version }}" -DCMAKE_BUILD_TYPE=Release -GNinja | |
target: surge-xt-distribution | |
- name: Show Installer Directory | |
run: | | |
ls -l ./build/surge-xt-dist | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: build/surge-xt-dist | |
name: build-docker | |
publish-surge-nightly: | |
name: Publish Surge Nightly | |
if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'surge-synthesizer' }} | |
runs-on: ubuntu-latest | |
needs: [ build_plugin, build_plugin_docker ] | |
steps: | |
- name: Upload to Nightly | |
uses: surge-synthesizer/sst-githubactions/upload-to-release@main | |
with: | |
tag: Nightly | |
reuse_tag: true | |
create_tag: false | |
token: ${{ secrets.GITHUB_TOKEN }} | |
release_blurb_file: resources/NightlyBlurb.md | |
- name: Post to Discord | |
uses: surge-synthesizer/sst-githubactions/discord-release-notify@main | |
with: | |
webhook: ${{ secrets.DISCORD_SURGE_WEBHOOK }} | |
tag: Nightly | |
title: "A New Surge Nightly is Available" | |
publish-surge-release: | |
name: Publish Surge Release | |
if: startsWith(github.ref, 'refs/tags/v') && github.repository_owner == 'surge-synthesizer' | |
runs-on: ubuntu-latest | |
needs: [ build_plugin, build_plugin_docker ] | |
steps: | |
- name: Upload to Release | |
uses: surge-synthesizer/sst-githubactions/upload-to-release@main | |
with: | |
tag: ${{ github.ref_name }} | |
reuse_tag: false | |
create_tag: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Post to Discord | |
uses: surge-synthesizer/sst-githubactions/discord-release-notify@main | |
with: | |
webhook: ${{ secrets.DISCORD_SURGE_WEBHOOK }} | |
tag: ${{ github.ref_name }} | |
title: "A New Surge Release is Available" | |
subtitle: "Release ${{ github.ref_name }}" | |
create_web_links: | |
name: Create Website Links | |
runs-on: ubuntu-latest | |
needs: [ surge_version, build_plugin, build_plugin_docker ] | |
steps: | |
- name: checkout for git info | |
uses: actions/checkout@v4 | |
if: ${{ needs.surge_version.outputs.surge_is_nightly == 1 }} | |
with: | |
path: surge | |
fetch-depth: 5 | |
- name: Checkout web | |
uses: actions/checkout@v4 | |
with: | |
path: web | |
repository: surge-synthesizer/surge-synthesizer.github.io | |
token: ${{ secrets.SURGE_GITHUB_IO_TOKEN }} | |
- name: make nightly git info | |
if: ${{ needs.surge_version.outputs.surge_is_nightly == 1 }} | |
run: | | |
mkdir -p stage_git/git_info | |
pushd surge | |
git log -1 --pretty=format:'%h : %s - %an' > ../stage_git/git_info/git_nightly_xt_log_display | |
git log -1 --pretty=format:'%h : %s%n%aD%n%an%n%n%B' > ../stage_git/git_info/git_nightly_xt_log_long_display | |
git log -5 --pretty=format:'%h : %s - %an' > ../stage_git/git_info/git_nightly_xt_recent_five | |
git log -1 --pretty=format:'%h' > ../stage_git/git_info/git_nightly_xt_log_hash | |
popd | |
cat stage_git/git_info/* | |
- name: make nightly links | |
if: ${{ needs.surge_version.outputs.surge_is_nightly == 1 }} | |
run: | | |
# change this to cd website | |
cd web | |
SURGE_VERSION="${{ needs.surge_version.outputs.surge_version }}" | |
echo $(date "+%Y-%m-%d %H:%M:%S %Z") > src/assets/includes/latest_xt_build_time | |
echo $SURGE_VERSION > src/assets/includes/latest_xt_version | |
cp ../stage_git/git_info/* src/assets/includes | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-macOS-$SURGE_VERSION.dmg > src/assets/includes/latest_xt_macos_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-win64-$SURGE_VERSION-setup.exe > src/assets/includes/latest_xt_win_x64_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-win64-$SURGE_VERSION-pluginsonly.zip > src/assets/includes/latest_xt_win_x64_zip_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-win32-$SURGE_VERSION-setup.exe > src/assets/includes/latest_xt_win_x86_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-win32-$SURGE_VERSION-pluginsonly.zip > src/assets/includes/latest_xt_win_x86_zip_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/Nightly/surge-xt-linux-x64-$SURGE_VERSION.deb > src/assets/includes/latest_xt_linux_x64_url | |
cat src/assets/includes/* | |
git config user.email "[email protected]" | |
git config user.name "baconpaul" | |
git add . | |
git commit -m "Update surge links for ${SURGE_VERSION} from github action" | |
git push origin master | |
- name: make release links | |
if: ${{ needs.surge_version.outputs.surge_is_nightly == 0 }} | |
run: | | |
mkdir -p src/assets/includes | |
SURGE_VERSION="${{ needs.surge_version.outputs.surge_version }}" | |
echo $(date "+%Y-%m-%d %H:%M:%S %Z") > src/assets/includes/stable_xt_build_time | |
echo $SURGE_VERSION > src/assets/includes/stable_xt_version | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-macOS-$SURGE_VERSION.dmg > src/assets/includes/stable_xt_macos_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-win64-$SURGE_VERSION-setup.exe > src/assets/includes/stable_xt_win_x64_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-win64-$SURGE_VERSION-pluginsonly.zip > src/assets/includes/stable_xt_win_x64_zip_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-win32-$SURGE_VERSION-setup.exe > src/assets/includes/stable_xt_win_x86_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-win32-$SURGE_VERSION-pluginsonly.zip > src/assets/includes/stable_xt_win_x86_zip_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/download/$SURGE_VERSION/surge-xt-linux-x64-$SURGE_VERSION.deb > src/assets/includes/stable_xt_linux_x64_url | |
echo ${{ github.server_url }}/${{ github.repository }}/releases/tag/$SURGE_VERSION > src/assets/includes/stable_xt_other.url | |