Run rolling release CI jobs one at a time
Rolling release / server linux-x64 (push) Failing after 6m5s
Rolling release / server linux-arm64 (push) Has been skipped
Rolling release / server darwin-arm64 (push) Has been skipped
Rolling release / server darwin-x64 (push) Has been skipped
Rolling release / server win32-x64 (push) Has been skipped
Rolling release / client linux-x64 (push) Has been skipped
Rolling release / client linux-arm64 (push) Has been skipped
Rolling release / client darwin-arm64 (push) Has been skipped
Rolling release / client win32-x64 (push) Has been skipped
Rolling release / Publish rolling release (push) Has been skipped
CI / test (push) Has been cancelled
Rolling release / server linux-x64 (push) Failing after 6m5s
Rolling release / server linux-arm64 (push) Has been skipped
Rolling release / server darwin-arm64 (push) Has been skipped
Rolling release / server darwin-x64 (push) Has been skipped
Rolling release / server win32-x64 (push) Has been skipped
Rolling release / client linux-x64 (push) Has been skipped
Rolling release / client linux-arm64 (push) Has been skipped
Rolling release / client darwin-arm64 (push) Has been skipped
Rolling release / client win32-x64 (push) Has been skipped
Rolling release / Publish rolling release (push) Has been skipped
CI / test (push) Has been cancelled
Replace parallel matrix builds with a linear needs: chain so only a single server or client job occupies a runner at once.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# peardock — rolling release
|
||||
# - peardock-server: Bare standalone (bare-build --standalone, embeds all modules)
|
||||
# - peardock-client: full Pear GUI (Electron Forge package / AppImage / zip)
|
||||
# peardock — rolling release (sequential: one job at a time)
|
||||
# - peardock-server: Bare standalone
|
||||
# - peardock-client: full Pear GUI (Electron Forge)
|
||||
#
|
||||
# Secret: RELEASE_TOKEN (Gitea PAT with release write)
|
||||
# Secret: RELEASE_TOKEN
|
||||
# Optional: GITEA_URL
|
||||
|
||||
name: Rolling release
|
||||
@@ -20,24 +20,14 @@ env:
|
||||
NODE_VERSION: '22'
|
||||
RELEASE_TAG: rolling
|
||||
|
||||
# Jobs are chained with needs: so only one runs at a time (no matrix fan-out).
|
||||
|
||||
jobs:
|
||||
build-server:
|
||||
name: server / ${{ matrix.host }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
host: linux-x64
|
||||
- os: ubuntu-latest
|
||||
host: linux-arm64
|
||||
- os: ubuntu-latest
|
||||
host: darwin-arm64
|
||||
- os: ubuntu-latest
|
||||
host: darwin-x64
|
||||
- os: ubuntu-latest
|
||||
host: win32-x64
|
||||
runs-on: ${{ matrix.os }}
|
||||
# ── Servers (Bare; cross-pack from Ubuntu) ──────────────────────────
|
||||
|
||||
server-linux-x64:
|
||||
name: server linux-x64
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -46,48 +36,110 @@ jobs:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm run make:server:${{ matrix.host }}
|
||||
- name: Stage server binary
|
||||
- run: npm run make:server:linux-x64
|
||||
- name: Stage
|
||||
run: cp out/server/linux-x64/peardock-server peardock-server-linux-x64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-server-linux-x64
|
||||
path: peardock-server-linux-x64
|
||||
retention-days: 7
|
||||
|
||||
server-linux-arm64:
|
||||
name: server linux-arm64
|
||||
needs: [server-linux-x64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm run make:server:linux-arm64
|
||||
- name: Stage
|
||||
run: cp out/server/linux-arm64/peardock-server peardock-server-linux-arm64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-server-linux-arm64
|
||||
path: peardock-server-linux-arm64
|
||||
retention-days: 7
|
||||
|
||||
server-darwin-arm64:
|
||||
name: server darwin-arm64
|
||||
needs: [server-linux-arm64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm run make:server:darwin-arm64
|
||||
- name: Stage
|
||||
run: cp out/server/darwin-arm64/peardock-server peardock-server-darwin-arm64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-server-darwin-arm64
|
||||
path: peardock-server-darwin-arm64
|
||||
retention-days: 7
|
||||
|
||||
server-darwin-x64:
|
||||
name: server darwin-x64
|
||||
needs: [server-darwin-arm64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm run make:server:darwin-x64
|
||||
- name: Stage
|
||||
run: cp out/server/darwin-x64/peardock-server peardock-server-darwin-x64
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-server-darwin-x64
|
||||
path: peardock-server-darwin-x64
|
||||
retention-days: 7
|
||||
|
||||
server-win32-x64:
|
||||
name: server win32-x64
|
||||
needs: [server-darwin-x64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm run make:server:win32-x64
|
||||
- name: Stage
|
||||
run: |
|
||||
set -e
|
||||
dir="out/server/${{ matrix.host }}"
|
||||
ls -la "$dir"
|
||||
if [ -f "$dir/peardock-server.exe" ]; then
|
||||
cp "$dir/peardock-server.exe" "peardock-server-${{ matrix.host }}.exe"
|
||||
if [ -f out/server/win32-x64/peardock-server.exe ]; then
|
||||
cp out/server/win32-x64/peardock-server.exe peardock-server-win32-x64.exe
|
||||
else
|
||||
cp "$dir/peardock-server" "peardock-server-${{ matrix.host }}"
|
||||
cp out/server/win32-x64/peardock-server peardock-server-win32-x64
|
||||
fi
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-server-${{ matrix.host }}
|
||||
path: peardock-server-${{ matrix.host }}*
|
||||
if-no-files-found: error
|
||||
name: peardock-server-win32-x64
|
||||
path: peardock-server-win32-x64*
|
||||
retention-days: 7
|
||||
|
||||
build-client:
|
||||
name: client / ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
platform: linux
|
||||
arch: x64
|
||||
host: linux-x64
|
||||
- os: ubuntu-latest
|
||||
platform: linux
|
||||
arch: arm64
|
||||
host: linux-arm64
|
||||
# macOS / Windows need matching runners for native Electron rebuild
|
||||
- os: macos-latest
|
||||
platform: darwin
|
||||
arch: arm64
|
||||
host: darwin-arm64
|
||||
- os: windows-latest
|
||||
platform: win32
|
||||
arch: x64
|
||||
host: win32-x64
|
||||
runs-on: ${{ matrix.os }}
|
||||
# ── Clients (full Pear GUI; one OS runner at a time) ────────────────
|
||||
|
||||
client-linux-x64:
|
||||
name: client linux-x64
|
||||
needs: [server-win32-x64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -96,42 +148,129 @@ jobs:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- name: Electron Forge make (full Pear GUI)
|
||||
run: npx electron-forge make --platform ${{ matrix.platform }} --arch ${{ matrix.arch }}
|
||||
- run: npx electron-forge make --platform linux --arch x64
|
||||
- name: Stage client artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p staged
|
||||
# Prefer AppImage / zip / dir from forge make + package output
|
||||
if compgen -G "out/make/**/*.AppImage" > /dev/null; then
|
||||
cp out/make/**/*.AppImage "staged/peardock-client-${{ matrix.host }}.AppImage" || true
|
||||
# flatten globs
|
||||
find out/make -name '*.AppImage' -exec cp {} "staged/peardock-client-${{ matrix.host }}.AppImage" \;
|
||||
fi
|
||||
if compgen -G "out/make/**/*.zip" > /dev/null; then
|
||||
find out/make -name '*.zip' -exec cp {} "staged/peardock-client-${{ matrix.host }}.zip" \;
|
||||
fi
|
||||
if compgen -G "out/make/**/*.deb" > /dev/null; then
|
||||
find out/make -name '*.deb' -exec cp {} "staged/peardock-client-${{ matrix.host }}.deb" \;
|
||||
fi
|
||||
# Packaged app directory (always present after package/make)
|
||||
find out/make -name '*.AppImage' -exec cp {} staged/peardock-client-linux-x64.AppImage \; 2>/dev/null || true
|
||||
find out/make -name '*.zip' -exec cp {} staged/peardock-client-linux-x64.zip \; 2>/dev/null || true
|
||||
find out/make -name '*.deb' -exec cp {} staged/peardock-client-linux-x64.deb \; 2>/dev/null || true
|
||||
dir=$(find out -maxdepth 1 -type d -name 'peardock-*' | head -1)
|
||||
if [ -n "$dir" ] && [ ! -f "staged/peardock-client-${{ matrix.host }}.zip" ]; then
|
||||
(cd out && zip -ry "../staged/peardock-client-${{ matrix.host }}.zip" "$(basename "$dir")")
|
||||
if [ -n "${dir:-}" ] && [ ! -f staged/peardock-client-linux-x64.zip ]; then
|
||||
(cd out && zip -ry "../staged/peardock-client-linux-x64.zip" "$(basename "$dir")")
|
||||
fi
|
||||
ls -la staged/
|
||||
test -n "$(ls -A staged)"
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-client-${{ matrix.host }}
|
||||
name: peardock-client-linux-x64
|
||||
path: staged/*
|
||||
if-no-files-found: error
|
||||
retention-days: 7
|
||||
|
||||
client-linux-arm64:
|
||||
name: client linux-arm64
|
||||
needs: [client-linux-x64]
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npx electron-forge make --platform linux --arch arm64
|
||||
- name: Stage client artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p staged
|
||||
find out/make -name '*.AppImage' -exec cp {} staged/peardock-client-linux-arm64.AppImage \; 2>/dev/null || true
|
||||
find out/make -name '*.zip' -exec cp {} staged/peardock-client-linux-arm64.zip \; 2>/dev/null || true
|
||||
find out/make -name '*.deb' -exec cp {} staged/peardock-client-linux-arm64.deb \; 2>/dev/null || true
|
||||
dir=$(find out -maxdepth 1 -type d -name 'peardock-*' | head -1)
|
||||
if [ -n "${dir:-}" ] && [ ! -f staged/peardock-client-linux-arm64.zip ]; then
|
||||
(cd out && zip -ry "../staged/peardock-client-linux-arm64.zip" "$(basename "$dir")")
|
||||
fi
|
||||
ls -la staged/
|
||||
test -n "$(ls -A staged)"
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-client-linux-arm64
|
||||
path: staged/*
|
||||
retention-days: 7
|
||||
|
||||
client-darwin-arm64:
|
||||
name: client darwin-arm64
|
||||
needs: [client-linux-arm64]
|
||||
runs-on: macos-latest
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npx electron-forge make --platform darwin --arch arm64
|
||||
- name: Stage client artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p staged
|
||||
find out/make -name '*.zip' -exec cp {} staged/peardock-client-darwin-arm64.zip \; 2>/dev/null || true
|
||||
find out/make -name '*.dmg' -exec cp {} staged/peardock-client-darwin-arm64.dmg \; 2>/dev/null || true
|
||||
dir=$(find out -maxdepth 1 -type d -name 'peardock-*' | head -1)
|
||||
if [ -n "${dir:-}" ] && [ ! -f staged/peardock-client-darwin-arm64.zip ]; then
|
||||
(cd out && zip -ry "../staged/peardock-client-darwin-arm64.zip" "$(basename "$dir")")
|
||||
fi
|
||||
ls -la staged/
|
||||
test -n "$(ls -A staged)"
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-client-darwin-arm64
|
||||
path: staged/*
|
||||
retention-days: 7
|
||||
|
||||
client-win32-x64:
|
||||
name: client win32-x64
|
||||
needs: [client-darwin-arm64]
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npx electron-forge make --platform win32 --arch x64
|
||||
- name: Stage client artifacts
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
mkdir -p staged
|
||||
find out/make -name '*.zip' -exec cp {} staged/peardock-client-win32-x64.zip \; 2>/dev/null || true
|
||||
find out/make -name '*.msix' -exec cp {} staged/peardock-client-win32-x64.msix \; 2>/dev/null || true
|
||||
dir=$(find out -maxdepth 1 -type d -name 'peardock-*' | head -1)
|
||||
if [ -n "${dir:-}" ] && [ ! -f staged/peardock-client-win32-x64.zip ]; then
|
||||
(cd out && zip -ry "../staged/peardock-client-win32-x64.zip" "$(basename "$dir")")
|
||||
fi
|
||||
ls -la staged/
|
||||
test -n "$(ls -A staged)"
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: peardock-client-win32-x64
|
||||
path: staged/*
|
||||
retention-days: 7
|
||||
|
||||
# ── Publish rolling tag ─────────────────────────────────────────────
|
||||
|
||||
publish:
|
||||
name: Publish rolling release
|
||||
needs: [build-server, build-client]
|
||||
needs: [client-win32-x64]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
|
||||
steps:
|
||||
@@ -147,10 +286,8 @@ jobs:
|
||||
set -euo pipefail
|
||||
mkdir -p out/server out/client dist/rolling-stage
|
||||
find artifacts -type f | sort
|
||||
# Servers
|
||||
find artifacts -type f -name 'peardock-server-*' | while read -r f; do
|
||||
base=$(basename "$f")
|
||||
# peardock-server-linux-x64
|
||||
host=${base#peardock-server-}
|
||||
host=${host%.exe}
|
||||
mkdir -p "out/server/$host"
|
||||
@@ -160,8 +297,7 @@ jobs:
|
||||
cp "$f" "out/server/$host/peardock-server"
|
||||
fi
|
||||
done
|
||||
# Clients — copy into dist stage with original names
|
||||
find artifacts -type f \( -name 'peardock-client-*' -o -name '*.AppImage' -o -name '*.zip' -o -name '*.deb' \) | while read -r f; do
|
||||
find artifacts -type f \( -name 'peardock-client-*' -o -name '*.AppImage' -o -name '*.zip' -o -name '*.deb' -o -name '*.dmg' -o -name '*.msix' \) | while read -r f; do
|
||||
cp -a "$f" dist/rolling-stage/
|
||||
done
|
||||
find out -type f | sort
|
||||
|
||||
Reference in New Issue
Block a user