Build Release package #96
Workflow file for this run
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
name: Build Release package | |
on: | |
push: | |
tags: | |
- 'release_*' | |
env: | |
QT_VERSION: 5.12.12 | |
jobs: | |
create_release: | |
name: Create GitHub release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
# Creates a release package page on github | |
# create_release.inputs: (notable inputs) | |
# allowUpdates=false if true, update an existing release if it exists | |
# artifactErrorsFailBuild=false if true, fails the build should artifact read/write errors occur | |
# artifacts optional set of paths to artifacts to upload to the release. comma delimited. | |
# removeArtifacts=false if true, remove existing artifacts | |
# replaceArtifacts=false if true, replace/overwrite existing artifacts | |
# create_release.outputs: | |
# id id of the created release | |
# html_url HTML URL of the release | |
# upload_url FTP URL of the release where assets are uploaded | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Release ${{ github.ref }} | |
draft: false | |
prerelease: false | |
build_linux: | |
strategy: | |
matrix: | |
# Run this job for each configuration | |
# The current config running is accesible with `matrix.configuration` | |
configuration: [FastDebug, Release] | |
name: Linux | |
needs: create_release # Don't run this job until create_release is done and successful | |
runs-on: ubuntu-latest | |
container: ghcr.io/scp-fs2open/linux_build:sha-1ff82e8 | |
steps: | |
- uses: actions/checkout@v1 | |
# checks-out your repository under $GITHUB_WORKSPACE, so your workflow can access it. | |
name: Checkout | |
with: | |
submodules: true # `true` to checkout submodules, `recursive` to recursively checkout submodules | |
ref: '${{ github.ref }}' | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: gcc-9 | |
ENABLE_QTFRED: OFF | |
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh | |
- name: Compile | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
run: | | |
LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
XDG_RUNTIME_DIR: /root | |
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh | |
- name: Generate AppImage | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install | |
- name: Upload build result | |
uses: actions/upload-artifact@v3 | |
# Upload the url file for use with other runners | |
# upload-artifact.inputs: | |
# if-no-files-found=warn What to do if path fails to find any files. | |
# warn Display a warning but do not fail the action | |
# error Display an error and fail the action | |
# ignore No display, No fail | |
# retention-days=0 Days to keep the artifact. | |
# 0 Use default retention policy of the repo | |
# 1~90 Min 1, Max 90 days to keep the artifact unless changed by repo settings page | |
with: | |
name: linux-${{ matrix.configuration }} | |
path: ${{ github.workspace }}/build/install/*.AppImage | |
linux_zip: | |
name: Build Linux distribution zip | |
needs: build_linux | |
runs-on: ubuntu-latest | |
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d | |
steps: | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: '0' # value 0 to fetch all history and tags for all branches | |
ref: '${{ github.ref }}' | |
- name: Download Release builds | |
# Grab the release builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: linux-Release | |
path: builds | |
- name: Download FastDebug builds | |
# Grab the debug builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: linux-FastDebug | |
path: builds | |
- name: Create Distribution package | |
# Zip both builds together | |
id: generate_package | |
working-directory: ./builds | |
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Linux | |
- name: Upload result package | |
# Stash the result to artifact filespace | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.generate_package.outputs.package_name }} | |
path: ${{ steps.generate_package.outputs.package_path }} | |
- name: Publish result package | |
# publish the zipped result | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: ${{ steps.generate_package.outputs.package_path }} | |
build_windows: | |
strategy: | |
matrix: | |
configuration: [FastDebug, Release] | |
arch: [Win32, x64] | |
simd: [SSE2, AVX] | |
needs: create_release | |
name: Windows | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v1 | |
# Checkout repo | |
name: Checkout | |
with: | |
submodules: true | |
ref: '${{ github.ref }}' | |
# - name: Cache Qt | |
# # Cache Qt | |
# id: cache-qt-win | |
# uses: actions/cache@v1 | |
# with: | |
# path: ${{ github.workspace }}/../Qt | |
# key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} | |
# - name: Install Qt (32 bit) | |
# # Install Qt 32bit if matrix.arch == Win32 | |
# uses: jurplel/install-qt-action@v2 | |
# if: ${{ matrix.arch == 'Win32' }} | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# arch: win32_msvc2017 | |
# cached: ${{ steps.cache-qt-win.outputs.cache-hit }} | |
# aqtversion: ==0.8 | |
# - name: Install Qt (64 bit) | |
# # Install Qt 64bit if matrix.arch == x64 | |
# uses: jurplel/install-qt-action@v2 | |
# if: ${{ matrix.arch == 'x64' }} | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# arch: win64_msvc2017_64 | |
# cached: ${{ steps.cache-qt-win.outputs.cache-hit }} | |
# aqtversion: ==0.8 | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.204.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
ARCHITECTURE: ${{ matrix.arch }} | |
SIMD: ${{ matrix.simd }} | |
shell: bash | |
run: | | |
mkdir build | |
cd build | |
if [ "$ARCHITECTURE" = "Win32" ]; then | |
cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ | |
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$SIMD" \ | |
-DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ | |
-DFSO_INSTALL_DEBUG_FILES="ON" -DFSO_BUILD_WITH_VULKAN="OFF" -A "$ARCHITECTURE" \ | |
-G "Visual Studio 16 2019" -T "v142" .. | |
else | |
cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ | |
-DFSO_USE_VOICEREC="ON" -DMSVC_SIMD_INSTRUCTIONS="$SIMD" \ | |
-DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ | |
-DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \ | |
-G "Visual Studio 16 2019" -T "v142" .. | |
fi | |
- name: Compile | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
shell: bash | |
run: | | |
cmake --build . --config "$CONFIGURATION" --target INSTALL -- /verbosity:minimal | |
ls -alR "$(pwd)/install" | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
shell: bash | |
run: ./bin/$CONFIGURATION/unittests --gtest_shuffle | |
- name: Upload build result | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows-${{ matrix.configuration }}-${{ matrix.arch }}-${{ matrix.simd }} | |
path: ${{ github.workspace }}/build/install/* | |
windows_zip: | |
name: Build Windows distribution zip | |
needs: build_windows | |
runs-on: ubuntu-latest | |
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d | |
strategy: | |
fail-fast: false # Run the other jobs in the matrix instead of failing them | |
matrix: | |
arch: [Win32, x64] | |
simd: [SSE2, AVX] | |
steps: | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: '0' | |
ref: '${{ github.ref }}' | |
- name: Download Release builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: windows-Release-${{ matrix.arch }}-${{ matrix.simd }} | |
path: builds | |
- name: Download FastDebug builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: windows-FastDebug-${{ matrix.arch }}-${{ matrix.simd }} | |
path: builds | |
- name: Create Distribution package | |
id: generate_package | |
working-directory: ./builds | |
shell: bash | |
env: | |
ARCH: ${{ matrix.arch }} | |
SIMD: ${{ matrix.simd }} | |
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Windows | |
- name: Upload result package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.generate_package.outputs.package_name }} | |
path: ${{ steps.generate_package.outputs.package_path }} | |
- name: Upload debug package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.generate_package.outputs.debug_name }} | |
path: ${{ steps.generate_package.outputs.debug_path }} | |
- name: Publish packages | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: | | |
${{ steps.generate_package.outputs.package_path }} | |
${{ steps.generate_package.outputs.debug_path }} | |
build_mac: | |
strategy: | |
matrix: | |
configuration: [FastDebug, Release] | |
compiler: [clang] | |
arch: [x86_64, arm64] | |
name: Mac | |
needs: create_release | |
runs-on: macos-latest | |
steps: | |
# - name: Cache Qt | |
# id: cache-qt-mac | |
# uses: actions/cache@v1 | |
# with: | |
# path: ${{ github.workspace }}/../Qt | |
# key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} | |
# - name: Install Qt | |
# uses: jurplel/install-qt-action@v2 | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# cached: ${{ steps.cache-qt-mac.outputs.cache-hit }} | |
# setup-python: 'false' | |
# aqtversion: ==1.1.3 | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: 0 | |
ref: '${{ github.ref }}' | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.204.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
ARCHITECTURE: ${{ matrix.arch }} | |
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }} | |
ENABLE_QTFRED: OFF | |
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh | |
- name: Compile | |
working-directory: ./build | |
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja all | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
ARCH: ${{ matrix.arch }} | |
XDG_RUNTIME_DIR: /root | |
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh | |
- name: Sign builds | |
working-directory: ./build/bin | |
run: | | |
# make sure OpenAL framework is signed | |
find . -name OpenAL -type f | while read xx; do codesign --force -s - $xx; done | |
find . -name OpenAL.framework -type d | while read xx; do codesign --force -s - $xx; done | |
# make sure dylibs are signed | |
find . -name \*.dylib -type f | while read xx; do codesign --force -s - $xx; done | |
# sign binaries | |
find . -perm +111 -type f | grep MacOS | while read xx; do codesign --force -s - $xx; done | |
# sign apps | |
find . -name \*.app -maxdepth 1 | while read xx; do codesign --force -s - $xx; done | |
- name: Package build result | |
working-directory: ./build/bin | |
# Use GNU tar here (part of runner image) to avoid weird corruption bug with bsdtar | |
# Ref: https://github.com/actions/runner-images/issues/2619 | |
run: gtar -cvzf macos-build-${{ matrix.configuration }}-${{ matrix.arch }}.tgz *.app | |
- name: Upload build result | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mac-${{ matrix.configuration }}-${{ matrix.arch }} | |
path: ${{ github.workspace }}/build/bin/macos-build-${{ matrix.configuration }}-${{ matrix.arch }}.tgz | |
mac_zip: | |
name: Build Mac distribution zip | |
needs: build_mac | |
runs-on: ubuntu-latest | |
container: ghcr.io/scp-fs2open/sftp_upload:sha-748b19d | |
strategy: | |
matrix: | |
arch: [x86_64, arm64] | |
steps: | |
- uses: actions/checkout@v2 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: '0' | |
ref: '${{ github.ref }}' | |
- name: Download Release builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: mac-Release-${{ matrix.arch }} | |
path: builds | |
- name: Download FastDebug builds | |
uses: actions/download-artifact@v3 | |
with: | |
name: mac-FastDebug-${{ matrix.arch }} | |
path: builds | |
- name: Unpack builds | |
working-directory: ./builds | |
run: | | |
tar -xvzf macos-build-Release-${{ matrix.arch }}.tgz | |
tar -xvzf macos-build-FastDebug-${{ matrix.arch }}.tgz | |
- name: Create Distribution package | |
id: generate_package | |
working-directory: ./builds | |
env: | |
ARCH: ${{ matrix.arch }} | |
run: $GITHUB_WORKSPACE/ci/linux/create_dist_pack.sh Mac | |
- name: Upload result package | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.generate_package.outputs.package_name }} | |
path: ${{ steps.generate_package.outputs.package_path }} | |
- name: Publish result package | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: ${{ steps.generate_package.outputs.package_path }} | |
post_build: | |
name: Post builds to Nebula and Forum | |
needs: [linux_zip, windows_zip, mac_zip] | |
uses: ./.github/workflows/post-build-release.yaml | |
with: | |
linux_result: ${{ needs.linux_zip.result }} | |
windows_result: ${{ needs.windows_zip.result }} | |
mac_result: ${{ needs.mac_zip.result }} | |
releaseTag: ${{ github.ref_name }} | |
secrets: inherit |