diff --git a/.github/workflows/deploy-notify.yml b/.github/workflows/deploy-notify.yml index 1441066..4430985 100644 --- a/.github/workflows/deploy-notify.yml +++ b/.github/workflows/deploy-notify.yml @@ -1,10 +1,8 @@ -name: Daily Version Bump +name: Version Bump +# Manual only. Semantic version tags are applied deliberately (patch/minor/major); +# there is no daily auto-bump and no Slack notification. on: - schedule: - # 6pm ET (EDT = 22:00 UTC, EST = 23:00 UTC) - - cron: "0 22 * * *" - - cron: "0 23 * * *" workflow_dispatch: inputs: bump: @@ -13,165 +11,35 @@ on: options: - patch - minor + - major default: patch permissions: contents: write - pull-requests: read jobs: - notify: + tag: runs-on: ubuntu-latest - env: - GH_TOKEN: ${{ github.token }} steps: - uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true - - name: DST guard - id: dst - run: | - if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then - echo "Manual trigger — skipping DST guard" - echo "skip=false" >> "$GITHUB_OUTPUT" - exit 0 - fi - HOUR=$(TZ=America/New_York date +%H) - if [ "$HOUR" != "18" ]; then - echo "ET hour is $HOUR, not 18 — wrong DST rule fired" - echo "skip=true" >> "$GITHUB_OUTPUT" - else - echo "skip=false" >> "$GITHUB_OUTPUT" - fi - - - name: Collect merged PRs since last version - if: steps.dst.outputs.skip != 'true' - id: changes + - name: Compute and push next version tag run: | LAST_TAG=$(git tag -l 'v*' --sort=-v:refname | head -1) - - if [ -z "$LAST_TAG" ]; then - echo "No previous version tag" - echo "has_changes=false" >> "$GITHUB_OUTPUT" - exit 0 - fi - - LAST_TAG_DATE=$(TZ=UTC git log -1 --date=format-local:'%Y-%m-%dT%H:%M:%SZ' --format='%ad' "$LAST_TAG") - PRS=$(gh pr list --state merged --json number,title,mergedAt \ - --jq "sort_by(.number) | .[] | select(.mergedAt > \"$LAST_TAG_DATE\")") - - if [ -z "$PRS" ]; then - echo "No PRs merged since $LAST_TAG" - echo "has_changes=false" >> "$GITHUB_OUTPUT" - exit 0 - fi - - echo "has_changes=true" >> "$GITHUB_OUTPUT" - - # Semver bump (default: patch) - BUMP="${{ github.event.inputs.bump || 'patch' }}" + LAST_TAG="${LAST_TAG:-v0.0.0}" MAJOR=$(echo "$LAST_TAG" | sed 's/^v//' | cut -d. -f1) MINOR=$(echo "$LAST_TAG" | sed 's/^v//' | cut -d. -f2) PATCH=$(echo "$LAST_TAG" | sed 's/^v//' | cut -d. -f3) - if [ "$BUMP" = "minor" ]; then - VERSION="v${MAJOR}.$((MINOR + 1)).0" - else - VERSION="v${MAJOR}.${MINOR}.$((PATCH + 1))" - fi - echo "version=$VERSION" >> "$GITHUB_OUTPUT" - # Build bullet lists from PR titles - TITLES=$(gh pr list --state merged --json number,title,mergedAt \ - --jq "sort_by(.number) | .[] | select(.mergedAt > \"$LAST_TAG_DATE\") | .title") + case "${{ inputs.bump }}" in + major) VERSION="v$((MAJOR + 1)).0.0" ;; + minor) VERSION="v${MAJOR}.$((MINOR + 1)).0" ;; + *) VERSION="v${MAJOR}.${MINOR}.$((PATCH + 1))" ;; + esac - { - echo "slack_bullets<> "$GITHUB_OUTPUT" - - { - echo "canvas_bullets< \"$LAST_TAG_DATE\") | \"* \(.title) (PR #\(.number))\"" \ - | sed 's/ *(\(#[0-9]*\))\( (PR\)/ \2/; s/) (PR / (PR /' - echo "ENDCANVAS" - } >> "$GITHUB_OUTPUT" - - - name: Create version tag - if: steps.changes.outputs.has_changes == 'true' - run: | - git tag ${{ steps.changes.outputs.version }} - git push origin ${{ steps.changes.outputs.version }} - - - name: Update changelog canvas - if: steps.changes.outputs.has_changes == 'true' - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - CANVAS_ID: ${{ secrets.SLACK_CANVAS_ID }} - SECTION_ID: ${{ secrets.SLACK_CANVAS_INTRO_SECTION }} - VERSION: ${{ steps.changes.outputs.version }} - CANVAS_BULLETS: ${{ steps.changes.outputs.canvas_bullets }} - run: | - TODAY=$(TZ=America/New_York date +%Y-%m-%d) - read -r -d '' MARKDOWN < - ENDTXT - TEXT=$(echo "$TEXT" | sed 's/^ //') - - curl -s -X POST https://slack.com/api/chat.postMessage \ - -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ - -H "Content-Type: application/json" \ - -d "$(jq -n --arg channel "$SLACK_CHANNEL_ID" --arg text "$TEXT" \ - '{channel: $channel, text: $text}')" + echo "Bumping $LAST_TAG -> $VERSION" + git tag -a "$VERSION" -m "$VERSION" + git push origin "$VERSION"