Files
yabridge/.github/workflows/build.yml
T
2020-05-07 18:46:13 +02:00

137 lines
5.2 KiB
YAML

name: Automated builds
on:
push:
branches:
- master
tags:
# Run when pushing version tags, since otherwise it's impossible to
# restart a successful build after pushing a tag
- '*.*.*'
pull_request:
branches:
- master
release:
types: [created]
jobs:
build-bionic:
name: Build on Ubuntu 18.04
runs-on: ubuntu-latest
# This container contains everything needed to build yabridge except for
# Boost since that's not easily available and it the parts we need are
# quick to compile anyway
container: robbert/docker-yabridge:bionic
outputs:
artifact-name: ${{ env.ARCHIVE_NAME }}
# GitHub actions does not allow you to share steps between jobs and their
# yaml parser does not support anchors, so we'll have to duplicate all of
# these steps
# https://github.community/t5/GitHub-Actions/reusing-sharing-inheriting-steps-between-jobs-declarations/td-p/37849
steps:
- uses: actions/checkout@v2
# Needed for git-describe to do anything useful
- name: Fetch all git history
run: git fetch --force --prune --tags --unshallow
- name: Determine build archive name
run: |
export ARCHIVE_NAME=yabridge-$(git describe --always)-ubuntu-18.04.tar.gz
echo ::set-env "name=ARCHIVE_NAME::$ARCHIVE_NAME"
- name: Build the binaries
run: |
# Wine won't create a Wine prefix in ~/.wine because /github/home is
# not owned by the user that's executing this job
mkdir -p /tmp/prefix
export WINEPREFIX=/tmp/prefix
meson setup --buildtype=release --cross-file cross-wine.conf -Duse-bitbridge=true build
ninja -C build
- name: Create an archive for the binaries
run: |
set -e
mkdir yabridge
# This is ran under dash which does not support brace expansion
cp build/libyabridge.so build/yabridge-host.exe build/yabridge-host.exe.so build/yabridge-host-32.exe build/yabridge-host-32.exe.so yabridge
cp README.md yabridge
tar -caf "$ARCHIVE_NAME" yabridge
rm -rf yabridge
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}
build-focal:
name: Build on Ubuntu 20.04
runs-on: ubuntu-latest
# This container contains everything needed to build yabridge except for
# Boost since that's not easily available and it the parts we need are
# quick to compile anyway
container: robbert/docker-yabridge:focal
outputs:
artifact-name: ${{ env.ARCHIVE_NAME }}
steps:
- uses: actions/checkout@v2
# Needed for git-describe to do anything useful
- name: Fetch all git history
run: git fetch --force --prune --tags --unshallow
- name: Determine build archive name
run: |
export ARCHIVE_NAME=yabridge-$(git describe --always).tar.gz
echo ::set-env "name=ARCHIVE_NAME::$ARCHIVE_NAME"
- name: Build the binaries
run: |
# Wine won't create a Wine prefix in ~/.wine because /github/home is
# not owned by the user that's executing this job
mkdir -p /tmp/prefix
export WINEPREFIX=/tmp/prefix
meson setup --buildtype=release --cross-file cross-wine.conf -Duse-bitbridge=true build
ninja -C build
- name: Create an archive for the binaries
run: |
set -e
mkdir yabridge
# This is ran under dash which does not support brace expansion
cp build/libyabridge.so build/yabridge-host.exe build/yabridge-host.exe.so build/yabridge-host-32.exe build/yabridge-host-32.exe.so yabridge
cp README.md yabridge
tar -caf "$ARCHIVE_NAME" yabridge
rm -rf yabridge
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}
upload-releases:
name: Upload the created artifacts to the releases page
runs-on: ubuntu-latest
needs: [build-bionic, build-focal]
if: ${{ github.event_name == 'release' }}
steps:
# They don't allow you to specify multiple file names for these actions
- uses: actions/download-artifact@v2
with:
name: ${{ needs.build-bionic.outputs.artifact-name }}
- uses: actions/download-artifact@v2
with:
name: ${{ needs.build-focal.outputs.artifact-name }}
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./${{ needs.build-bionic.outputs.artifact-name }}
asset_name: $${{ needs.build-bionic.outputs.artifact-name }}
asset_content_type: application/x-compressed-tar
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./${{ needs.build-focal.outputs.artifact-name }}
asset_name: $${{ needs.build-focal.outputs.artifact-name }}
asset_content_type: application/x-compressed-tar