name: Pre-Release WinUtil permissions: contents: write actions: read pull-requests: write on: workflow_dispatch: # Manual trigger added jobs: build-runspace: runs-on: windows-latest outputs: version: ${{ steps.extract_version.outputs.version }} env: CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }} steps: - name: Checkout Repository uses: actions/checkout@v6 - name: Generate Dev Docs and Update JSON Links shell: pwsh run: | Set-Location tools ./devdocs-generator.ps1 - name: Compile project shell: pwsh run: | Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1 continue-on-error: false # Directly fail the job on error, removing the need for a separate check - name: Create Pull Request for Updated JSON Links id: cpr uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.AUTO_MERGE }} commit-message: 'chore: Update documentation links in JSON configs' title: 'chore: Update Generated Dev Docs' body: 'Automated update of documentation links in JSON configs from pre-release build' branch: docs-update delete-branch: true add-paths: | config/tweaks.json config/feature.json labels: | automated documentation - name: Check outputs shell: bash run: | echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" - name: Set Version to Todays Date id: extract_version run: | $version = (Get-Date -Format "yy.MM.dd") echo "VERSION=$version" >> $env:GITHUB_ENV echo "version=$version" >> $env:GITHUB_OUTPUT shell: pwsh - name: Create Tag id: create_tag run: | $tagExists = git tag -l $env:VERSION if ($tagExists -eq "") { git tag $env:VERSION if ($LASTEXITCODE -ne 0) { Write-Error "Failed to create tag $env:VERSION" exit 1 } git push origin $env:VERSION if ($LASTEXITCODE -ne 0) { Write-Error "Failed to push tag $env:VERSION" exit 1 } } else { Write-Host "Tag $env:VERSION already exists, skipping tag creation" } shell: pwsh - name: Upload compiled script uses: actions/upload-artifact@v4 with: name: winutil-ps1 path: ./winutil.ps1 release: needs: build-runspace runs-on: ubuntu-latest steps: - name: Download compiled script uses: actions/download-artifact@v4 with: name: winutil-ps1 - name: Set version from build job run: echo "VERSION=${{ needs.build-runspace.outputs.version }}" >> $GITHUB_ENV - name: Generate Release Notes id: generate_notes uses: release-drafter/release-drafter@v7 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: config-name: release-drafter.yml version: ${{ env.VERSION }} - name: Create and Upload Release id: create_release uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.VERSION }} name: Pre-Release ${{ env.VERSION }} body: | ${{ steps.generate_notes.outputs.body }} ![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/${{ env.VERSION }}/winutil.ps1) append_body: false files: ./winutil.ps1 prerelease: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}