Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tweak release workflow #490

Merged
merged 1 commit into from
Oct 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 20 additions & 13 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ on:
- ".github/workflows/publish.yml"
workflow_dispatch:
inputs:
release_tag:
version_number:
required: true
description: "Tag for the new release"
description: "The version number (dot-separated numbers only)"
prerelease:
description: "If true, the release will be set as a prerelease and not impact the latest tag"
description: "If true, the release will be set as a prerelease"
type: boolean
required: true
default: false
Expand All @@ -31,26 +31,31 @@ jobs:
if: github.event_name == 'workflow_dispatch' && (github.ref == 'refs/heads/main' || github.event.inputs.prerelease == 'true')
runs-on: ubuntu-latest
outputs:
release_tag: ${{ steps.create.outputs.release_tag }}
release_id: ${{ steps.create.outputs.release_id }}
steps:
- name: Create release
id: create
env:
RELEASE_TAG: ${{ github.event.inputs.release_tag }}
VERSION_NUMBER: ${{ github.event.inputs.version_number }}
PRERELEASE: ${{ github.event.inputs.prerelease }}
GH_TOKEN: ${{ github.token }}
shell: pwsh
run: |
if ( -Not ( $env:RELEASE_TAG -match '^v3\.[0-9]+\.[0-9]+(-preview)*' ) ){
Throw "Tag name format incorrect"
if ( -Not ( $env:VERSION_NUMBER -match '^3\.[0-9]+\.[0-9]+$' ) ){
Throw "Invalid version format"
}
$releaseTag = "v$($env:VERSION_NUMBER)"
if ($env:PRERELEASE -eq 'true') {
$releaseUrl = gh release create "$env:RELEASE_TAG" --repo Brightspace/bmx --draft --prerelease --generate-notes --title "Release $env:RELEASE_TAG" --target $env:GITHUB_SHA
$releaseTag = "${releaseTag}-preview-$(Get-Date -AsUTC -Format 'yyyyMMddHHmmss')"
$releaseUrl = gh release create "$releaseTag" --repo Brightspace/bmx --draft --prerelease --generate-notes --title "Release $releaseTag" --target $env:GITHUB_SHA
} else {
$releaseUrl = gh release create "$env:RELEASE_TAG" --repo Brightspace/bmx --draft --generate-notes --title "Release $env:RELEASE_TAG" --target $env:GITHUB_SHA
$releaseUrl = gh release create "$releaseTag" --repo Brightspace/bmx --draft --generate-notes --title "Release $releaseTag" --target $env:GITHUB_SHA
}
if ( $LASTEXITCODE -ne 0 ) { throw "Failed to create draft release" }

"release_tag=$releaseTag" >> $env:GITHUB_OUTPUT

$releaseId = $releaseUrl -split '/' | Select-Object -Last 1
"release_id=$releaseId" >> $env:GITHUB_OUTPUT

Expand Down Expand Up @@ -81,11 +86,11 @@ jobs:
- name: publish
shell: pwsh
env:
RELEASE_TAG: ${{ github.event.inputs.release_tag }}
RELEASE_TAG: ${{ needs.create_release.outputs.release_tag }}
working-directory: src/D2L.Bmx
run: |
$version = "$env:RELEASE_TAG"
if ( -not $version ){
if ( -not $version ) {
$version = "v3.0.0"
}
$versionWithoutv = "$version".TrimStart("v")
Expand Down Expand Up @@ -169,10 +174,10 @@ jobs:
shell: pwsh
env:
DOCKERFILE: ${{ matrix.file }}
RELEASE_TAG: ${{ github.event.inputs.release_tag }}
RELEASE_TAG: ${{ needs.create_release.outputs.release_tag }}
run: |
$version = "$env:RELEASE_TAG"
if ( -not $version ){
if ( -not $version ) {
$version = "v3.0.0"
}
$versionWithoutv = "$version".TrimStart("v")
Expand All @@ -199,8 +204,10 @@ jobs:
tar -czvf "bmx-$PLATFORM-$ARCHITECTURE.tar.gz" "bmx"
gh release upload "$RELEASE_ID" "bmx-$PLATFORM-$ARCHITECTURE.tar.gz"

publish_release:
# We only auto publish prereleases and not real releases. The latter should stay as draft and only be published manually after review.
publish_prerelease:
needs: [create_release, build, build_docker]
if: github.event.inputs.prerelease == 'true'
runs-on: ubuntu-latest
timeout-minutes: 5
env:
Expand Down
Loading