mirror of
https://github.com/Vita3K/Vita3K.git
synced 2026-07-11 01:34:23 +02:00
c8113ea462
Bumps the ci-deps group with 2 updates in the / directory: [actions/checkout](https://github.com/actions/checkout) and [actions/cache](https://github.com/actions/cache). Updates `actions/checkout` from 6 to 7 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v6...v7) Updates `actions/cache` from 5 to 6 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: ci-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
357 lines
12 KiB
YAML
357 lines
12 KiB
YAML
name: Build CI
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**.md'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
|
|
env:
|
|
BUILD_CONFIG: Release
|
|
QT_VERSION: '6.11.0'
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
|
|
jobs:
|
|
desktop-build:
|
|
name: Desktop (${{ matrix.platform }})
|
|
runs-on: ${{ matrix.runs_on }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
runs_on: ubuntu-latest
|
|
platform: linux-x64
|
|
arch: x86_64
|
|
cmake_preset: ci-linux-clang-appimage
|
|
linuxdeploy_command: /usr/local/bin/linuxdeploy-x86_64.AppImage
|
|
cache_path: ''
|
|
qt_install_deps: 'true'
|
|
|
|
- os: ubuntu-24.04-arm
|
|
runs_on: ubuntu-24.04-arm
|
|
platform: linux-arm64
|
|
arch: aarch64
|
|
cmake_preset: ci-linux-clang-appimage
|
|
linuxdeploy_command: /usr/local/bin/linuxdeploy-aarch64.AppImage
|
|
cache_path: ''
|
|
qt_install_deps: 'true'
|
|
|
|
- os: windows-latest
|
|
runs_on: windows-latest
|
|
platform: windows-x64
|
|
arch: x86_64
|
|
cmake_preset: ci-windows-msvc
|
|
vcpkg_root: C:\vcpkg
|
|
vcpkg_triplet: x64-windows-static-md
|
|
cache_path: C:\vcpkg-binary-cache
|
|
qt_install_deps: 'false'
|
|
|
|
- os: windows-11-arm
|
|
runs_on: windows-11-arm
|
|
platform: windows-arm64
|
|
cmake_preset: ci-windows-msys2-clang
|
|
msys2_env: CLANGARM64
|
|
cache_path: C:\msys2-ccache
|
|
qt_install_deps: 'false'
|
|
|
|
- os: macos-intel
|
|
platform: macos-x64
|
|
runs_on: macos-latest
|
|
cmake_preset: ci-macos-x64
|
|
cache_path: ~/Library/Caches/ccache
|
|
qt_install_deps: 'false'
|
|
|
|
- os: macos-arm64
|
|
platform: macos-arm64
|
|
runs_on: macos-latest
|
|
cmake_preset: ci-macos-arm64
|
|
cache_path: ~/Library/Caches/ccache
|
|
qt_install_deps: 'false'
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
|
|
- name: Restore cache
|
|
uses: actions/cache@v6
|
|
if: ${{ matrix.cache_path != '' }}
|
|
with:
|
|
path: ${{ matrix.cache_path }}
|
|
key: cache-${{ matrix.platform }}-${{ env.BUILD_CONFIG }}-${{ hashFiles('CMakeLists.txt', 'CMakePresets.json', 'cmake/**', '.ci/**', '.github/workflows/c-cpp.yml', 'vcpkg.json') }}
|
|
restore-keys: |
|
|
cache-${{ matrix.platform }}-${{ env.BUILD_CONFIG }}-
|
|
|
|
- name: Set up build environment (Linux)
|
|
run: bash ./.ci/setup-linux.sh ${{ matrix.arch }} with-appimage
|
|
if: startsWith(matrix.platform, 'linux-')
|
|
|
|
- name: Set up build environment (macOS)
|
|
run: bash ./.ci/setup-macos.sh
|
|
if: startsWith(matrix.platform, 'macos-')
|
|
|
|
- name: Set up build environment (Windows MSVC)
|
|
shell: pwsh
|
|
env:
|
|
VCPKG_ROOT: ${{ matrix.vcpkg_root }}
|
|
VCPKG_BINARY_CACHE: ${{ matrix.cache_path }}
|
|
run: |
|
|
New-Item -ItemType Directory -Force -Path $env:VCPKG_BINARY_CACHE | Out-Null
|
|
.\.ci\setup-windows-msvc.ps1 -VcpkgTriplet '${{ matrix.vcpkg_triplet }}'
|
|
if: matrix.platform == 'windows-x64'
|
|
|
|
- uses: TheMrMilchmann/setup-msvc-dev@v4
|
|
with:
|
|
arch: ${{ matrix.arch }}
|
|
if: matrix.platform == 'windows-x64'
|
|
|
|
- uses: mozilla-actions/sccache-action@v0.0.10
|
|
if: startsWith(matrix.platform, 'linux-') || matrix.platform == 'windows-x64'
|
|
with:
|
|
disable_annotations: true
|
|
|
|
- name: Set up MSYS2 (Windows ARM)
|
|
uses: msys2/setup-msys2@v2
|
|
if: matrix.platform == 'windows-arm64'
|
|
with:
|
|
msystem: ${{ matrix.msys2_env }}
|
|
update: true
|
|
cache: true
|
|
install: |
|
|
git
|
|
pacboy: |
|
|
clang:p
|
|
ccache:p
|
|
cmake:p
|
|
lld:p
|
|
ninja:p
|
|
boost:p
|
|
openssl:p
|
|
curl:p
|
|
zlib:p
|
|
qt6-base:p
|
|
qt6-multimedia:p
|
|
qt6-svg:p
|
|
qt6-tools:p
|
|
|
|
- name: Reset ccache statistics
|
|
run: ccache -z
|
|
if: startsWith(matrix.platform, 'macos-')
|
|
|
|
- name: Install Qt 6.11.0 (Windows MSVC)
|
|
uses: jurplel/install-qt-action@v4
|
|
if: matrix.platform == 'windows-x64'
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
modules: qtmultimedia
|
|
host: windows
|
|
target: desktop
|
|
arch: win64_msvc2022_64
|
|
cache: true
|
|
install-deps: ${{ matrix.qt_install_deps }}
|
|
aqtsource: git+https://github.com/miurahr/aqtinstall.git@f383b3c7d9658e881bd8ce8810057393bd934ee1
|
|
|
|
- name: Install Qt 6.11.0
|
|
uses: jurplel/install-qt-action@v4
|
|
if: matrix.platform != 'windows-arm64' && matrix.platform != 'windows-x64'
|
|
with:
|
|
version: ${{ env.QT_VERSION }}
|
|
modules: qtmultimedia
|
|
cache: true
|
|
install-deps: ${{ matrix.qt_install_deps }}
|
|
|
|
- name: Build desktop target (Linux/macOS)
|
|
env:
|
|
VITA3K_LINUXDEPLOY_COMMAND: ${{ matrix.linuxdeploy_command }}
|
|
run: bash ./.ci/build-desktop.sh --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }}
|
|
if: startsWith(matrix.platform, 'linux-') || startsWith(matrix.platform, 'macos-')
|
|
|
|
- name: Build desktop target (Windows MSVC)
|
|
shell: bash
|
|
env:
|
|
VCPKG_ROOT: ${{ matrix.vcpkg_root }}
|
|
VCPKG_BINARY_CACHE: ${{ matrix.cache_path }}
|
|
run: bash ./.ci/build-desktop.sh --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }}
|
|
if: matrix.platform == 'windows-x64'
|
|
|
|
- name: Build desktop target (Windows ARM MSYS2)
|
|
shell: msys2 {0}
|
|
run: bash ./.ci/build-windows-msys2.sh --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }}
|
|
if: matrix.platform == 'windows-arm64'
|
|
|
|
- name: Compute artifact paths
|
|
shell: bash
|
|
run: |
|
|
echo "GIT_SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
|
|
echo "ARTIFACT_NAME=vita3k-$(git rev-parse --short HEAD)-${{ matrix.platform }}" >> "$GITHUB_ENV"
|
|
echo "ARTIFACT_DIR=artifacts/vita3k-$(git rev-parse --short HEAD)-${{ matrix.platform }}" >> "$GITHUB_ENV"
|
|
|
|
- name: Stage desktop artifact (Linux/macOS)
|
|
run: bash ./.ci/package-desktop.sh --platform ${{ matrix.platform }} --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }} --output-dir "${{ env.ARTIFACT_DIR }}"
|
|
if: startsWith(matrix.platform, 'linux-') || startsWith(matrix.platform, 'macos-')
|
|
|
|
- name: Stage desktop artifact (Windows MSVC)
|
|
shell: bash
|
|
run: bash ./.ci/package-desktop.sh --platform ${{ matrix.platform }} --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }} --output-dir "${{ env.ARTIFACT_DIR }}"
|
|
if: matrix.platform == 'windows-x64'
|
|
|
|
- name: Stage desktop artifact (Windows ARM MSYS2)
|
|
shell: msys2 {0}
|
|
run: bash ./.ci/package-desktop.sh --platform ${{ matrix.platform }} --preset ${{ matrix.cmake_preset }} --config ${{ env.BUILD_CONFIG }} --output-dir "${{ env.ARTIFACT_DIR }}"
|
|
if: matrix.platform == 'windows-arm64'
|
|
|
|
- name: Print ccache statistics
|
|
run: ccache -s
|
|
if: startsWith(matrix.platform, 'macos-')
|
|
|
|
- name: Print sccache statistics
|
|
run: sccache --show-stats
|
|
if: startsWith(matrix.platform, 'linux-') || matrix.platform == 'windows-x64'
|
|
|
|
- name: Upload desktop artifact
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME }}
|
|
path: ${{ env.ARTIFACT_DIR }}
|
|
|
|
android-build:
|
|
name: Android
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
VCPKG_BINARY_CACHE: ${{ github.workspace }}/.vcpkg-binary-cache
|
|
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
|
|
- name: Restore vcpkg binary cache
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: ${{ env.VCPKG_BINARY_CACHE }}
|
|
key: vcpkg-bincache-android-${{ hashFiles('vcpkg.json', 'CMakeLists.txt', 'cmake/**', '.ci/**', 'android/app/build.gradle') }}
|
|
restore-keys: |
|
|
vcpkg-bincache-android-
|
|
|
|
- name: Set up Java
|
|
uses: actions/setup-java@v5
|
|
with:
|
|
distribution: temurin
|
|
java-version: '17'
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v6
|
|
with:
|
|
add-job-summary: on-failure
|
|
cache-provider: basic
|
|
validate-wrappers: false
|
|
|
|
- name: Set up Android SDK tools
|
|
uses: android-actions/setup-android@v4
|
|
|
|
- name: Set up Android build environment
|
|
env:
|
|
VCPKG_ROOT: /usr/local/share/vcpkg
|
|
run: |
|
|
mkdir -p "$VCPKG_BINARY_CACHE"
|
|
bash ./.ci/setup-android.sh
|
|
|
|
- uses: hendrikmuhs/ccache-action@v1.2.23
|
|
|
|
- name: Decode Android keystore
|
|
env:
|
|
KEYSTORE_ENCODED: ${{ secrets.KEYSTORE }}
|
|
run: |
|
|
if [ -n "$KEYSTORE_ENCODED" ]; then
|
|
echo "$KEYSTORE_ENCODED" | base64 --decode > /home/runner/keystore.jks
|
|
fi
|
|
|
|
- name: Compute artifact paths
|
|
shell: bash
|
|
run: |
|
|
echo "GIT_SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
|
|
echo "ARTIFACT_NAME=vita3k-$(git rev-parse --short HEAD)-android" >> "$GITHUB_ENV"
|
|
echo "ARTIFACT_DIR=artifacts/vita3k-$(git rev-parse --short HEAD)-android" >> "$GITHUB_ENV"
|
|
|
|
- name: Build Android target
|
|
env:
|
|
SIGNING_STORE_PATH: /home/runner/keystore.jks
|
|
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
|
|
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
|
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
|
VCPKG_ROOT: /usr/local/share/vcpkg
|
|
ANDROID_NDK_HOME: ${{ env.ANDROID_NDK_HOME }}
|
|
run: bash ./.ci/build-android.sh "${{ env.ARTIFACT_DIR }}"
|
|
|
|
- name: Print Android ccache statistics
|
|
run: ccache -s
|
|
|
|
- name: Upload Android artifact
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME }}
|
|
path: ${{ env.ARTIFACT_DIR }}
|
|
|
|
create-release:
|
|
needs: [desktop-build, android-build]
|
|
runs-on: ubuntu-latest
|
|
concurrency:
|
|
group: create-release
|
|
cancel-in-progress: false
|
|
if: |
|
|
github.ref == 'refs/heads/master' &&
|
|
github.repository == 'Vita3K/Vita3K'
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v8
|
|
|
|
- name: Get commit info
|
|
run: |
|
|
echo "GIT_SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
|
|
echo "BUILD_VARIABLE=$(git rev-list --count HEAD)" >> "$GITHUB_ENV"
|
|
echo "LAST_COMMIT_MESSAGE=$(git log -1 --pretty=format:'%s')" >> "$GITHUB_ENV"
|
|
|
|
- name: Get last committer
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
COMMITTER=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
|
|
https://api.github.com/repos/${{ github.repository }}/commits/${{ github.sha }} \
|
|
| jq -r '.commit.author.name')
|
|
echo "COMMITTER_NAME=$COMMITTER" >> "$GITHUB_ENV"
|
|
|
|
- name: Prepare release artifacts
|
|
run: bash ./.ci/release-collect.sh
|
|
|
|
- name: Upload to store repository
|
|
uses: tcnksm/ghr@v0
|
|
with:
|
|
tag: ${{ env.BUILD_VARIABLE }}
|
|
path: artifacts-store/
|
|
owner: ${{ github.repository_owner }}
|
|
repository: Vita3K-builds
|
|
name: "Build: ${{ env.BUILD_VARIABLE }}"
|
|
body: "Corresponding commit: [${{ env.LAST_COMMIT_MESSAGE }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) (${{ env.COMMITTER_NAME }})"
|
|
token: ${{ secrets.STORE_TOKEN }}
|
|
|
|
- name: Upload to master repository
|
|
uses: tcnksm/ghr@v0
|
|
with:
|
|
tag: continuous
|
|
path: artifacts-master/
|
|
delete: "true"
|
|
owner: ${{ github.repository_owner }}
|
|
repository: Vita3K
|
|
name: "Automatic CI builds"
|
|
body: "Corresponding commit: ${{ github.sha }}\nVita3K Build: ${{ env.BUILD_VARIABLE }}"
|