mirror of
https://github.com/stenzek/duckstation.git
synced 2024-11-23 13:59:49 +00:00
b51def8a99
i.e. what I'm going to do with packages, just open the download page and let the user install it.
628 lines
21 KiB
YAML
628 lines
21 KiB
YAML
name: Create rolling release
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'appveyor.yml'
|
|
- 'scripts/*'
|
|
- '.github/ISSUE_TEMPLATE/*'
|
|
push:
|
|
branches:
|
|
- master
|
|
- dev
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'appveyor.yml'
|
|
- 'scripts/*'
|
|
- '.github/ISSUE_TEMPLATE/*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
windows-x64-build:
|
|
name: Windows x64 Build
|
|
runs-on: windows-2022
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: |
|
|
dep/msvc/deps-arm64
|
|
dep/msvc/deps-x64
|
|
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
|
|
|
|
- name: Build x64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-x64.bat
|
|
|
|
- name: Build ARM64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-arm64.bat
|
|
|
|
- name: Initialize Build Tag
|
|
shell: cmd
|
|
run: |
|
|
echo #pragma once > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tag Asset
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-release.zip" >> src/scmversion/tag.h
|
|
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release Build
|
|
if: github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h
|
|
|
|
- name: Update RC Version Fields
|
|
shell: cmd
|
|
run: |
|
|
cd src\scmversion
|
|
call update_rc_version.bat
|
|
cd ..\..
|
|
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
|
|
|
|
- name: Compile x64 Release Build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
|
|
msbuild duckstation.sln -t:Build -p:Platform=x64;Configuration=ReleaseLTCG-Clang
|
|
|
|
- name: Create x64 Symbols Archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-release-symbols.zip ./bin/x64/*.pdb
|
|
|
|
- name: Remove Extra Bloat Before Archiving
|
|
shell: cmd
|
|
run: |
|
|
del /Q bin\x64\*.pdb bin\x64\*.exp bin\x64\*.lib bin\x64\*.iobj bin\x64\*.ipdb bin\x64\common-tests*
|
|
rename bin\x64\updater-x64-ReleaseLTCG.exe updater.exe
|
|
|
|
- name: Create x64 Release Archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-release.zip ./bin/x64/*
|
|
|
|
- name: Upload x64 Release Artifact
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "windows-x64"
|
|
path: "duckstation-windows-x64-release*.zip"
|
|
|
|
|
|
windows-x64-sse2-build:
|
|
name: Windows x64 SSE2 Build
|
|
runs-on: windows-2022
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: |
|
|
dep/msvc/deps-arm64
|
|
dep/msvc/deps-x64
|
|
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
|
|
|
|
- name: Build x64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-x64.bat
|
|
|
|
- name: Build ARM64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-arm64.bat
|
|
|
|
- name: Initialize Build Tag
|
|
shell: cmd
|
|
run: |
|
|
echo #pragma once > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tag Asset
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_ASSET "duckstation-windows-x64-sse2-release.zip" >> src/scmversion/tag.h
|
|
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release Build
|
|
if: github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h
|
|
|
|
- name: Update RC Version Fields
|
|
shell: cmd
|
|
run: |
|
|
cd src\scmversion
|
|
call update_rc_version.bat
|
|
cd ..\..
|
|
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
|
|
|
|
- name: Compile x64 Release Build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
|
|
msbuild duckstation.sln -t:Build -p:Platform=x64;Configuration=ReleaseLTCG-Clang-SSE2
|
|
|
|
- name: Create x64 Symbols Archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-sse2-release-symbols.zip ./bin/x64/*.pdb
|
|
|
|
- name: Remove Extra Bloat Before Archiving
|
|
shell: cmd
|
|
run: |
|
|
del /Q bin\x64\*.pdb bin\x64\*.exp bin\x64\*.lib bin\x64\*.iobj bin\x64\*.ipdb bin\x64\common-tests*
|
|
rename bin\x64\updater-x64-ReleaseLTCG-SSE2.exe updater.exe
|
|
|
|
- name: Create x64 Release Archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-x64-sse2-release.zip ./bin/x64/*
|
|
|
|
- name: Upload x64 Release Artifact
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "windows-x64-sse2"
|
|
path: "duckstation-windows-x64-sse2-release*.zip"
|
|
|
|
|
|
windows-arm64-build:
|
|
name: Windows ARM64 Build
|
|
runs-on: windows-2022
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: true
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: |
|
|
dep/msvc/deps-arm64
|
|
dep/msvc/deps-x64
|
|
key: deps ${{ hashFiles('scripts/deps/build-dependencies-windows-arm64.bat', 'scripts/deps/build-dependencies-windows-x64.bat') }}
|
|
|
|
- name: Build x64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-x64.bat
|
|
|
|
- name: Build ARM64 Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: scripts/deps/build-dependencies-windows-arm64.bat
|
|
|
|
- name: Initialize Build Tag
|
|
shell: cmd
|
|
run: |
|
|
echo #pragma once > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tag Asset
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_ASSET "duckstation-windows-arm64-release.zip" >> src/scmversion/tag.h
|
|
echo #define SCM_RELEASE_TAGS {"latest", "preview"} >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "preview" >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
shell: cmd
|
|
run: |
|
|
echo #define SCM_RELEASE_TAG "latest" >> src/scmversion/tag.h
|
|
|
|
- name: Update RC Version Fields
|
|
shell: cmd
|
|
run: |
|
|
cd src\scmversion
|
|
call update_rc_version.bat
|
|
cd ..\..
|
|
git update-index --assume-unchanged src/duckstation-qt/duckstation-qt.rc
|
|
|
|
- name: Compile ARM64 Release Build
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64
|
|
msbuild duckstation.sln -t:Build -p:Platform=ARM64;Configuration=ReleaseLTCG-Clang
|
|
|
|
- name: Create ARM64 symbols archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-arm64-release-symbols.zip ./bin/ARM64/*.pdb
|
|
|
|
- name: Remove Extra Bloat Before Archiving
|
|
shell: cmd
|
|
run: |
|
|
del /Q bin\ARM64\*.pdb bin\ARM64\*.exp bin\ARM64\*.lib bin\ARM64\*.iobj bin\ARM64\*.ipdb bin\ARM64\common-tests*
|
|
rename bin\ARM64\updater-ARM64-ReleaseLTCG.exe updater.exe
|
|
|
|
- name: Create ARM64 Release Archive
|
|
shell: cmd
|
|
run: |
|
|
"C:\Program Files\7-Zip\7z.exe" a -r duckstation-windows-arm64-release.zip ./bin/ARM64/*
|
|
|
|
- name: Upload ARM64 Release Artifact
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "windows-arm64"
|
|
path: "duckstation-windows-arm64-release*.zip"
|
|
|
|
|
|
linux-x64-appimage-build:
|
|
name: Linux x64 AppImage
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install Packages
|
|
run: scripts/appimage/install-packages.sh
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: ~/deps
|
|
key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-ffmpeg-linux.sh') }}
|
|
|
|
- name: Build Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
|
|
|
|
- name: Build FFmpeg
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
run: scripts/deps/build-ffmpeg-linux.sh "$HOME/deps"
|
|
|
|
- name: Initialize Build Tag
|
|
run: |
|
|
echo '#pragma once' > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tag Asset
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_ASSET "DuckStation-x64.AppImage"' >> src/scmversion/tag.h
|
|
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
|
|
|
|
- name: Compile Build
|
|
shell: bash
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
|
|
cmake --build . --parallel
|
|
cd ..
|
|
scripts/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps DuckStation-x64
|
|
|
|
- name: Upload Qt AppImage
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "linux-x64-appimage"
|
|
path: "DuckStation-x64.AppImage"
|
|
|
|
|
|
linux-x64-sse2-appimage-build:
|
|
name: "Linux x64 SSE2 AppImage"
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install Packages
|
|
run: scripts/appimage/install-packages.sh
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: ~/deps
|
|
key: deps ${{ hashFiles('scripts/deps/build-dependencies-linux.sh', 'scripts/deps/build-ffmpeg-linux.sh') }}
|
|
|
|
- name: Build Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
run: scripts/deps/build-dependencies-linux.sh "$HOME/deps"
|
|
|
|
- name: Build FFmpeg
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
run: scripts/deps/build-ffmpeg-linux.sh "$HOME/deps"
|
|
|
|
- name: Initialize Build Tag
|
|
run: |
|
|
echo '#pragma once' > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tag Asset
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_ASSET "DuckStation-x64-SSE2.AppImage"' >> src/scmversion/tag.h
|
|
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
|
|
|
|
- name: Compile Build
|
|
shell: bash
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DDISABLE_SSE4=ON -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_C_COMPILER=clang-17 -DCMAKE_CXX_COMPILER=clang++-17 -DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS_INIT="-fuse-ld=lld" ..
|
|
cmake --build . --parallel
|
|
cd ..
|
|
scripts/appimage/make-appimage.sh $(realpath .) $(realpath ./build) $HOME/deps DuckStation-x64-SSE2
|
|
|
|
- name: Upload Qt AppImage
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "linux-x64-sse2-appimage"
|
|
path: "DuckStation-x64-SSE2.AppImage"
|
|
|
|
|
|
linux-flatpak-build:
|
|
name: Linux Flatpak Build
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.7
|
|
options: --privileged
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
set-safe-directory: ${{ env.GITHUB_WORKSPACE }}
|
|
|
|
# Work around container ownership issue
|
|
- name: Set Safe Directory
|
|
shell: bash
|
|
run: git config --global --add safe.directory "*"
|
|
|
|
- name: Initialize Build Tag
|
|
run: |
|
|
echo '#pragma once' > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tags
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
|
|
|
|
- name: Generate AppStream XML
|
|
run: |
|
|
scripts/generate-metainfo.sh scripts/flatpak
|
|
cat scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
|
|
|
|
- name: Validate AppStream XML
|
|
run: flatpak-builder-lint appstream scripts/flatpak/org.duckstation.DuckStation.metainfo.xml
|
|
|
|
- name: Validate Manifest
|
|
run: flatpak-builder-lint manifest scripts/flatpak/org.duckstation.DuckStation.yaml
|
|
|
|
- name: Build Flatpak
|
|
uses: flathub-infra/flatpak-github-actions/flatpak-builder@23796715b3dfa4c86ddf50cf29c3cc8b3c82dca8
|
|
with:
|
|
bundle: duckstation-x64.flatpak
|
|
upload-artifact: false
|
|
manifest-path: scripts/flatpak/org.duckstation.DuckStation.yaml
|
|
arch: x86_64
|
|
build-bundle: true
|
|
verbose: true
|
|
mirror-screenshots-url: https://dl.flathub.org/media
|
|
branch: stable
|
|
cache: true
|
|
restore-cache: true
|
|
cache-key: flatpak-x64-${{ hashFiles('scripts/flatpak/**/*.yaml') }}
|
|
|
|
- name: Validate Build
|
|
run: |
|
|
flatpak-builder-lint repo repo
|
|
|
|
- name: Push To Flathub Stable
|
|
if: github.ref == 'refs/heads/dev'
|
|
uses: flathub-infra/flatpak-github-actions/flat-manager@b6c92176b7f578aedd80cac74cd8f0336f618e89
|
|
with:
|
|
flat-manager-url: https://hub.flathub.org/
|
|
repository: stable
|
|
token: ${{ secrets.FLATHUB_STABLE_TOKEN }}
|
|
build-log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
|
|
- name: Upload Flatpak
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "linux-flatpak"
|
|
path: "duckstation-x64.flatpak"
|
|
|
|
|
|
macos-build:
|
|
name: MacOS Universal Build
|
|
runs-on: macos-14
|
|
timeout-minutes: 120
|
|
steps:
|
|
- uses: actions/checkout@v4.1.6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Use Xcode 15.4
|
|
run: sudo xcode-select -s /Applications/Xcode_15.4.app
|
|
|
|
- name: Install packages
|
|
shell: bash
|
|
run: |
|
|
brew install ninja
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps-mac
|
|
uses: actions/cache@v4.0.2
|
|
with:
|
|
path: ~/deps
|
|
key: deps-mac ${{ hashFiles('scripts/deps/build-dependencies-mac.sh') }}
|
|
|
|
- name: Build Dependencies
|
|
if: steps.cache-deps-mac.outputs.cache-hit != 'true'
|
|
run: scripts/deps/build-dependencies-mac.sh "$HOME/deps"
|
|
|
|
- name: Initialize Build Tag
|
|
run: |
|
|
echo '#pragma once' > src/scmversion/tag.h
|
|
|
|
- name: Set Build Tags
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_ASSET "duckstation-mac-release.zip"' >> src/scmversion/tag.h
|
|
echo '#define SCM_RELEASE_TAGS {"latest", "preview"}' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "preview"' >> src/scmversion/tag.h
|
|
|
|
- name: Tag as Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
run: |
|
|
echo '#define SCM_RELEASE_TAG "latest"' >> src/scmversion/tag.h
|
|
|
|
- name: Compile and Zip .app
|
|
shell: bash
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
export MACOSX_DEPLOYMENT_TARGET=11.0
|
|
cmake -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENGL=OFF -DCMAKE_PREFIX_PATH="$HOME/deps" -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -G Ninja ..
|
|
cmake --build . --parallel
|
|
mv bin/DuckStation.app .
|
|
codesign -s - --deep -f -v DuckStation.app
|
|
zip -r duckstation-mac-release.zip DuckStation.app/
|
|
|
|
- name: Upload MacOS .app
|
|
uses: actions/upload-artifact@v4.3.3
|
|
with:
|
|
name: "macos"
|
|
path: "build/duckstation-mac-release.zip"
|
|
|
|
|
|
create-release:
|
|
name: Create Release
|
|
needs: [windows-x64-build, windows-x64-sse2-build, windows-arm64-build, linux-x64-appimage-build, linux-x64-sse2-appimage-build, linux-flatpak-build, macos-build]
|
|
runs-on: ubuntu-22.04
|
|
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
|
|
steps:
|
|
- name: Download Artifacts
|
|
uses: actions/download-artifact@v4.1.7
|
|
with:
|
|
path: ./artifacts/
|
|
|
|
- name: Display Downloaded Artifacts
|
|
run: find ./artifacts/
|
|
|
|
- name: Create Preview Release
|
|
if: github.ref == 'refs/heads/master'
|
|
uses: "marvinpinto/action-automatic-releases@latest"
|
|
with:
|
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
automatic_release_tag: "preview"
|
|
prerelease: true
|
|
title: "Latest Preview Build"
|
|
files: |
|
|
./artifacts/windows-x64/duckstation-windows-x64-release.zip
|
|
./artifacts/windows-x64/duckstation-windows-x64-release-symbols.zip
|
|
./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release.zip
|
|
./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release-symbols.zip
|
|
./artifacts/windows-arm64/duckstation-windows-arm64-release.zip
|
|
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
|
|
./artifacts/linux-x64-appimage/DuckStation-x64.AppImage
|
|
./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage
|
|
./artifacts/linux-flatpak/duckstation-x64.flatpak
|
|
./artifacts/macos/duckstation-mac-release.zip
|
|
|
|
- name: Create Rolling Release
|
|
if: github.ref == 'refs/heads/dev'
|
|
uses: "marvinpinto/action-automatic-releases@latest"
|
|
with:
|
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
automatic_release_tag: "latest"
|
|
prerelease: false
|
|
title: "Latest Rolling Release"
|
|
files: |
|
|
./artifacts/windows-x64/duckstation-windows-x64-release.zip
|
|
./artifacts/windows-x64/duckstation-windows-x64-release-symbols.zip
|
|
./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release.zip
|
|
./artifacts/windows-x64-sse2/duckstation-windows-x64-sse2-release-symbols.zip
|
|
./artifacts/windows-arm64/duckstation-windows-arm64-release.zip
|
|
./artifacts/windows-arm64/duckstation-windows-arm64-release-symbols.zip
|
|
./artifacts/linux-x64-appimage/DuckStation-x64.AppImage
|
|
./artifacts/linux-x64-sse2-appimage/DuckStation-x64-SSE2.AppImage
|
|
./artifacts/linux-flatpak/duckstation-x64.flatpak
|
|
./artifacts/macos/duckstation-mac-release.zip
|
|
|