mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-25 06:20:14 +00:00
4592fc42af
- PR builds will now run even if they weren't opened as drafts - PR builds will now re-run when they get new commits - Builds can now be manually triggered from GitHub
148 lines
5.3 KiB
YAML
148 lines
5.3 KiB
YAML
name: Check Builds
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- src/**
|
|
- vendor/**
|
|
- .github/workflows/check-builds.yaml
|
|
- CMakeLists.txt
|
|
- Makefile
|
|
pull_request:
|
|
types: [opened, reopened, synchronize, ready_for_review]
|
|
paths:
|
|
- src/**
|
|
- vendor/**
|
|
- CMakeLists.txt
|
|
- Makefile
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
ubuntu-build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Set environment
|
|
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV
|
|
shell: bash
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
- name: Install dependencies
|
|
run: sudo apt install clang cmake snap -y && sudo snap install powershell --classic
|
|
- name: Check compilation
|
|
run: |
|
|
$versions = "104", "728", "1013"
|
|
|
|
foreach ($version in $versions) {
|
|
Write-Output "Cleaning old output"
|
|
Invoke-Expression "make clean"
|
|
if ($LASTEXITCODE -ne "0") {
|
|
Write-Error "make clean failed for version $version" -ErrorAction Stop
|
|
}
|
|
Write-Output "Building version $version"
|
|
Invoke-Expression "make -j8 PROTOCOL_VERSION=$version"
|
|
if ($LASTEXITCODE -ne "0") {
|
|
Write-Error "make failed for version $version" -ErrorAction Stop
|
|
}
|
|
Rename-Item -Path "bin/fusion" -newName "$version-fusion"
|
|
Write-Output "Built version $version"
|
|
}
|
|
Copy-Item -Path "sql" -Destination "bin/sql" -Recurse
|
|
Copy-Item -Path "config.ini" -Destination "bin"
|
|
shell: pwsh
|
|
- name: Upload build artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: 'ubuntu22_04-bin-x64-${{ env.SHORT_SHA }}'
|
|
path: bin
|
|
|
|
windows-build:
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Set environment
|
|
run: $s = $env:GITHUB_SHA.subString(0, 7); echo "SHORT_SHA=$s" >> $env:GITHUB_ENV
|
|
shell: pwsh
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
- name: Check compilation
|
|
run: |
|
|
$versions = "104", "728", "1013"
|
|
$configurations = "Release"
|
|
# "Debug" builds are disabled, since we don't really need them
|
|
|
|
$vsPath = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise"
|
|
|
|
Import-Module "$vsPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
|
|
Enter-VsDevShell -VsInstallPath $vsPath -SkipAutomaticLocation
|
|
|
|
Invoke-Expression "vcpkg install sqlite3:x64-windows"
|
|
Invoke-Expression "vcpkg integrate install"
|
|
|
|
foreach ($version in $versions) {
|
|
if (Test-Path -LiteralPath "build") {
|
|
Remove-Item "build" -Recurse
|
|
Write-Output "Deleted existing build folder"
|
|
}
|
|
Invoke-Expression "cmake -B build -DPROTOCOL_VERSION=$version -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"
|
|
if ($LASTEXITCODE -ne "0") {
|
|
Write-Error "cmake generation failed for version $version" -ErrorAction Stop
|
|
}
|
|
Write-Output "Generated build files for version $version"
|
|
|
|
foreach ($configuration in $configurations) {
|
|
Write-Output "Building version $version $configuration"
|
|
Invoke-Expression "msbuild build\OpenFusion.sln /maxcpucount:8 /p:BuildInParallel=true /p:CL_MPCount=8 /p:UseMultiToolTask=true /p:Configuration=$configuration"
|
|
if ($LASTEXITCODE -ne "0") {
|
|
Write-Error "msbuild build failed for version $version" -ErrorAction Stop
|
|
}
|
|
Rename-Item -Path "bin/$configuration" -newName "$version-$configuration"
|
|
Write-Output "Built version $version $configuration"
|
|
Copy-Item -Path "sql" -Destination "bin/$version-$configuration/sql" -Recurse
|
|
Copy-Item -Path "config.ini" -Destination "bin/$version-$configuration"
|
|
}
|
|
}
|
|
shell: pwsh
|
|
- name: Upload build artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: 'windows-vs2019-bin-x64-${{ env.SHORT_SHA }}'
|
|
path: bin
|
|
|
|
copy-artifacts:
|
|
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master'
|
|
runs-on: ubuntu-22.04
|
|
needs: [windows-build, ubuntu-build]
|
|
env:
|
|
BOT_SSH_KEY: ${{ secrets.BOT_SSH_KEY }}
|
|
ENDPOINT: ${{ secrets.ENDPOINT }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
- run: |
|
|
GITDESC=$(git describe --tags)
|
|
mkdir $GITDESC
|
|
echo "ARTDIR=$GITDESC" >> $GITHUB_ENV
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
path: ${{ env.ARTDIR }}
|
|
- name: Upload artifacts
|
|
shell: bash
|
|
run: |
|
|
sudo apt install zip -y
|
|
cd $ARTDIR
|
|
for build in *; do
|
|
cd $build
|
|
zip -r ../$build.zip *
|
|
cd ..
|
|
rm -r $build
|
|
done
|
|
cd ..
|
|
umask 077
|
|
printf %s "$BOT_SSH_KEY" > cdn_key
|
|
scp -i cdn_key -o StrictHostKeyChecking=no -r $ARTDIR $ENDPOINT
|