Update build-and-release.yml #115
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 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.fetch-translations.result != 'failure' }} | |
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 | |
if: ${{ always() && needs.fetch-translations.result == 'skipped' }} | |
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 }}-${{ 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 }} | |
sed -i -e 's|SentryDSN = "";|SentryDSN = "${{ secrets.SENTRY_DSN }}";|g' ${{ env.project-path }}/Program.cs | |
- 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: Rename Binary | |
run: | | |
mv ${{ env.built-executable-path }} ${{ env.PROJECT }}-${{ env.build-version-info }}-${{ matrix.target }}${{ (startsWith(matrix.target, 'win') && '.exe') || ' ' }} | |
- name: Create Release | |
uses: ncipollo/release-action@v1.14.0 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
artifacts: ${{ env.PROJECT }}-${{ env.build-version-info }}-${{ matrix.target }}${{ (startsWith(matrix.target, 'win') && '.exe') || ' ' }} | |
tag: ${{ format('{0}-{1}', env.date, github.run_number) }} | |
name: ${{ env.build-version-info }} | |
generateReleaseNotes: true | |
allowUpdates: true | |
makeLatest: true | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
replacesArtifacts: false | |
- name: Sentry Release | |
uses: getsentry/action-release@v1.7.0 | |
# Sentry Releases will only be created in the MCCTeam repository, since it needs Sentry secrets. | |
if: ${{ github.repository == 'MCCTeam/Minecraft-Console-Client' }} | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
with: | |
environment: production | |
dist: ${{ format('{0}-{1}', env.date, github.run_number) }} | |
fetch-translations: | |
strategy: | |
fail-fast: true | |
runs-on: ubuntu-latest | |
needs: determine-build | |
# Translations will only be fetched in the MCCTeam repository, since it needs crowdin secrets. | |
if: ${{ github.repository == 'MCCTeam/Minecraft-Console-Client' }} | |
timeout-minutes: 15 | |
steps: | |
- name: Check cache | |
uses: actions/cache/restore@v3 | |
id: cache-check | |
with: | |
path: ${{ github.workspace }}/* | |
key: "translation-${{ github.sha }}" | |
lookup-only: true | |
restore-keys: "translation-" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
if: steps.cache-check.outputs.cache-hit != 'true' | |
with: | |
fetch-depth: 0 | |
submodules: 'true' | |
- name: Download translations from crowdin | |
uses: crowdin/github-action@v1.6.0 | |
if: steps.cache-check.outputs.cache-hit != 'true' | |
with: | |
upload_sources: false | |
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 }} | |
- name: Save cache | |
uses: actions/cache/save@v3 | |
if: steps.cache-check.outputs.cache-hit != 'true' | |
with: | |
path: ${{ github.workspace }}/* | |
key: "translation-${{ github.sha }}" | |
determine-build: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
if: ${{ !contains(github.event.head_commit.message, 'skip') || !contains(github.event.head_commit.message, 'skipci')}} | |
steps: | |
- name: dummy action | |
run: "echo 'dummy action that checks if the build is to be skipped, if it is, this action does not run to break the entire build action'" |