diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0479d01d..31f2669c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,201 +26,230 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} path: ./ - - name: Download vpk - uses: actions/download-artifact@v4 - with: - name: packages - run-id: ${{ github.event.inputs.workflow_run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - path: ./packages - - - name: Download lib-nodejs - uses: actions/download-artifact@v4 - with: - name: lib-nodejs - run-id: ${{ github.event.inputs.workflow_run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - path: ./lib-nodejs - - - name: Download lib-rust - uses: actions/download-artifact@v4 - with: - name: lib-rust - run-id: ${{ github.event.inputs.workflow_run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - path: ./lib-rust - - - name: Download lib-c - uses: actions/download-artifact@v4 - with: - name: lib-c - run-id: ${{ github.event.inputs.workflow_run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - path: ./lib-c-files - - name: Load version from file run: | version=$(cat version.txt | xargs) echo "PKG_VERSION=$version" >> $GITHUB_ENV - - name: Create lib-c zip package - working-directory: ./lib-c-files - run: | - mkdir -p ../lib-c - zip -r ../lib-c/velopack_libc_$PKG_VERSION.zip . + # - name: Download vpk + # uses: actions/download-artifact@v4 + # with: + # name: packages + # run-id: ${{ github.event.inputs.workflow_run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # path: ./packages + + # - name: Download lib-nodejs + # uses: actions/download-artifact@v4 + # with: + # name: lib-nodejs + # run-id: ${{ github.event.inputs.workflow_run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # path: ./lib-nodejs + + # - name: Download lib-rust + # uses: actions/download-artifact@v4 + # with: + # name: lib-rust + # run-id: ${{ github.event.inputs.workflow_run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # path: ./lib-rust - - uses: actions/checkout@v4 + # - name: Download lib-c + # uses: actions/download-artifact@v4 + # with: + # name: lib-c + # run-id: ${{ github.event.inputs.workflow_run_id }} + # github-token: ${{ secrets.GITHUB_TOKEN }} + # path: ./lib-c-files + + # - name: Create lib-c zip package + # working-directory: ./lib-c-files + # run: | + # mkdir -p ../lib-c + # zip -r ../lib-c/velopack_libc_$PKG_VERSION.zip . + + - name: Download lib-python + uses: actions/download-artifact@v4 with: - path: ./repo - fetch-depth: 0 + name: lib-python + run-id: ${{ github.event.inputs.workflow_run_id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + path: ./lib-python-files + + - name: Create lib-python zip package + working-directory: ./lib-python-files + run: | + mkdir -p ../lib-python + zip -r ../lib-python/velopack_libpython_$PKG_VERSION.zip . + + - name: test-artifact + uses: actions/upload-artifact@v4 + with: + name: test-artifact + path: lib-python/* + retention-days: 1 + + # - uses: actions/checkout@v4 + # with: + # path: ./repo + # fetch-depth: 0 - - name: Checkout release commit - working-directory: ./repo - run: | - echo $PKG_VERSION - COMMIT_HASH=$(gh run view ${{ github.event.inputs.workflow_run_id }} --json headSha -q ".headSha") - git checkout $COMMIT_HASH + # - name: Checkout release commit + # working-directory: ./repo + # run: | + # echo $PKG_VERSION + # COMMIT_HASH=$(gh run view ${{ github.event.inputs.workflow_run_id }} --json headSha -q ".headSha") + # git checkout $COMMIT_HASH - - name: Generate Release - working-directory: ./repo - shell: pwsh - run: | - $ErrorActionPreference = "Stop" + # - name: Generate Release + # working-directory: ./repo + # shell: pwsh + # run: | + # $ErrorActionPreference = "Stop" - $currentTag = Get-Content -Path "../version.txt" -Raw - $currentTag = $currentTag.Trim() + # $currentTag = Get-Content -Path "../version.txt" -Raw + # $currentTag = $currentTag.Trim() - # Get the previous release tag - Write-Host "Detecting previous release tag..." - $gitTags = git tag --list + # # Get the previous release tag + # Write-Host "Detecting previous release tag..." + # $gitTags = git tag --list - $tags = $gitTags | ForEach-Object { - $fullTag = $_ - $isPrerelease = $fullTag -like "*-*" + # $tags = $gitTags | ForEach-Object { + # $fullTag = $_ + # $isPrerelease = $fullTag -like "*-*" - if ($isPrerelease) { - # For prerelease versions, extract the version part before the hyphen - $versionPart = $fullTag.Split('-')[0] - } else { - $versionPart = $fullTag - } + # if ($isPrerelease) { + # # For prerelease versions, extract the version part before the hyphen + # $versionPart = $fullTag.Split('-')[0] + # } else { + # $versionPart = $fullTag + # } - try { - $version = [System.Version]$versionPart - [PSCustomObject]@{ - FullTag = $fullTag - Version = $version - IsPrerelease = $isPrerelease - } - } catch { - # Skip tags that cannot be parsed into a System.Version - $null - } - } | Where-Object { $_ -ne $null } + # try { + # $version = [System.Version]$versionPart + # [PSCustomObject]@{ + # FullTag = $fullTag + # Version = $version + # IsPrerelease = $isPrerelease + # } + # } catch { + # # Skip tags that cannot be parsed into a System.Version + # $null + # } + # } | Where-Object { $_ -ne $null } - $isCurrentPrerelease = $currentTag -like "*-*" - $latestPrerelease = ($tags | Where-Object { $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag - $latestStable = ($tags | Where-Object { -not $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag - $latestOverall = ($tags | Sort-Object Version -Descending | Select-Object -First 1).FullTag + # $isCurrentPrerelease = $currentTag -like "*-*" + # $latestPrerelease = ($tags | Where-Object { $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag + # $latestStable = ($tags | Where-Object { -not $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag + # $latestOverall = ($tags | Sort-Object Version -Descending | Select-Object -First 1).FullTag - if ($isCurrentPrerelease) { - $releaseArg = "--prerelease" - $previousTag = $latestOverall - } else { - $releaseArg = "--latest" - $previousTag = $latestStable - } + # if ($isCurrentPrerelease) { + # $releaseArg = "--prerelease" + # $previousTag = $latestOverall + # } else { + # $releaseArg = "--latest" + # $previousTag = $latestStable + # } - Write-Host "Current version is prerelease: $isCurrentPrerelease" - Write-Host "Latest prerelease: $latestPrerelease" - Write-Host "Latest stable: $latestStable" - Write-Host "Latest overall: $latestOverall" - Write-Host "---" - Write-Host "Current tag: $currentTag" - Write-Host "Previous tag: $previousTag" + # Write-Host "Current version is prerelease: $isCurrentPrerelease" + # Write-Host "Latest prerelease: $latestPrerelease" + # Write-Host "Latest stable: $latestStable" + # Write-Host "Latest overall: $latestOverall" + # Write-Host "---" + # Write-Host "Current tag: $currentTag" + # Write-Host "Previous tag: $previousTag" - # Push the tag to the repository - Write-Host "Tagging release commit..." - git tag $currentTag - git push origin $currentTag + # # Push the tag to the repository + # Write-Host "Tagging release commit..." + # git tag $currentTag + # git push origin $currentTag - # Generate release notes - Write-Host "Generating release notes..." - $headers = @{ - "Authorization" = "Bearer ${{ github.token }}" - "Accept" = "application/vnd.github.v3+json" - } - $body = @{ - "tag_name" = "$currentTag" - "previous_tag_name" = "$previousTag" - } | ConvertTo-Json - $apiUrl = "https://api.github.com/repos/velopack/velopack/releases/generate-notes" - $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body -ContentType 'application/json' + # # Generate release notes + # Write-Host "Generating release notes..." + # $headers = @{ + # "Authorization" = "Bearer ${{ github.token }}" + # "Accept" = "application/vnd.github.v3+json" + # } + # $body = @{ + # "tag_name" = "$currentTag" + # "previous_tag_name" = "$previousTag" + # } | ConvertTo-Json + # $apiUrl = "https://api.github.com/repos/velopack/velopack/releases/generate-notes" + # $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body -ContentType 'application/json' - $releaseName = $response.name - $releaseBody = $response.body + # $releaseName = $response.name + # $releaseBody = $response.body - # Move dependencies to dedicated section - $lines = $releaseBody -split "`n" - $dependenciesLines = @() - $otherLines = @() - $changelog = "" + # # Move dependencies to dedicated section + # $lines = $releaseBody -split "`n" + # $dependenciesLines = @() + # $otherLines = @() + # $changelog = "" - foreach ($line in $lines) { - if ($line -match 'Full Changelog') { - $changelog = $line - } elseif ($line -match '@renovate') { - $dependenciesLines += $line - } else { - $otherLines += $line - } - } + # foreach ($line in $lines) { + # if ($line -match 'Full Changelog') { + # $changelog = $line + # } elseif ($line -match '@renovate') { + # $dependenciesLines += $line + # } else { + # $otherLines += $line + # } + # } - $releaseBody = $otherLines -join "`n" - if ($dependenciesLines.Count -gt 0) { - $releaseBody += "`## Dependency Updates`n" - $releaseBody += "`n
`n" - $releaseBody += "`nExpand to see all changed dependencies`n`n" - $releaseBody += $dependenciesLines -join "`n" - $releaseBody += "`n`n
`n" - } - $releaseBody += "`n" + $changelog + # $releaseBody = $otherLines -join "`n" + # if ($dependenciesLines.Count -gt 0) { + # $releaseBody += "`## Dependency Updates`n" + # $releaseBody += "`n
`n" + # $releaseBody += "`nExpand to see all changed dependencies`n`n" + # $releaseBody += $dependenciesLines -join "`n" + # $releaseBody += "`n`n
`n" + # } + # $releaseBody += "`n" + $changelog - Write-Host "Release name: $releaseName" - Write-Host "Release body:" - Write-Host $releaseBody + # Write-Host "Release name: $releaseName" + # Write-Host "Release body:" + # Write-Host $releaseBody - # Create release - Write-Host "Creating release..." - $notesFilePath = "./RELEASE_NOTES.md" - $releaseBody | Out-File -FilePath $notesFilePath -Encoding utf8 - gh release create $currentTag --title $releaseName --notes-file $notesFilePath $releaseArg --verify-tag + # # Create release + # Write-Host "Creating release..." + # $notesFilePath = "./RELEASE_NOTES.md" + # $releaseBody | Out-File -FilePath $notesFilePath -Encoding utf8 + # gh release create $currentTag --title $releaseName --notes-file $notesFilePath $releaseArg --verify-tag - # Upload artifacts - Write-Host "Uploading artifacts..." - gh release upload $currentTag (get-item ../packages/*.nupkg) - gh release upload $currentTag (get-item ../lib-nodejs/*.tgz) - gh release upload $currentTag (get-item ../lib-rust/*.crate) - gh release upload $currentTag (get-item ../lib-c/*.zip) + # # Upload artifacts + # Write-Host "Uploading artifacts..." + # gh release upload $currentTag (get-item ../packages/*.nupkg) + # gh release upload $currentTag (get-item ../lib-nodejs/*.tgz) + # gh release upload $currentTag (get-item ../lib-rust/*.crate) + # gh release upload $currentTag (get-item ../lib-c/*.zip) - - name: Publish NuGet Packages - run: | - for f in packages/*.nupkg; do - dotnet nuget push "$f" -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate - done + # - name: Publish NuGet Packages + # run: | + # for f in packages/*.nupkg; do + # dotnet nuget push "$f" -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate + # done - - name: Publish NPM Package - working-directory: ./lib-nodejs - run: | - npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" - npm publish velopack-$PKG_VERSION.tgz --access public + # - name: Publish NPM Package + # working-directory: ./lib-nodejs + # run: | + # npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" + # npm publish velopack-$PKG_VERSION.tgz --access public - - name: Publish Rust Crate - working-directory: ./lib-rust - run: | - tar -xzf velopack-$PKG_VERSION.crate - cd velopack-$PKG_VERSION - rm Cargo.toml.orig - rm .cargo_vcs_info.json - cargo login ${{ secrets.CARGO_TOKEN }} - cargo publish --allow-dirty --no-verify \ No newline at end of file + # - name: Publish Rust Crate + # working-directory: ./lib-rust + # run: | + # tar -xzf velopack-$PKG_VERSION.crate + # cd velopack-$PKG_VERSION + # rm Cargo.toml.orig + # rm .cargo_vcs_info.json + # cargo login ${{ secrets.CARGO_TOKEN }} + # cargo publish --allow-dirty --no-verify + + - name: Publish distribution to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + packages-dir: lib-python-files/ + verbose: true \ No newline at end of file