mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-29 13:04:59 +00:00
* 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
189 lines
7.1 KiB
YAML
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'"
|