mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
* Add Sentry Error Tracking * Omit personally identifiable information and add additional sentry context * Remove debug message * Make sentry opt-out and add related notices and strings Also add Minecraft Version to error context * Update build to send release info to sentry * Adjust sentry error tracking - Send the user-friendly Minecraft Version in the error logs - Capture exceptions in more parts of the application We now capture exceptions from the following locations: - Protocol18 (1.8+) Packet errors - Errors during client initialization phase (When client is about to start, session keys are NEVER sent to sentry) * Make Sentry DSN configurable and repository-specific The Sentry DSN will automatically be filled out on the main repository through the Github Actions build. * Update build-and-release.yml Update sed command * style: change variable name nitpick, just to make it a little bit more descriptive * Add Sentry branding in README. * remove old code (merge conflict)
218 lines
8.5 KiB
YAML
218 lines
8.5 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.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: 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
|
|
# 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 }}"
|
|
|
|
build-transition-version:
|
|
runs-on: ubuntu-latest
|
|
if: ${{ always() && needs.fetch-translations.result != 'failure' }}
|
|
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
|
|
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_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 }}
|
|
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: 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
|
|
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) }}
|
|
|
|
- name: Sentry Release
|
|
uses: getsentry/action-release@v1.7.0
|
|
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) }}
|
|
|
|
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'"
|