ref: 8ecd22ff6794dc143fc22c5a629590838c2dc6db
dir: /.github/workflows/release.yml/
name: Make Release Builds
on: [workflow_dispatch]
jobs:
build-linux-appimage:
runs-on: ubuntu-20.04 # Use oldest distro still supported by GitHub to cover the oldest possible glibc
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3 # Checks out repository under $GITHUB_WORKSPACE so the job can access it
with:
submodules: 'recursive'
- name: Get CPU count
run: |
NPROC=$(python3 -c 'import multiprocessing; print(multiprocessing.cpu_count())')
echo "NPROC=$NPROC" >> $GITHUB_ENV
echo CPU count = $NPROC
- name: Get build dependencies for SDL from APT # cf. https://github.com/libsdl-org/SDL/blob/main/docs/README-linux.md
run: |
sudo apt update
sudo apt install -y libasound2-dev libpulse-dev \
libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
- name: Configure
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
- name: Build
run: cmake --build build -- -j ${{ env.NPROC }}
- name: Prepare AppDir
run: bash packaging/prepare_appimage_appdir.sh build/CandyCrisis
- name: Make AppImage
run: |
wget https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
./appimagetool-x86_64.AppImage --no-appstream build/CandyCrisis.AppDir build/CandyCrisis-linux-x86_64.AppImage
- name: Upload
uses: actions/upload-artifact@v3
with:
name: CandyCrisis-linux-x86_64.AppImage
path: build/CandyCrisis-linux-x86_64.AppImage
build-windows:
runs-on: windows-2022
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Configure
run: cmake -S . -B build -G 'Visual Studio 17 2022'
- name: Build
run: cmake --build build --config Release -- -m
- name: Copy vcredist
run: |
cmake --install build --prefix build/install
copy build/ReadMe.txt build/Release
copy build/install/bin/msvcp140.dll build/Release
copy build/install/bin/vcruntime140.dll build/Release
copy build/install/bin/vcruntime140_1.dll build/Release
- name: Upload
uses: actions/upload-artifact@v3
with:
name: CandyCrisis-windows-x64
path: build/Release
build-macos:
runs-on: macos-11
timeout-minutes: 20
steps:
- name: Import codesigning certs
uses: apple-actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
- name: Get CPU count
run: |
NPROC=$(python3 -c 'import multiprocessing; print(multiprocessing.cpu_count())')
echo "NPROC=$NPROC" >> $GITHUB_ENV
echo CPU count = $NPROC
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Configure
run: cmake -S . -B build -G Xcode
- name: Build
run: cmake --build build --config RelWithDebInfo -- -j ${{ env.NPROC }}
- name: Codesign
run: codesign --force --sign ${{ secrets.APPLE_DEVELOPMENT_TEAM }} --options runtime "build/RelWithDebInfo/Candy Crisis.app"
- name: Create dmg
run: |
cp build/ReadMe.txt build/RelWithDebInfo
hdiutil create -fs HFS+ -srcfolder build/RelWithDebInfo -volname "Candy Crisis" build/CandyCrisis-mac.dmg
- name: Notarize
run: |
xcrun notarytool store-credentials MyNotarizationProfileName --apple-id ${{ secrets.APPLE_NOTARIZATION_USERNAME }} --password ${{ secrets.APPLE_NOTARIZATION_PASSWORD }} --team-id ${{ secrets.APPLE_DEVELOPMENT_TEAM }}
xcrun notarytool submit build/CandyCrisis-mac.dmg --keychain-profile MyNotarizationProfileName --wait
- name: Staple
run: xcrun stapler staple build/CandyCrisis-mac.dmg
- name: Upload
uses: actions/upload-artifact@v3
with:
name: CandyCrisis-mac.dmg
path: build/CandyCrisis-mac.dmg