build: sync CI with TR1X

This commit is contained in:
Marcin Kurczewski 2024-09-02 22:27:51 +02:00
parent af1c12d2f0
commit 75e931158f
No known key found for this signature in database
GPG Key ID: CC65E6FD28CAE42A
6 changed files with 165 additions and 115 deletions

40
.github/workflows/job_build_game.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: Build the game
on:
workflow_call:
workflow_dispatch:
jobs:
build:
name: Build release assets
runs-on: ubuntu-latest
strategy:
matrix:
include:
- platform: win
just_target: package-win
steps:
- name: Install dependencies
uses: taiki-e/install-action@just
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- id: vars
name: Prepare variables
run: echo "version=$(just output-current-version)" >> $GITHUB_OUTPUT
- name: Package asset (${{ matrix.platform }})
run: just ${{ matrix.just_target }}
- name: Upload the artifact
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}-${{ steps.vars.outputs.version }}-${{ matrix.platform }}
path: |
*.zip
*.exe

87
.github/workflows/job_release.yml vendored Normal file
View File

@ -0,0 +1,87 @@
name: Create a new release
on:
workflow_call:
inputs:
draft:
type: boolean
description: "Draft"
required: true
default: false
prerelease:
type: boolean
description: "Prerelease"
required: true
default: false
release_name:
type: string
description: "Release name"
required: true
default: "Release ${{ github.ref_name }}"
tag_name:
type: string
description: "Tag name"
required: false
default: github.ref_name
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: "Install dependencies"
uses: taiki-e/install-action@just
- name: "Checkout code"
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- name: "Download built game assets"
uses: actions/download-artifact@v4
with:
path: artifacts/
merge-multiple: true
- name: "Generate changelog"
run: |
hash=$(git log -1 --pretty=format:%H)
tag=$(just output-current-version)
echo -e "**Commit: $hash** \n**Tag: $tag**\n\n### Changes\n" > _changes.txt
just output-current-changelog >> _changes.txt
- name: "Get information on the latest pre-release"
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
id: last_release
uses: InsonusK/get-latest-release@v1.0.1
with:
myToken: ${{ github.token }}
exclude_types: "draft|release"
- name: 'Mark the pre-release as latest'
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
uses: EndBug/latest-tag@latest
- name: "Delete old pre-release assets"
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
uses: mknejp/delete-release-assets@v1
continue-on-error: true
with:
token: ${{ github.token }}
tag: ${{ steps.last_release.outputs.tag_name }}
assets: "*.*"
- name: "Publish a release"
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ inputs.release_name }}
tag_name: ${{ inputs.tag_name }}
body_path: _changes.txt
draft: ${{ inputs.draft == true || inputs.draft == 'true' }}
prerelease: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
fail_on_unmatched_files: true
files: |
artifacts/*

View File

@ -9,8 +9,8 @@ jobs:
name: Run code linters
runs-on: ubuntu-latest
steps:
- name: 'Checkout code'
uses: actions/checkout@v2
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0

17
.github/workflows/pr_builds.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: Create a test build
permissions:
contents: write
on:
pull_request:
push:
branches:
- '!stable'
- '!develop'
jobs:
package_multiplatform:
name: 'Create a test build'
uses: ./.github/workflows/job_build_game.yml
secrets: inherit

View File

@ -9,15 +9,20 @@ on:
- develop
jobs:
package_multiplatform:
name: Build prerelease assets
if: vars.PRERELEASE_ENABLE == 'true'
uses: ./.github/workflows/job_build_game.yml
secrets: inherit
publish_prerelease:
name: 'Create a prerelease'
uses: ./.github/workflows/release.yml
if: |
github.ref == 'refs/heads/develop' &&
vars.RELEASE_ENABLE == 'true'
if: vars.PRERELEASE_ENABLE == 'true'
name: Create a prerelease
needs:
- package_multiplatform
with:
release_name: 'Development snapshot'
draft: false
prerelease: true
tag_name: 'latest'
secrets: inherit
uses: ./.github/workflows/job_release.yml

View File

@ -9,29 +9,6 @@ on:
tags:
- "v?[0-9]*"
workflow_call:
inputs:
draft:
type: boolean
description: "Draft"
required: true
default: false
prerelease:
type: boolean
description: "Prerelease"
required: true
default: false
release_name:
type: string
description: "Release name"
required: true
default: "Release ${{ github.ref_name }}"
tag_name:
type: string
description: "Tag name"
required: false
default: github.ref_name
workflow_dispatch:
inputs:
draft:
@ -58,94 +35,18 @@ on:
jobs:
package_multiplatform:
name: Build release assets
runs-on: ubuntu-latest
if: vars.RELEASE_ENABLE == 'true'
strategy:
matrix:
include:
- platform: win
just_target: package-win
steps:
- name: Install dependencies
uses: taiki-e/install-action@just
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- name: Package asset (${{ matrix.platform }})
run: just ${{ matrix.just_target }} ${{ (inputs.prerelease == true || inputs.prerelease == 'true') && 'debug' || 'release' }}
- name: Upload the artifact
uses: actions/upload-artifact@v4
with:
name: packaged_asset-${{ matrix.platform }}
path: |
*.zip
*.exe
uses: ./.github/workflows/job_build_game.yml
secrets: inherit
publish_release:
if: vars.RELEASE_ENABLE == 'true'
name: Create a GitHub release
runs-on: ubuntu-latest
needs:
- package_multiplatform
steps:
- name: "Install dependencies"
uses: taiki-e/install-action@just
- name: "Checkout code"
uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- name: "Download built game assets"
uses: actions/download-artifact@v4
with:
path: artifacts/
merge-multiple: true
- name: "Generate changelog"
run: |
hash=$(git log -1 --pretty=format:%H)
tag=$(just output-current-version)
echo -e "**Commit: $hash** \n**Tag: $tag**\n\n### Changes\n" > _changes.txt
just output-current-changelog >> _changes.txt
- name: "Get information on the latest pre-release"
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
id: last_release
uses: InsonusK/get-latest-release@v1.0.1
with:
myToken: ${{ github.token }}
exclude_types: "draft|release"
- name: 'Mark the pre-release as latest'
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
uses: EndBug/latest-tag@latest
- name: "Delete old pre-release assets"
if: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
uses: mknejp/delete-release-assets@v1
continue-on-error: true
with:
token: ${{ github.token }}
tag: ${{ steps.last_release.outputs.tag_name }}
assets: "*.*"
- name: "Publish a release"
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: ${{ inputs.release_name }}
tag_name: ${{ inputs.tag_name }}
body_path: _changes.txt
draft: ${{ inputs.draft == true || inputs.draft == 'true' }}
prerelease: ${{ inputs.prerelease == true || inputs.prerelease == 'true' }}
fail_on_unmatched_files: true
files: |
artifacts/*
with:
release_name: ${{ inputs.release_name }}
draft: ${{ inputs.draft }}
prerelease: ${{ inputs.draft }}
tag_name: ${{ inputs.tag_name }}
uses: ./.github/workflows/job_release.yml