v1.14.1 changes #66
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 | |
on: | |
push: | |
branches: | |
- 'main' | |
tags: | |
- 'v*.*' | |
- 'snapshot-*' | |
pull_request: | |
branches: | |
- '*' | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
can_publish: ${{ steps.starcatcher_check.outputs.can_publish }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- id: get_type | |
run: python3 ./.github/get-type.py ${{ github.ref }} | |
- id: create_release | |
if: steps.get_type.outputs.TYPE != 'dev' | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ steps.get_type.outputs.NAME }} | |
draft: true | |
prerelease: false | |
- id: starcatcher_check | |
if: steps.get_type.outputs.TYPE != 'dev' | |
run: bash -c './.github/starcatcher-check.sh' | |
env: | |
STARCATCHER_PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} | |
build: | |
runs-on: ${{ matrix.os }} | |
needs: [release] | |
strategy: | |
matrix: | |
# | lin-x86_64 | mac-x86_64 | win-x86_64 | lin-i686 | mac-i686 | win-i686 | lin-arm64 | mac-arm64 | win-arm64 | |
# --------------+------------+------------+------------+------------+------------+------------+------------+------------+------------ | |
# gcc-static | | | NO | NO | NO | NO | NO | | NO | |
# msvc-static | NO | NO | | NO | NO | | NO | NO | NO | |
# mingw-static | | NO | | NO | NO | NO | NO | NO | NO | |
# gcc-dynamic | | | NO | NO | NO | NO | NO | NO [1] | NO | |
# msvc-dynamic | NO | NO | | NO | NO | | NO | NO | NO | |
# mingw-dynamic | | NO | | NO | NO | NO | NO | NO | NO | |
# | |
# [1] This is only required for development on ARM Macs. We have no access to such devices, so someone will | |
# have to help us figure out how to get dynamic libraries. | |
# | |
# Please keep this matrix in sync with the other one in this file, see the ### blocks. | |
# The only difference should be that the second matrix has all mingw cells disabled; we don't publish mingw builds on starcatcher. | |
######################################################### | |
############# BEGIN BLOCK FOR COPYING BELOW ############# | |
######################################################### | |
platform_short: [lin, mac, win] | |
toolset_short: [gcc, msvc, mingw] | |
machine_short: [x86_64, i686, arm64] | |
static_dynamic: [static, dynamic] | |
exclude: | |
- toolset_short: mingw | |
machine_short: i686 # remove this line after copying the matrix below | |
- toolset_short: mingw # remove this line after copying the matrix below | |
platform_short: mac # remove this line after copying the matrix below | |
- machine_short: i686 | |
platform_short: lin | |
- machine_short: i686 | |
platform_short: mac | |
- toolset_short: msvc | |
platform_short: lin | |
- toolset_short: msvc | |
platform_short: mac | |
- toolset_short: gcc | |
platform_short: win | |
- platform_short: lin | |
machine_short: arm64 | |
- platform_short: win | |
machine_short: arm64 | |
- platform_short: mac # see [1] | |
static_dynamic: dynamic | |
machine_short: arm64 | |
######################################################### | |
############## END BLOCK FOR COPYING BELOW ############## | |
######################################################### | |
include: | |
- platform_short: lin | |
os: ubuntu-18.04 | |
suffix: '' | |
- platform_short: mac | |
os: macos-11.0 | |
suffix: '' | |
- platform_short: win | |
os: windows-2019 | |
suffix: '.exe' | |
- platform_short: lin | |
toolset_short: mingw | |
os: ubuntu-20.04 | |
suffix: '.exe' | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- id: get_type | |
run: python3 ./.github/get-type.py ${{ github.ref }} | |
- if: matrix.platform_short == 'lin' && matrix.toolset_short == 'mingw' | |
run: sudo apt update && sudo apt install g++-mingw-w64-x86-64 | |
- if: matrix.platform_short == 'mac' | |
uses: Homebrew/actions/setup-homebrew@master | |
- if: matrix.platform_short == 'mac' | |
run: brew install pkg-config | |
- if: matrix.platform_short == 'mac' && matrix.static_dynamic != 'static' | |
run: brew install luajit curl fftw zlib sdl2 | |
- if: matrix.platform_short == 'lin' && matrix.static_dynamic != 'static' | |
run: sudo apt update && sudo apt install libluajit-5.1-dev libcurl4-openssl-dev libfftw3-dev zlib1g-dev libsdl2-dev | |
- run: python3 -m pip install meson ninja | |
- run: bash -c './.github/build.sh' | |
env: | |
PLATFORM_SHORT: ${{ matrix.platform_short }} | |
MACHINE_SHORT: ${{ matrix.machine_short }} | |
TOOLSET_SHORT: ${{ matrix.toolset_short }} | |
STATIC_DYNAMIC: ${{ matrix.static_dynamic }} | |
RELNAME: ${{ steps.get_type.outputs.NAME }} | |
RELTYPE: ${{ steps.get_type.outputs.TYPE }} | |
MOD_ID: ${{ steps.get_type.outputs.MOD_ID }} | |
- uses: actions/upload-release-asset@v1 | |
if: steps.get_type.outputs.TYPE != 'dev' && matrix.static_dynamic == 'static' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.release.outputs.upload_url }} | |
asset_path: powder${{ matrix.suffix }} | |
asset_name: powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} | |
asset_content_type: application/zip | |
- uses: actions/upload-artifact@v2 | |
if: matrix.static_dynamic == 'static' | |
with: | |
path: powder${{ matrix.suffix }} | |
name: powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} | |
starcatcher-publish: | |
runs-on: ubuntu-latest | |
needs: [build, release] | |
if: needs.release.outputs.can_publish == 'yes' && startsWith(github.ref, 'refs/tags/') # not a perfect match but get-type.py takes care of this in job build | |
strategy: | |
matrix: | |
######################################################### | |
############# BEGIN BLOCK COPIED FROM ABOVE ############# | |
######################################################### | |
platform_short: [lin, mac, win] | |
toolset_short: [gcc, msvc, mingw] | |
machine_short: [x86_64, i686, arm64] | |
static_dynamic: [static, dynamic] | |
exclude: | |
- toolset_short: mingw | |
- machine_short: i686 | |
platform_short: lin | |
- machine_short: i686 | |
platform_short: mac | |
- toolset_short: msvc | |
platform_short: lin | |
- toolset_short: msvc | |
platform_short: mac | |
- toolset_short: gcc | |
platform_short: win | |
- platform_short: lin | |
machine_short: arm64 | |
- platform_short: win | |
machine_short: arm64 | |
- platform_short: mac # see [1] | |
static_dynamic: dynamic | |
machine_short: arm64 | |
######################################################### | |
############## END BLOCK COPIED FROM ABOVE ############## | |
######################################################### | |
- static_dynamic: dynamic | |
include: | |
- platform_short: lin | |
suffix: '' | |
- platform_short: mac | |
suffix: '' | |
- platform_short: win | |
suffix: '.exe' | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- id: get_type | |
run: python3 ./.github/get-type.py ${{ github.ref }} | |
- uses: actions/download-artifact@v1 | |
with: | |
name: powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} | |
- run: sudo apt update && sudo apt install lftp | |
- if: steps.get_type.outputs.TYPE != 'dev' && matrix.static_dynamic == 'static' | |
run: bash -c './.github/starcatcher-publish.sh powder${{ matrix.suffix }}' | |
env: | |
STARCATCHER_PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} | |
STARCATCHER_PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }} | |
STARCATCHER_PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }} | |
STARCATCHER_PUBLISH_FILENAME: powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} | |
starcatcher-release: | |
runs-on: ubuntu-latest | |
needs: [starcatcher-publish, release] | |
if: needs.release.outputs.can_publish == 'yes' && startsWith(github.ref, 'refs/tags/') # not a perfect match but get-type.py takes care of this in job build | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
- id: get_type | |
run: python3 ./.github/get-type.py ${{ github.ref }} | |
- run: ./.github/starcatcher-release.sh "https://starcatcher.us/TPT/perform-release.lua?mod=${{ steps.get_type.outputs.MOD_ID }}&type=${{ steps.get_type.outputs.TYPE }}&name=${{ steps.get_type.outputs.NAME }}&commit=${{ github.sha }}" |