shadPS4/.github/workflows/windows-qt.yml
DanielSvoboda 875363a8da Updater
2024-09-12 18:20:13 -03:00

121 lines
3.7 KiB
YAML

# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
name: Windows-Qt
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
BUILD_TYPE: Release
TARGET_REPO: "DanielSvoboda/teste"
SHADPS4_TOKEN: ${{ secrets.SHADPS4_TOKEN }}
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Qt
uses: jurplel/install-qt-action@v4
with:
version: 6.7.2
host: windows
target: desktop
arch: win64_msvc2019_64
archives: qtbase qttools
- name: Cache CMake dependency source code
uses: actions/cache@v4
env:
cache-name: ${{ runner.os }}-qt-cache-cmake-dependency-sources
with:
path: |
${{ github.workspace }}/build
key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }}
restore-keys: |
${{ env.cache-name }}-
- name: Configure CMake
run: cmake -B ${{ github.workspace }}/build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -T ClangCL -DENABLE_QT_GUI=ON
- name: Build
run: cmake --build ${{ github.workspace }}/build --config ${{ env.BUILD_TYPE }} --parallel
- name: Deploy
run: |
mkdir upload
move build/Release/shadPS4.exe upload
windeployqt --dir upload upload/shadPS4.exe
- name: Get date and git hash
id: vars
shell: pwsh
run: |
$date = Get-Date -Format 'yyyy-MM-dd'
$shorthash = git rev-parse --short HEAD
echo "date=$date" >> $env:GITHUB_ENV
echo "shorthash=$shorthash" >> $env:GITHUB_ENV
- name: Create Zip Archive
if: github.event_name == 'push'
run: |
$zipName = "shadPS4-win64-qt-$($env:date)-$($env:shorthash).zip"
Compress-Archive -Path upload/* -DestinationPath $zipName
echo "zipName=$zipName" >> $env:GITHUB_ENV
- name: Upload executable
uses: actions/upload-artifact@v4
with:
name: shadps4-win64-qt-${{ steps.vars.outputs.date }}-${{ steps.vars.outputs.shorthash }}
path: upload
- name: Upload Zip Archive
if: github.event_name == 'push'
uses: actions/upload-artifact@v4
with:
name: ${{ env.zipName }}
path: ${{ env.zipName }}
- name: Create GitHub Release
if: github.event_name == 'push'
id: create_release
shell: pwsh
run: |
$date = $env:date
$shorthash = $env:shorthash
$uri = "https://api.github.com/repos/${{ env.TARGET_REPO }}/releases"
$headers = @{
"Authorization" = "token $($env:SHADPS4_TOKEN)"
"Accept" = "application/vnd.github.v3+json"
}
$body = @{
"tag_name" = "build-$date-$shorthash"
"name" = "shadPS4-win64-qt-$($env:date)-$($env:shorthash)"
"draft" = $false
"prerelease" = $false
} | ConvertTo-Json
$response = Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body -ContentType "application/json"
$response.id | Out-File -FilePath release_id.txt
- name: Upload to GitHub Release
if: github.event_name == 'push'
shell: pwsh
run: |
$release_id = Get-Content release_id.txt
$filePath = $env:zipName
$url = "https://uploads.github.com/repos/${{ env.TARGET_REPO }}/releases/$release_id/assets?name=$filePath"
Write-Output "Uploading $filePath to $url"
Invoke-RestMethod -Uri $url -Method Post -Headers @{
"Authorization" = "token $($env:SHADPS4_TOKEN)"
"Content-Type" = "application/octet-stream"
} -InFile $filePath