Repository navigation
82 lines (81 loc) · 3.52 KB
/
Copy pathjava.yml
File metadata and controls
82 lines (81 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
name: Java edition checks
on:
push:
paths: ['java/**', '!java/*.md', '!java/SHA256SUMS', '.github/workflows/java.yml']
pull_request:
paths: ['java/**', '!java/*.md', '!java/SHA256SUMS', '.github/workflows/java.yml']
workflow_dispatch:
inputs:
publish_release:
description: Publish the accepted Java beta as a prerelease
type: boolean
default: false
permissions:
contents: read
jobs:
java:
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: actions/setup-java@77dd5b2ce225ea11469928ac317850245a74ae78 # v6.2.0
with:
distribution: temurin
java-version: '25'
cache: gradle
cache-dependency-path: 'java/**/*.gradle'
- name: Compile, behavioral checks and both loader packages
working-directory: java
run: bash gradlew :core:check :fabric:build :neoforge:build
- name: Compile isolated game acceptance fixtures
working-directory: java
run: bash gradlew :fabric:compileQaJava :neoforge:compileQaJava -PrustyQa=singleplayer
- name: Run host placement and safety regressions without launching a client
working-directory: java
run: bash gradlew :fabric:hostRegression -PrustyQa=singleplayer
- name: Inspect download packages
run: python java/verify_artifacts.py
- name: Stage installable downloads
run: |
mkdir -p java/release
cp java/fabric/build/libs/*.jar java/release/
cp java/neoforge/build/libs/*.jar java/release/
cp java/SHA256SUMS java/release/
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9
with:
name: rusty-java-1.4.0-beta.1
path: java/release/*
publish:
name: Publish Java prerelease
needs: java
# Explicit release commits use the same checked publisher as manual dispatch.
if: github.ref == 'refs/heads/main' && ((github.event_name == 'workflow_dispatch' && inputs.publish_release) || (github.event_name == 'push' && contains(github.event.head_commit.message, '[release]')))
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333
with:
name: rusty-java-1.4.0-beta.1
path: release
- name: Publish immutable Java beta without changing native latest
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
run: |
tag=java-v1.4.0-beta.1
(cd release && sha256sum --check SHA256SUMS)
if gh release view "$tag" --json isDraft > release-state.json 2>/dev/null; then
if [ "$(jq -r .isDraft release-state.json)" = true ]; then
gh release upload "$tag" release/* --clobber
fi
else
gh release create "$tag" release/* --draft --target "$GITHUB_SHA" --prerelease --latest=false --title "Rusty Java 1.4.0-beta.1 - Fabric and NeoForge" --notes-file java/RELEASE_NOTES.md
fi
mkdir -p verified-downloads
gh release download "$tag" --dir verified-downloads
(cd verified-downloads && sha256sum --check ../release/SHA256SUMS)
if [ "$(gh release view "$tag" --json isDraft --jq .isDraft)" = true ]; then
gh release edit "$tag" --target "$GITHUB_SHA" --draft=false --prerelease --latest=false
fi