name: Check Builds on: push: paths: - src/** - vendor/** - .github/workflows/check-builds.yaml - CMakeLists.txt - Makefile pull_request: types: ready_for_review paths: - src/** - vendor/** - CMakeLists.txt - Makefile 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: 'ubuntu20_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-latest 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