diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 6959cfcb..03ad0dc8 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -130,13 +130,18 @@ jobs: cargo install tauri-cli --version "^2" --locked # Build the .app bundle only (no DMG yet so we can sign before packaging) CI=true cargo tauri build --target aarch64-apple-darwin --bundles app - APP=src-tauri/target/aarch64-apple-darwin/release/bundle/macos/TFTSR.app + APP=$(find src-tauri/target/aarch64-apple-darwin/release/bundle/macos -maxdepth 1 -type d -name "*.app" | head -n 1) + if [ -z "$APP" ]; then + echo "ERROR: Could not find macOS app bundle" + exit 1 + fi + APP_NAME=$(basename "$APP" .app) # Ad-hoc sign: changes Gatekeeper error from "damaged" to "unidentified developer" codesign --deep --force --sign - "$APP" # Create DMG from the signed .app mkdir -p src-tauri/target/aarch64-apple-darwin/release/bundle/dmg - DMG=src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/TFTSR.dmg - hdiutil create -volname "TFTSR" -srcfolder "$APP" -ov -format UDZO "$DMG" + DMG=src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/${APP_NAME}.dmg + hdiutil create -volname "$APP_NAME" -srcfolder "$APP" -ov -format UDZO "$DMG" - name: Upload artifacts env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 91a76d67..80f21641 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -2,8 +2,8 @@ name: Test on: push: - branches: - - '**' + branches-ignore: + - master pull_request: jobs: @@ -14,10 +14,22 @@ jobs: steps: - name: Checkout run: | + set -eux apt-get update -qq && apt-get install -y -qq git git init git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git - git fetch --depth=1 origin $GITHUB_SHA + if [ -n "${GITHUB_SHA:-}" ] && git fetch --depth=1 origin "$GITHUB_SHA"; then + echo "Fetched commit SHA: $GITHUB_SHA" + elif [ -n "${GITHUB_REF_NAME:-}" ] && git fetch --depth=1 origin "$GITHUB_REF_NAME"; then + echo "Fetched ref name: $GITHUB_REF_NAME" + elif [ -n "${GITHUB_REF:-}" ]; then + REF_NAME="${GITHUB_REF#refs/heads/}" + git fetch --depth=1 origin "$REF_NAME" + echo "Fetched ref from GITHUB_REF: $REF_NAME" + else + git fetch --depth=1 origin master + echo "Fetched fallback ref: master" + fi git checkout FETCH_HEAD - run: rustup component add rustfmt - run: cargo fmt --manifest-path src-tauri/Cargo.toml --check @@ -29,10 +41,22 @@ jobs: steps: - name: Checkout run: | + set -eux apt-get update -qq && apt-get install -y -qq git git init git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git - git fetch --depth=1 origin $GITHUB_SHA + if [ -n "${GITHUB_SHA:-}" ] && git fetch --depth=1 origin "$GITHUB_SHA"; then + echo "Fetched commit SHA: $GITHUB_SHA" + elif [ -n "${GITHUB_REF_NAME:-}" ] && git fetch --depth=1 origin "$GITHUB_REF_NAME"; then + echo "Fetched ref name: $GITHUB_REF_NAME" + elif [ -n "${GITHUB_REF:-}" ]; then + REF_NAME="${GITHUB_REF#refs/heads/}" + git fetch --depth=1 origin "$REF_NAME" + echo "Fetched ref from GITHUB_REF: $REF_NAME" + else + git fetch --depth=1 origin master + echo "Fetched fallback ref: master" + fi git checkout FETCH_HEAD - run: apt-get update -qq && apt-get install -y -qq libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf pkg-config perl - run: rustup component add clippy @@ -45,10 +69,22 @@ jobs: steps: - name: Checkout run: | + set -eux apt-get update -qq && apt-get install -y -qq git git init git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git - git fetch --depth=1 origin $GITHUB_SHA + if [ -n "${GITHUB_SHA:-}" ] && git fetch --depth=1 origin "$GITHUB_SHA"; then + echo "Fetched commit SHA: $GITHUB_SHA" + elif [ -n "${GITHUB_REF_NAME:-}" ] && git fetch --depth=1 origin "$GITHUB_REF_NAME"; then + echo "Fetched ref name: $GITHUB_REF_NAME" + elif [ -n "${GITHUB_REF:-}" ]; then + REF_NAME="${GITHUB_REF#refs/heads/}" + git fetch --depth=1 origin "$REF_NAME" + echo "Fetched ref from GITHUB_REF: $REF_NAME" + else + git fetch --depth=1 origin master + echo "Fetched fallback ref: master" + fi git checkout FETCH_HEAD - run: apt-get update -qq && apt-get install -y -qq libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf pkg-config perl - run: cargo test --manifest-path src-tauri/Cargo.toml @@ -60,10 +96,22 @@ jobs: steps: - name: Checkout run: | + set -eux apk add --no-cache git git init git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git - git fetch --depth=1 origin $GITHUB_SHA + if [ -n "${GITHUB_SHA:-}" ] && git fetch --depth=1 origin "$GITHUB_SHA"; then + echo "Fetched commit SHA: $GITHUB_SHA" + elif [ -n "${GITHUB_REF_NAME:-}" ] && git fetch --depth=1 origin "$GITHUB_REF_NAME"; then + echo "Fetched ref name: $GITHUB_REF_NAME" + elif [ -n "${GITHUB_REF:-}" ]; then + REF_NAME="${GITHUB_REF#refs/heads/}" + git fetch --depth=1 origin "$REF_NAME" + echo "Fetched ref from GITHUB_REF: $REF_NAME" + else + git fetch --depth=1 origin master + echo "Fetched fallback ref: master" + fi git checkout FETCH_HEAD - run: npm ci --legacy-peer-deps - run: npx tsc --noEmit @@ -75,10 +123,22 @@ jobs: steps: - name: Checkout run: | + set -eux apk add --no-cache git git init git remote add origin http://172.0.0.29:3000/sarman/tftsr-devops_investigation.git - git fetch --depth=1 origin $GITHUB_SHA + if [ -n "${GITHUB_SHA:-}" ] && git fetch --depth=1 origin "$GITHUB_SHA"; then + echo "Fetched commit SHA: $GITHUB_SHA" + elif [ -n "${GITHUB_REF_NAME:-}" ] && git fetch --depth=1 origin "$GITHUB_REF_NAME"; then + echo "Fetched ref name: $GITHUB_REF_NAME" + elif [ -n "${GITHUB_REF:-}" ]; then + REF_NAME="${GITHUB_REF#refs/heads/}" + git fetch --depth=1 origin "$REF_NAME" + echo "Fetched ref from GITHUB_REF: $REF_NAME" + else + git fetch --depth=1 origin master + echo "Fetched fallback ref: master" + fi git checkout FETCH_HEAD - run: npm ci --legacy-peer-deps - run: npm run test:run diff --git a/docs/wiki/CICD-Pipeline.md b/docs/wiki/CICD-Pipeline.md index 59b4ed45..8ef84bd4 100644 --- a/docs/wiki/CICD-Pipeline.md +++ b/docs/wiki/CICD-Pipeline.md @@ -29,7 +29,7 @@ macOS runner runs jobs **directly on the host** (no Docker container) — macOS ## Test Pipeline (`.woodpecker/test.yml`) -**Triggers:** Every push and pull request to any branch. +**Triggers:** Every push to non-`master` branches and all pull requests. ``` Pipeline steps: diff --git a/tests/unit/releaseWorkflowMacBundle.test.ts b/tests/unit/releaseWorkflowMacBundle.test.ts new file mode 100644 index 00000000..832ad089 --- /dev/null +++ b/tests/unit/releaseWorkflowMacBundle.test.ts @@ -0,0 +1,23 @@ +import { describe, expect, it } from "vitest"; +import { readFileSync } from "node:fs"; +import path from "node:path"; + +const releaseWorkflowPath = path.resolve( + process.cwd(), + ".gitea/workflows/release.yml", +); + +describe("release workflow macOS bundle path", () => { + it("does not reference the legacy TFTSR.app bundle name", () => { + const workflow = readFileSync(releaseWorkflowPath, "utf-8"); + + expect(workflow).not.toContain("/bundle/macos/TFTSR.app"); + }); + + it("resolves the macOS .app bundle dynamically", () => { + const workflow = readFileSync(releaseWorkflowPath, "utf-8"); + + expect(workflow).toContain("APP=$(find"); + expect(workflow).toContain("-name \"*.app\""); + }); +});