diff --git a/.gitea/actions/local-ci-build/action.yml b/.gitea/actions/local-ci-build/action.yml index d346f0f..6f15bde 100644 --- a/.gitea/actions/local-ci-build/action.yml +++ b/.gitea/actions/local-ci-build/action.yml @@ -98,7 +98,12 @@ inputs: default: '' artifact-retention-days: - description: 'Days to retain uploaded artifacts in Gitea.' + description: > + Deprecated / no-op. Artifacts are no longer uploaded to the Gitea + Actions store (that needs the github.com-hosted upload-artifact + action). They stay on the host under F:\CI\Artifacts and are aged + out by scripts/Invoke-RetentionPolicy.ps1. Kept for caller + back-compat. required: false default: '14' @@ -287,22 +292,34 @@ runs: [System.IO.File]::AppendAllText( $env:GITHUB_OUTPUT, "artifact-name=$artifactName`n", $utf8NoBom) - # ── Upload build artifacts on success ───────────────────────────────────── - - name: Upload artifacts + # ── Report artifact location ────────────────────────────────────────────── + # No actions/upload-artifact: that action's code is fetched from + # github.com (and v4 is GHES-incompatible, v3 deprecated). The runner + # host is single and its filesystem is shared across jobs, so the + # orchestrator's host-side collect dir IS the artifact handoff. + # Downstream jobs read F:\CI\Artifacts\{run_id}-{run_attempt}[-suffix] + # directly (see build-nsInnoUnp.yml release job). + - name: Report artifact location if: success() && inputs.skip-artifact != 'true' - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.invoke-ci.outputs.artifact-name }} - path: ${{ steps.invoke-ci.outputs.artifact-path }} - retention-days: ${{ inputs.artifact-retention-days }} - if-no-files-found: error + shell: powershell + run: | + $p = '${{ steps.invoke-ci.outputs.artifact-path }}' + if (-not (Test-Path -LiteralPath $p) -or + -not (Get-ChildItem -Force -LiteralPath $p)) { + throw "no artifacts at $p" + } + Write-Host "Artifacts on host: $p" + Get-ChildItem -Recurse -File -LiteralPath $p | + ForEach-Object { Write-Host " $($_.FullName)" } - # ── Upload diagnostic logs on failure ───────────────────────────────────── - - name: Upload diagnostic logs on failure + - name: Report diagnostic log location on failure if: failure() - uses: actions/upload-artifact@v3 - with: - name: build-logs-${{ github.sha }} - path: ${{ steps.invoke-ci.outputs.artifact-path }}/*.log - retention-days: 3 - if-no-files-found: ignore + shell: powershell + run: | + $p = '${{ steps.invoke-ci.outputs.artifact-path }}' + if ($p -and (Test-Path -LiteralPath $p)) { + Write-Host "Diagnostic logs (if any) on host: $p" + Get-ChildItem -Recurse -File -Filter '*.log' -LiteralPath $p ` + -ErrorAction SilentlyContinue | + ForEach-Object { Write-Host " $($_.FullName)" } + } diff --git a/.gitea/workflows/build-nsInnoUnp.yml b/.gitea/workflows/build-nsInnoUnp.yml index ff788ef..8f837d4 100644 --- a/.gitea/workflows/build-nsInnoUnp.yml +++ b/.gitea/workflows/build-nsInnoUnp.yml @@ -46,18 +46,10 @@ jobs: runs-on: windows-build steps: - - name: Download Windows artifact - uses: actions/download-artifact@v3 - with: - name: nsis-plugin-nsinnounp-windows-${{ github.ref_name }} - path: artifacts/windows - - - name: Download Linux artifact - uses: actions/download-artifact@v3 - with: - name: nsis-plugin-nsinnounp-linux-${{ github.ref_name }} - path: artifacts/linux - + # No actions/download-artifact (its code is fetched from github.com). + # The runner host is single and shared; the build matrix legs left + # their outputs at F:\CI\Artifacts\{run_id}-{run_attempt}-{target} + # (job-id-suffix = matrix.target). Read them directly from disk. - name: Create Gitea release and upload assets shell: powershell env: @@ -65,6 +57,8 @@ jobs: GITEA_URL: ${{ github.server_url }} REPO: ${{ github.repository }} TAG: ${{ github.ref_name }} + RUN_ID: ${{ github.run_id }} + RUN_ATTEMPT: ${{ github.run_attempt }} run: | #Requires -Version 5.1 Set-StrictMode -Version Latest @@ -86,9 +80,15 @@ jobs: $releaseId = $release.id Write-Host "Release created: id=$releaseId name=$($release.name)" - # Compress each artifact directory and upload as a release asset + # Compress each host-side artifact directory and upload as a + # release asset. The build legs collected to + # F:\CI\Artifacts\{run_id}-{run_attempt}-{target}. foreach ($target in @('windows', 'linux')) { - $srcDir = "artifacts\$target" + $srcDir = "F:\CI\Artifacts\$env:RUN_ID-$env:RUN_ATTEMPT-$target" + if (-not (Test-Path -LiteralPath $srcDir) -or + -not (Get-ChildItem -Force -LiteralPath $srcDir)) { + throw "artifact dir missing or empty: $srcDir" + } $zipName = "nsis-plugin-nsinnounp-$target-$env:TAG.zip" Compress-Archive -Path "$srcDir\*" -DestinationPath $zipName -Force