-
Notifications
You must be signed in to change notification settings - Fork 725
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CI: Split and add dedicated Flathub publish
- Loading branch information
Showing
7 changed files
with
743 additions
and
667 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
name: Flathub | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
flathub_branch: | ||
description: "Flathub branch to push to" | ||
required: true | ||
default: "stable" | ||
type: "choice" | ||
options: | ||
- "stable" | ||
- "beta" | ||
|
||
jobs: | ||
linux-flatpak: | ||
uses: "./.github/workflows/linux-flatpak-build.yml" | ||
with: | ||
flathub_publish: true | ||
flathub_branch: ${{ inputs.flathub_branch }} | ||
secrets: inherit |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
name: Linux AppImage | ||
|
||
on: | ||
workflow_call: | ||
|
||
jobs: | ||
linux-x64-appimage-build: | ||
name: "x64" | ||
runs-on: ubuntu-22.04 | ||
timeout-minutes: 120 | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Install Packages | ||
run: scripts/appimage/install-packages.sh | ||
|
||
- name: Cache Dependencies | ||
id: cache-deps | ||
uses: actions/[email protected] | ||
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: Download Patch Archives | ||
shell: bash | ||
run: | | ||
cd data/resources | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip" | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip" | ||
- 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/[email protected] | ||
with: | ||
name: "linux-x64-appimage" | ||
path: "DuckStation-x64.AppImage" | ||
|
||
|
||
linux-x64-sse2-appimage-build: | ||
name: "x64 SSE2" | ||
runs-on: ubuntu-22.04 | ||
timeout-minutes: 120 | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Install Packages | ||
run: scripts/appimage/install-packages.sh | ||
|
||
- name: Cache Dependencies | ||
id: cache-deps | ||
uses: actions/[email protected] | ||
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: Download Patch Archives | ||
shell: bash | ||
run: | | ||
cd data/resources | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip" | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip" | ||
- 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/[email protected] | ||
with: | ||
name: "linux-x64-sse2-appimage" | ||
path: "DuckStation-x64-SSE2.AppImage" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
name: Linux Flatpak | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
flathub_publish: | ||
required: false | ||
type: boolean | ||
default: false | ||
flathub_branch: | ||
required: false | ||
type: string | ||
default: "stable" | ||
|
||
jobs: | ||
linux-flatpak-build: | ||
name: "x64" | ||
runs-on: ubuntu-22.04 | ||
container: | ||
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8 | ||
options: --privileged | ||
timeout-minutes: 120 | ||
steps: | ||
- name: Set Upload Token | ||
if: inputs.flathub_publish | ||
run: | | ||
- uses: actions/[email protected] | ||
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: Download Patch Archives | ||
shell: bash | ||
run: | | ||
cd data/resources | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip" | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip" | ||
- 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 Beta | ||
if: inputs.flathub_publish && inputs.flathub_branch == 'beta' | ||
uses: flathub-infra/flatpak-github-actions/flat-manager@b6c92176b7f578aedd80cac74cd8f0336f618e89 | ||
with: | ||
flat-manager-url: https://hub.flathub.org/ | ||
repository: stable | ||
token: ${{ secrets.FLATHUB_BETA_TOKEN }} | ||
build-log-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | ||
|
||
- name: Push To Flathub Stable | ||
if: inputs.flathub_publish && inputs.flathub_branch == 'stable' | ||
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/[email protected] | ||
with: | ||
name: "linux-flatpak" | ||
path: "duckstation-x64.flatpak" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
name: MacOS | ||
|
||
on: | ||
workflow_call: | ||
|
||
jobs: | ||
macos-build: | ||
name: "Universal" | ||
runs-on: macos-14 | ||
timeout-minutes: 120 | ||
steps: | ||
- uses: actions/[email protected] | ||
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/[email protected] | ||
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: Download Patch Archives | ||
shell: bash | ||
run: | | ||
cd data/resources | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/cheats.zip" | ||
curl -LO "https://github.com/duckstation/chtdb/releases/download/latest/patches.zip" | ||
- 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/[email protected] | ||
with: | ||
name: "macos" | ||
path: "build/duckstation-mac-release.zip" |
Oops, something went wrong.