Add shared runner dependency setup for Linux and Windows
CI / Real Minecraft installs (manual) (push) Skipped
CI / Windows launcher (push) Failing after 13s
CI / Rust, web and container (push) Canceled after 0s
Server integrations / paper (push) Canceled after 0s
Server integrations / Fabric and Forge / 1.20.1 (push) Canceled after 0s
Server integrations / Fabric and Forge / 1.21.1 (push) Canceled after 0s
Server integrations / Fabric and Forge / 26.1.2 (push) Canceled after 0s
Server integrations / Fabric and Forge / 26.2 (push) Canceled after 0s
Server integrations / Fabric and Forge / 26.3 (push) Canceled after 0s

This commit is contained in:
SCOPEDD committed 2026-10-01 01:04:03 -04:00
1 parent 23ab34ab72
commit a378f9904c
7 files changed
+262 -83

No files matched your search

+25 -34
View File
@@ -19,17 +19,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Verify Linux runner
run: |
set -eu
test "$(uname -s)" = Linux
for tool in cargo rustc node npm docker; do command -v "$tool" >/dev/null || { echo "Missing $tool on ubuntu-latest runner"; exit 1; }; done
test "$(node -p 'process.versions.node.split(".")[0]')" -ge 22
rustup component list --installed | grep -q rustfmt
rustup component list --installed | grep -q clippy
pkg-config --exists webkit2gtk-4.1 ayatana-appindicator3-0.1 librsvg-2.0 || { echo 'Missing Tauri GTK/WebKit development packages'; exit 1; }
docker info >/dev/null || { echo 'Docker daemon unavailable'; exit 1; }
- uses: Swatinem/rust-cache@v2
- uses: actions/setup-node@v4
with:
node-version: '22'
@@ -37,6 +26,9 @@ jobs:
cache-dependency-path: |
panel/web/package-lock.json
launcher/package-lock.json
- name: Install Linux build dependencies
run: bash scripts/ci/install-linux.sh rust
- uses: Swatinem/rust-cache@v2
- name: Check Rust
run: |
mkdir -p launcher/dist
@@ -49,37 +41,35 @@ jobs:
for app in panel/web launcher; do
(cd "$app" && npm ci --no-audit --no-fund && npm run check && npm run build)
done
- id: docker
run: |
if command -v docker >/dev/null && docker info >/dev/null 2>&1; then
echo 'ready=true' >> "$GITEA_OUTPUT"
else
echo 'ready=false' >> "$GITEA_OUTPUT"
fi
- uses: docker/setup-docker-action@v5
if: steps.docker.outputs.ready != 'true'
- uses: docker/setup-buildx-action@v3
- name: Build panel container
run: docker build -t scopenet-panel:ci .
run: |
bash scripts/ci/install-linux.sh image
docker build -t scopenet-panel:ci .
launcher-windows:
name: Windows launcher
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
- name: Find PowerShell 7 on Windows runner
shell: powershell
run: |
$pwsh = (Get-Command pwsh -ErrorAction SilentlyContinue | Select-Object -First 1).Source
if (-not $pwsh) { $pwsh = Join-Path $env:ProgramFiles 'PowerShell\7\pwsh.exe' }
if (-not (Test-Path $pwsh)) { throw "PowerShell 7 is not available to the runner at $pwsh" }
$version = & $pwsh -NoProfile -Command '$PSVersionTable.PSVersion.ToString()'
Write-Host "Using PowerShell $version at $pwsh"
Add-Content -Path $env:GITEA_PATH -Value (Split-Path $pwsh)
- name: Verify Windows runner
shell: pwsh
run: |
if (-not $IsWindows) { throw 'windows-latest must be a Windows host runner' }
foreach ($tool in @('cargo', 'rustc', 'node', 'npm')) {
if (-not (Get-Command $tool -ErrorAction SilentlyContinue)) { throw "Missing $tool" }
}
if ([int](node -p 'process.versions.node.split(".")[0]') -lt 22) { throw 'Node 22+ required' }
- uses: Swatinem/rust-cache@v2
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
cache-dependency-path: launcher/package-lock.json
- name: Install Windows build dependencies
shell: powershell
run: .\scripts\ci\install-windows.ps1
- uses: Swatinem/rust-cache@v2
- run: npm ci --no-audit --no-fund
working-directory: launcher
- run: npm run build
@@ -94,9 +84,10 @@ jobs:
continue-on-error: true
steps:
- uses: actions/checkout@v5
- name: Verify runner
run: |
test "$(uname -s)" = Linux
command -v cargo
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Linux build dependencies
run: bash scripts/ci/install-linux.sh rust
- uses: Swatinem/rust-cache@v2
- run: cargo test -p scopenet-core --test online --locked -- --ignored --test-threads=2 --nocapture
+4 -12
View File
@@ -24,12 +24,8 @@ jobs:
with:
distribution: temurin
java-version: '21'
- name: Verify integration runner
run: |
set -eu
test "$(uname -s)" = Linux
command -v java
java -version 2>&1 | grep -q '21\.' || { echo 'Paper needs Java 21'; exit 1; }
- name: Check Linux and Java dependencies
run: bash scripts/ci/install-linux.sh java 21
- name: Build Paper with Gradle 8.10.2
run: |
sed -i 's/gradle-9.6.0-bin.zip/gradle-8.10.2-bin.zip/' integrations/gradle/wrapper/gradle-wrapper.properties
@@ -63,12 +59,8 @@ jobs:
with:
distribution: temurin
java-version: ${{ matrix.mc.java }}
- name: Verify integration runner
run: |
set -eu
test "$(uname -s)" = Linux
command -v java
java -version 2>&1 | grep -q '${{ matrix.mc.java }}\.' || { echo 'Wrong Java version for this matrix entry'; exit 1; }
- name: Check Linux and Java dependencies
run: bash scripts/ci/install-linux.sh java '${{ matrix.mc.java }}'
- name: Build both loaders
run: |
sed -i 's/gradle-9.6.0-bin.zip/gradle-${{ matrix.mc.gradle }}-bin.zip/' integrations/gradle/wrapper/gradle-wrapper.properties
+36 -36
View File
@@ -53,57 +53,54 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
- name: Verify Windows runner
shell: pwsh
run: |
if (-not $IsWindows) { throw 'windows-latest must be a Windows host runner' }
foreach ($tool in @('cargo', 'node', 'npm')) {
if (-not (Get-Command $tool -ErrorAction SilentlyContinue)) { throw "Missing $tool" }
}
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
key: release
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: launcher/package-lock.json
- name: Install Windows build dependencies
shell: powershell
run: .\scripts\ci\install-windows.ps1
- uses: Swatinem/rust-cache@v2
with:
key: release
- name: Stamp version
shell: bash
shell: pwsh
env:
VERSION: ${{ needs.version.outputs.version }}
run: |
sed -i "0,/^version = \".*\"/s//version = \"$VERSION\"/" Cargo.toml
node -e "const f='launcher/src-tauri/tauri.conf.json';const c=require('./'+f);c.version=process.env.VERSION;require('fs').writeFileSync(f,JSON.stringify(c,null,2))"
node -e "const f='launcher/package.json';const c=require('./'+f);c.version=process.env.VERSION;require('fs').writeFileSync(f,JSON.stringify(c,null,2))"
$cargo = Get-Content Cargo.toml -Raw
$cargo = [regex]::new('(?m)^version = ".*"').Replace($cargo, 'version = "' + $env:VERSION + '"', 1)
[IO.File]::WriteAllText((Join-Path (Get-Location) 'Cargo.toml'), $cargo)
node -e "for(const f of ['launcher/src-tauri/tauri.conf.json','launcher/package.json']){const fs=require('fs');const c=JSON.parse(fs.readFileSync(f));c.version=process.env.VERSION;fs.writeFileSync(f,JSON.stringify(c,null,2))}"
- run: npm ci --no-audit --no-fund
working-directory: launcher
- name: Build installer
working-directory: launcher
shell: bash
shell: pwsh
env:
SCOPENET_PANEL_URL: ${{ vars.PANEL_URL }}
SCOPENET_LOCK_PANEL: ${{ vars.LOCK_PANEL }}
SCOPENET_REPO: ${{ gitea.server_url }}/${{ gitea.repository }}
LAUNCHER_NAME: ${{ vars.LAUNCHER_NAME }}
run: |
if [ -n "$LAUNCHER_NAME" ]; then
CONFIG=$(node -e "console.log(JSON.stringify({productName: process.env.LAUNCHER_NAME, app: {windows: [{...require('./src-tauri/tauri.conf.json').app.windows[0], title: process.env.LAUNCHER_NAME}]}}))")
npx tauri build --bundles nsis --config "$CONFIG"
else
if ($env:LAUNCHER_NAME) {
$config = node -e "console.log(JSON.stringify({productName: process.env.LAUNCHER_NAME, app: {windows: [{...require('./src-tauri/tauri.conf.json').app.windows[0], title: process.env.LAUNCHER_NAME}]}}))"
npx tauri build --bundles nsis --config $config
} else {
npx tauri build --bundles nsis
fi
}
if ($LASTEXITCODE -ne 0) { throw "Installer build failed with exit code $LASTEXITCODE" }
- name: Collect installer
shell: bash
shell: pwsh
run: |
mkdir -p out
cp target/release/bundle/nsis/*-setup.exe out/
ls -la out
New-Item -ItemType Directory -Force out | Out-Null
Copy-Item target/release/bundle/nsis/*-setup.exe out/
Get-ChildItem out
- uses: actions/upload-artifact@v4
with:
@@ -117,17 +114,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Verify container runner
run: |
test "$(uname -s)" = Linux
command -v docker
docker info >/dev/null
docker buildx version >/dev/null
- name: Image name
run: echo "IMAGE=${GITHUB_SERVER_URL#https://}/${GITHUB_REPOSITORY_OWNER,,}/scopenet-mc-panel" >> "$GITEA_ENV"
- name: Stamp version
run: sed -i "0,/^version = \".*\"/s//version = \"${{ needs.version.outputs.version }}\"/" Cargo.toml
- id: docker
run: |
if command -v docker >/dev/null && docker info >/dev/null 2>&1; then
echo 'ready=true' >> "$GITEA_OUTPUT"
else
echo 'ready=false' >> "$GITEA_OUTPUT"
fi
- uses: docker/setup-docker-action@v5
if: steps.docker.outputs.ready != 'true'
- uses: docker/setup-buildx-action@v3
- name: Check Linux container dependencies
run: bash scripts/ci/install-linux.sh image
- uses: docker/login-action@v3
with:
registry: gitea.jadonsandbox.com
@@ -162,11 +164,9 @@ jobs:
needs: [version, launcher, panel-image, server-integrations]
runs-on: ubuntu-latest
steps:
- name: Verify release runner
run: |
test "$(uname -s)" = Linux
command -v curl
command -v jq
- uses: actions/checkout@v5
- name: Install Linux release dependencies
run: bash scripts/ci/install-linux.sh release
- uses: actions/download-artifact@v4
with:
name: windows-installer