forked from cafeberry/cafeberry
feat: release workflow
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
name: Build PS3
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: windows-2022
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
configuration: [Release, Debug]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: https://github.com/actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build Minecraft Legacy Console Edition
|
|
||||||
run: |
|
|
||||||
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
|
|
||||||
/p:Configuration=${{ matrix.configuration }} `
|
|
||||||
/p:Platform=PS3 `
|
|
||||||
/m
|
|
||||||
|
|
||||||
- name: Upload Release + Debug Artifacts
|
|
||||||
uses: https://github.com/actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: MinecraftClient-${{ matrix.configuration }}
|
|
||||||
path: PS3_${{ matrix.configuration }}
|
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
name: Build & Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Version tag for release (e.g. v1.0.0).'
|
||||||
|
required: true
|
||||||
|
default: ''
|
||||||
|
notes:
|
||||||
|
description: 'URL to notes for release.'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate:
|
||||||
|
runs-on: windows-2022
|
||||||
|
steps:
|
||||||
|
- name: Validate version format
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
if (-not ("${{ inputs.version }}" -match '^v\d+\.\d+\.\d+[a-zA-Z0-9.-]*$')) {
|
||||||
|
Write-Error "Version '${{ inputs.version }}' doesn't match expected format (e.g. v1.0.0)"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: windows-2022
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
configuration: [Release]
|
||||||
|
platform: [PS3, Windows64] #[PS3, PSVita, Xbox 360, ORBIS, Windows64]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build Cafeberry
|
||||||
|
run: |
|
||||||
|
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" MinecraftConsoles.sln `
|
||||||
|
/p:Configuration=${{ matrix.configuration }} `
|
||||||
|
/p:Platform=${{ matrix.platform }} `
|
||||||
|
/m
|
||||||
|
|
||||||
|
- name: Zip Build (Consoles)
|
||||||
|
if: matrix.platform != 'Windows64'
|
||||||
|
run: 7z a -r LCE${{ matrix.platform }}.zip ./${{ matrix.platform }}_${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
|
||||||
|
|
||||||
|
- name: Zip Build (Windows64)
|
||||||
|
if: matrix.platform == 'Windows64'
|
||||||
|
run: 7z a -r LCE${{ matrix.platform }}.zip ./x64/${{ matrix.configuration }}/* "-x!*.ipdb" "-x!*.iobj"
|
||||||
|
|
||||||
|
- name: Stage artifacts
|
||||||
|
run: |
|
||||||
|
New-Item -ItemType Directory -Force -Path staging
|
||||||
|
Copy-Item LCE${{ matrix.platform }}.zip staging/
|
||||||
|
|
||||||
|
- name: Stage artifacts
|
||||||
|
run: |
|
||||||
|
New-Item -ItemType Directory -Force -Path staging
|
||||||
|
Copy-Item LCE${{ matrix.platform }}.zip staging/
|
||||||
|
|
||||||
|
- name: Stage exe
|
||||||
|
if: matrix.platform == 'Windows64'
|
||||||
|
run: |
|
||||||
|
Copy-Item ./x64/${{ matrix.platform }}/Minecraft.Client.exe staging/
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: https://github.com/actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: build-${{ matrix.platform }}
|
||||||
|
path: staging/*
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: build
|
||||||
|
runs-on: windows-2022
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Download all build artifacts
|
||||||
|
uses: https://github.com/actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
path: downloaded
|
||||||
|
|
||||||
|
- name: Read release notes
|
||||||
|
id: notes
|
||||||
|
run: |
|
||||||
|
$notesSource = "${{ inputs.notes }}"
|
||||||
|
$fallback = "## Cafeberry`n`n### Whoever made this release forgot to put notes, sorry!"
|
||||||
|
|
||||||
|
if ($notesSource -match '^https?://') {
|
||||||
|
try {
|
||||||
|
$body = (Invoke-WebRequest -Uri $notesSource -UseBasicParsing).Content
|
||||||
|
if ([string]::IsNullOrWhiteSpace($body)) { $body = $fallback }
|
||||||
|
} catch {
|
||||||
|
$body = $fallback
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (Test-Path $notesSource) {
|
||||||
|
$body = Get-Content -Raw -Path $notesSource
|
||||||
|
if ([string]::IsNullOrWhiteSpace($body)) { $body = $fallback }
|
||||||
|
} else {
|
||||||
|
$body = $fallback
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"description<<EOF`n$body`nEOF" | Out-File -Append -Encoding utf8 -NoNewline:$false $env:GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Publish to Gitea Release
|
||||||
|
uses: akkuman/gitea-release-action@v1
|
||||||
|
with:
|
||||||
|
name: ${{ inputs.version }}
|
||||||
|
server_url: ${{ gitea.server_url }}
|
||||||
|
repository: ${{ gitea.repository }}
|
||||||
|
token: ${{ gitea.token }}
|
||||||
|
tag_name: ${{ inputs.version }}
|
||||||
|
prerelease: false
|
||||||
|
verbose: true
|
||||||
|
files: downloaded/**/*
|
||||||
|
body: ${{ steps.notes.outputs.description }}
|
||||||
Reference in New Issue
Block a user