2019-12-17 08:03:41 -06:00
|
|
|
name: build
|
|
|
|
|
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- '*'
|
|
|
|
tags:
|
|
|
|
- 'v*.*'
|
|
|
|
- 'snapshot-*'
|
2022-04-09 08:01:23 -05:00
|
|
|
- 'tptlibsdev-*'
|
2019-12-17 08:03:41 -06:00
|
|
|
pull_request:
|
|
|
|
branches:
|
|
|
|
- '*'
|
|
|
|
|
|
|
|
jobs:
|
2022-08-23 04:14:06 -05:00
|
|
|
prepare:
|
2019-12-17 08:03:41 -06:00
|
|
|
runs-on: ubuntu-latest
|
2021-06-03 10:32:03 -05:00
|
|
|
outputs:
|
2022-08-23 04:14:06 -05:00
|
|
|
release_upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
|
|
do_release: ${{ steps.prepare.outputs.do_release }}
|
2022-09-10 17:06:55 -05:00
|
|
|
build_matrix: ${{ steps.prepare.outputs.build_matrix }}
|
|
|
|
publish_matrix: ${{ steps.prepare.outputs.publish_matrix }}
|
2022-08-23 04:14:06 -05:00
|
|
|
release_type: ${{ steps.prepare.outputs.release_type }}
|
|
|
|
release_name: ${{ steps.prepare.outputs.release_name }}
|
|
|
|
mod_id: ${{ steps.prepare.outputs.mod_id }}
|
|
|
|
do_publish: ${{ steps.prepare.outputs.do_publish }}
|
2019-12-17 08:03:41 -06:00
|
|
|
steps:
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v4
|
2021-04-12 14:02:57 -05:00
|
|
|
with:
|
2021-12-13 07:41:02 -06:00
|
|
|
python-version: '3.10'
|
2022-08-23 04:14:06 -05:00
|
|
|
- id: prepare
|
|
|
|
run: python ./.github/prepare.py
|
|
|
|
env:
|
|
|
|
PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }}
|
|
|
|
GITHUB_REF: ${{ github.ref }}
|
|
|
|
- if: steps.prepare.outputs.do_release == 'yes'
|
|
|
|
id: create_release
|
2022-10-19 11:29:16 -05:00
|
|
|
uses: LBPHacker/create-release@v2
|
2019-12-17 08:03:41 -06:00
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
tag_name: ${{ github.ref }}
|
2022-08-23 04:14:06 -05:00
|
|
|
release_name: ${{ steps.prepare.outputs.release_name }}
|
2019-12-17 08:03:41 -06:00
|
|
|
draft: true
|
|
|
|
prerelease: false
|
|
|
|
build:
|
2022-08-23 04:14:06 -05:00
|
|
|
runs-on: ${{ matrix.runs_on }}
|
|
|
|
needs: [prepare]
|
2019-12-17 08:03:41 -06:00
|
|
|
strategy:
|
2022-04-09 08:01:23 -05:00
|
|
|
fail-fast: false
|
2022-09-10 17:06:55 -05:00
|
|
|
matrix: ${{ fromJSON(needs.prepare.outputs.build_matrix) }}
|
2019-12-17 08:03:41 -06:00
|
|
|
steps:
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v4
|
2021-04-12 14:02:57 -05:00
|
|
|
with:
|
2021-12-13 07:41:02 -06:00
|
|
|
python-version: '3.10'
|
2022-08-23 04:14:06 -05:00
|
|
|
- run: python -m pip install meson ninja
|
|
|
|
- if: matrix.bsh_build_platform == 'darwin'
|
|
|
|
run: brew install pkg-config coreutils binutils bash
|
|
|
|
- if: matrix.bsh_build_platform == 'darwin' && matrix.bsh_static_dynamic != 'static'
|
2022-10-11 06:08:42 -05:00
|
|
|
run: brew install luajit curl fftw zlib sdl2 bzip2 jsoncpp
|
2022-08-23 04:14:06 -05:00
|
|
|
- if: matrix.bsh_build_platform == 'linux' && matrix.bsh_host_libc == 'mingw'
|
|
|
|
run: sudo apt update && sudo apt install g++-mingw-w64-x86-64
|
|
|
|
- if: matrix.bsh_build_platform == 'linux' && matrix.bsh_static_dynamic != 'static'
|
2022-10-11 06:08:42 -05:00
|
|
|
run: sudo apt update && sudo apt install libluajit-5.1-dev libcurl4-openssl-dev libfftw3-dev zlib1g-dev libsdl2-dev libbz2-dev libjsoncpp-dev
|
2022-08-23 04:14:06 -05:00
|
|
|
- if: matrix.bsh_build_platform == 'linux' && matrix.bsh_static_dynamic == 'static'
|
|
|
|
run: sudo apt update && sudo apt install libc6-dev libc6-dev-i386
|
2021-04-16 14:02:00 -05:00
|
|
|
- run: bash -c './.github/build.sh'
|
|
|
|
env:
|
2022-08-23 04:14:06 -05:00
|
|
|
BSH_HOST_ARCH: ${{ matrix.bsh_host_arch }}
|
|
|
|
BSH_HOST_PLATFORM: ${{ matrix.bsh_host_platform }}
|
|
|
|
BSH_HOST_LIBC: ${{ matrix.bsh_host_libc }}
|
|
|
|
BSH_STATIC_DYNAMIC: ${{ matrix.bsh_static_dynamic }}
|
|
|
|
BSH_BUILD_PLATFORM: ${{ matrix.bsh_build_platform }}
|
|
|
|
BSH_DEBUG_RELEASE: ${{ matrix.bsh_debug_release }}
|
|
|
|
RELEASE_NAME: ${{ needs.prepare.outputs.release_name }}
|
|
|
|
RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }}
|
|
|
|
MOD_ID: ${{ needs.prepare.outputs.mod_id }}
|
2022-10-23 23:41:12 -05:00
|
|
|
SEPARATE_DEBUG: ${{ matrix.separate_debug }}
|
|
|
|
BUILD_PACKAGE: ${{ matrix.build_package }}
|
2022-08-23 04:14:06 -05:00
|
|
|
ASSET_PATH: ${{ matrix.asset_path }}
|
|
|
|
DEBUG_ASSET_PATH: ${{ matrix.debug_asset_path }}
|
2022-10-23 23:41:12 -05:00
|
|
|
PACKAGE_ASSET_PATH: ${{ matrix.package_asset_path }}
|
|
|
|
PACKAGE_DEBUG_ASSET_PATH: ${{ matrix.package_debug_asset_path }}
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: LBPHacker/upload-release-asset@v2 # TODO-NTL: ship licenses
|
2022-08-23 04:14:06 -05:00
|
|
|
if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes'
|
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
|
|
|
upload_url: ${{ needs.prepare.outputs.release_upload_url }}
|
|
|
|
asset_path: build/${{ matrix.asset_path }}
|
|
|
|
asset_name: ${{ matrix.asset_name }}
|
2022-09-11 00:04:42 -05:00
|
|
|
asset_content_type: application/zip
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: LBPHacker/upload-release-asset@v2
|
2022-08-23 04:14:06 -05:00
|
|
|
if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' && matrix.separate_debug == 'yes'
|
2019-12-17 08:03:41 -06:00
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
2022-08-23 04:14:06 -05:00
|
|
|
upload_url: ${{ needs.prepare.outputs.release_upload_url }}
|
|
|
|
asset_path: build/${{ matrix.debug_asset_path }}
|
|
|
|
asset_name: ${{ matrix.debug_asset_name }}
|
2022-09-11 00:04:42 -05:00
|
|
|
asset_content_type: application/zip
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/upload-artifact@v3
|
2022-08-23 04:14:06 -05:00
|
|
|
if: matrix.artifact == 'yes'
|
2019-12-17 08:03:41 -06:00
|
|
|
with:
|
2022-08-23 04:14:06 -05:00
|
|
|
path: build/${{ matrix.asset_path }}
|
|
|
|
name: ${{ matrix.asset_name }}
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/upload-artifact@v3
|
2022-08-23 04:14:06 -05:00
|
|
|
if: matrix.artifact == 'yes' && matrix.separate_debug == 'yes'
|
2021-04-04 15:09:16 -05:00
|
|
|
with:
|
2022-08-23 04:14:06 -05:00
|
|
|
path: build/${{ matrix.debug_asset_path }}
|
|
|
|
name: ${{ matrix.debug_asset_name }}
|
2022-10-22 14:51:12 -05:00
|
|
|
- uses: actions/upload-artifact@v3
|
2022-10-23 23:41:12 -05:00
|
|
|
if: matrix.artifact == 'yes' && matrix.build_package == 'yes'
|
|
|
|
with:
|
|
|
|
path: build/${{ matrix.package_asset_path }}
|
|
|
|
name: ${{ matrix.package_asset_name }}
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
|
|
if: matrix.artifact == 'yes' && matrix.build_package == 'yes' && matrix.separate_debug == 'yes'
|
2022-10-22 14:51:12 -05:00
|
|
|
with:
|
2022-10-23 23:41:12 -05:00
|
|
|
path: build/${{ matrix.package_debug_asset_path }}
|
|
|
|
name: ${{ matrix.package_debug_asset_name }}
|
2022-09-10 17:06:55 -05:00
|
|
|
publish:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, prepare]
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix: ${{ fromJSON(needs.prepare.outputs.publish_matrix) }}
|
|
|
|
if: needs.prepare.outputs.do_publish == 'yes'
|
|
|
|
steps:
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/download-artifact@v3
|
2022-09-10 17:06:55 -05:00
|
|
|
with:
|
|
|
|
name: ${{ matrix.asset_name }}
|
2022-10-29 02:38:42 -05:00
|
|
|
- run: mv ${{ matrix.asset_name }} ${{ matrix.starcatcher_name }}
|
2022-09-10 17:06:55 -05:00
|
|
|
- run: sudo apt update && sudo apt install lftp && bash -c './.github/starcatcher-publish.sh'
|
2021-04-16 14:02:00 -05:00
|
|
|
env:
|
2022-08-23 04:14:06 -05:00
|
|
|
PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }}
|
|
|
|
PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }}
|
|
|
|
PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }}
|
2022-09-10 17:06:55 -05:00
|
|
|
PUBLISH_DIRECTORY: ${{ secrets.STARCATCHER_PUBLISH_DIRECTORY }}
|
2022-08-23 04:14:06 -05:00
|
|
|
PUBLISH_FILENAME: ${{ matrix.starcatcher_name }}
|
2022-09-10 17:06:55 -05:00
|
|
|
release:
|
2021-04-04 15:09:16 -05:00
|
|
|
runs-on: ubuntu-latest
|
2022-09-10 17:06:55 -05:00
|
|
|
needs: [build, publish, prepare]
|
2022-08-23 04:14:06 -05:00
|
|
|
if: needs.prepare.outputs.do_publish == 'yes'
|
2021-04-04 15:09:16 -05:00
|
|
|
steps:
|
2022-10-19 11:29:16 -05:00
|
|
|
- uses: actions/checkout@v3
|
2022-08-23 04:14:06 -05:00
|
|
|
- run: ./.github/starcatcher-release.sh
|
|
|
|
env:
|
|
|
|
RELEASE_NAME: ${{ needs.prepare.outputs.release_name }}
|
|
|
|
RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }}
|
|
|
|
MOD_ID: ${{ needs.prepare.outputs.mod_id }}
|
|
|
|
GITHUB_SHA: ${{ github.sha }}
|