Minecraft-Console-Client/.github/workflows/build-and-release.yml
breadbyte 0aa117d023
Update github build workflow [skip ci] (#2424)
* Update github build workflow

-draft-

* Update build-and-release.yml

- flip jobs order to make the build job at the top of the file, to simplify making changes build changes (since all the build parameters are at the top of the file)
- fixed an issue with the `determine-build` job

* Update build-and-release.yml

- fix build-version-info bug and revert build naming to previous convention

* Update build-and-release.yml

- implement transition version as discussed on discord
2023-03-20 22:00:50 +08:00

189 lines
7.1 KiB
YAML

name: Build MCC and Documents
on:
push:
branches:
- master
workflow_dispatch:
env:
PROJECT: "MinecraftClient"
target-version: "net7.0"
compile-flags: "--self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true -p:DebugType=None"
jobs:
build:
runs-on: ubuntu-latest
if: ${{ always() }}
needs: [determine-build, fetch-translations]
timeout-minutes: 15
strategy:
matrix:
target: [win-x86, win-x64, win-arm, win-arm64, linux-x64, linux-arm, linux-arm64, osx-x64, osx-arm64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: 'true'
- name: Get Current Date
run: |
echo date=$(date +'%Y%m%d') >> $GITHUB_ENV
echo date_dashed=$(date -u +'%Y-%m-%d') >> $GITHUB_ENV
- name: Restore Translations (if available)
uses: actions/cache/restore@v3
with:
path: ${{ github.workspace }}/*
key: "translation-${{ github.sha }}"
restore-keys: "translation-"
- name: Setup Environment Variables (early)
run: |
echo project-path=${{ github.workspace }}/${{ env.PROJECT }} >> $GITHUB_ENV
echo file-ext=${{ (startsWith(matrix.target, 'win') && '.exe') || ' ' }} >> $GITHUB_ENV
- name: Setup Environment Variables
run: |
echo target-out-path=${{ env.project-path }}/bin/Release/${{ env.target-version }}/${{ matrix.target }}/publish/ >> $GITHUB_ENV
echo assembly-info=${{ env.project-path }}/Properties/AssemblyInfo.cs >> $GITHUB_ENV
echo build-version-info=${{ env.date_dashed }}-${{ github.run_number }} >> $GITHUB_ENV
echo commit=$(echo ${{ github.sha }} | cut -c 1-7) >> $GITHUB_ENV
- name: Setup Environment Variables (late)
run: |
echo built-executable-path=${{ env.target-out-path }}${{ env.PROJECT }}${{ env.file-ext }} >> $GITHUB_ENV
- name: Set Version Info
run: |
echo '' >> ${{ env.assembly-info }}
echo "[assembly: AssemblyConfiguration(\"GitHub build ${{ github.run_number }}, built on ${{ env.date_dashed }} from commit ${{ env.commit }}\")]" >> ${{ env.assembly-info }}
- name: Build Target
run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r ${{ matrix.target }} ${{ env.compile-flags }}
env:
DOTNET_NOLOGO: true
- name: Target Publish Executable
uses: tix-factory/release-manager@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
mode: uploadReleaseAsset
filePath: ${{ env.built-executable-path }}
assetName: ${{ env.PROJECT }}-${{ env.build-version-info }}-${{ matrix.target }}${{ (startsWith(matrix.target, 'win') && '.exe') || ' ' }}
tag: ${{ format('{0}-{1}', env.date, github.run_number) }}
fetch-translations:
strategy:
fail-fast: true
runs-on: ubuntu-latest
needs: determine-build
# Only works in MCCTeam repository, since it needs crowdin secrets.
if: ${{ github.repository == 'MCCTeam/Minecraft-Console-Client' }}
timeout-minutes: 15
steps:
- name: Cache
uses: actions/cache@v3.2.4
id: cache-check
with:
path: ${{ github.workspace }}/*
key: 'translation-${{ github.sha }}'
- name: Download translations from crowdin
uses: crowdin/github-action@v1.6.0
if: steps.cache-check.outputs.cache-hit != 'true'
with:
upload_sources: true
upload_translations: false
download_translations: true
localization_branch_name: l10n_master
create_pull_request: false
push_translations: false
base_path: ${{ github.workspace }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_TOKEN }}
build-transition-version:
runs-on: ubuntu-latest
if: ${{ always() }}
needs: [determine-build, fetch-translations]
timeout-minutes: 15
strategy:
fail-fast: true
matrix:
target: [win-x86, win-x64, linux-x64, linux-arm64, osx-x64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: 'true'
- name: Get Current Date
run: |
echo date=$(date +'%Y%m%d') >> $GITHUB_ENV
echo date_dashed=$(date -u +'%Y-%m-%d') >> $GITHUB_ENV
- name: Restore Translations (if available)
uses: actions/cache/restore@v3
with:
path: ${{ github.workspace }}/*
key: "translation-${{ github.sha }}"
restore-keys: "translation-"
- name: Setup Environment Variables (early)
run: |
echo project-path=${{ github.workspace }}/${{ env.PROJECT }} >> $GITHUB_ENV
echo file-ext=${{ (startsWith(matrix.target, 'win') && '.exe') || ' ' }} >> $GITHUB_ENV
- name: Setup Environment Variables
run: |
echo target-out-path=${{ env.project-path }}/bin/Release/${{ env.target-version }}/${{ matrix.target }}/publish/ >> $GITHUB_ENV
echo assembly-info=${{ env.project-path }}/Properties/AssemblyInfo.cs >> $GITHUB_ENV
echo build-version-info=${{ env.date_dashed }}-${{ github.run_number }} >> $GITHUB_ENV
echo commit=$(echo ${{ github.sha }} | cut -c 1-7) >> $GITHUB_ENV
- name: Setup Environment Variables (late)
run: |
echo built-executable-path=${{ env.target-out-path }}${{ env.PROJECT }}${{ env.file-ext }} >> $GITHUB_ENV
- name: Set Version Info
run: |
echo '' >> ${{ env.assembly-info }}
echo "[assembly: AssemblyConfiguration(\"GitHub build ${{ github.run_number }}, built on ${{ env.date_dashed }} from commit ${{ env.commit }}\")]" >> ${{ env.assembly-info }}
- name: Build Target
run: dotnet publish ${{ env.project-path }}.sln -f ${{ env.target-version }} -r ${{ matrix.target }} ${{ env.compile-flags }}
env:
DOTNET_NOLOGO: true
- name: Zip Target
run: zip -qq -r mcc-${{ matrix.target }}.zip *
working-directory: ${{ env.target-out-path }}
- name: Target Publish Executable
uses: tix-factory/release-manager@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
mode: uploadReleaseAsset
filePath: ${{ env.target-out-path }}/mcc-${{ matrix.target }}.zip
# ${{ env.PROJECT }}-linux.zip
assetName: ${{ env.PROJECT }}-${{ (contains(matrix.target, 'linux-x64') && 'linux.zip') || (contains(matrix.target, 'win-x86') && 'windows-x86.zip') || (contains(matrix.target, 'win-x64') && 'windows-x64.zip') || (contains(matrix.target, 'linux-arm64') && 'linux-arm64.zip') || (contains(matrix.target, 'osx-x64') && 'osx.zip') }}
tag: ${{ format('{0}-{1}', env.date, github.run_number) }}
determine-build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
if: ${{ !contains(github.event.head_commit.message, 'skip ci') }}
steps:
- name: dummy action
run: "echo 'dummy action'"