-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add automatic major version tag management #14
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
Conversation
- Add workflow to automatically update major version tags (v1, v2, etc.) when semantic version tags are pushed - Uses nowactions/update-majorver@v1 action to move major tags to latest patch releases - Triggers on semantic version tag pushes (v*.*.* pattern) - Includes proper permissions for tag management operations Requested by @aaronsteers Co-Authored-By: AJ Steers <[email protected]>
Original prompt from AJ Steers |
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces automation for major version tag management by adding a GitHub Actions workflow that automatically updates major version tags (e.g., v1) when new semantic version tags (e.g., v1.2.3) are pushed to the repository.
- Adds automated major version tag management workflow
- Configures trigger for semantic version tag pushes with pattern
v[0-9]+.[0-9]+.[0-9]+ - Uses third-party action
nowactions/update-majorver@v1to handle tag updates
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
- Change trigger pattern from 'v[0-9]+.[0-9]+.[0-9]+' to 'v[0-9]+\.[0-9]+\.[0-9]+' - Ensures the workflow only triggers on proper semantic version tags - Addresses Copilot feedback on PR #14 Co-Authored-By: AJ Steers <[email protected]>
- Add release-drafter workflow that creates/updates release drafts on main merges - Add release-drafter.yml configuration with semantic versioning support - Modify major tag management to trigger on release publication events instead of direct tag pushes - Follow PyAirbyte's proven patterns but simplified (no Python package publishing) This creates a complete automated release workflow: 1. PRs merged to main → Release draft updated automatically 2. Maintainer publishes the release → Major version tags updated automatically Requested by @aaronsteers Co-Authored-By: AJ Steers <[email protected]>
feat: implement complete automated release workflow
Summary
This PR implements a two-workflow automated release management system using the release-drafter pattern, following PyAirbyte's proven approach but simplified for this action repository. The implementation replaces the original single workflow approach with a more robust system:
Workflow 1: Release Drafter - Automatically creates and updates release drafts when PRs are merged to main
Workflow 2: Major Tag Management - Automatically updates major version tags (v1, v2, etc.) when releases are published
Key Changes:
.github/release-drafter.ymlconfiguration with semantic versioning support and automatic change categorization.github/workflows/release-drafter.ymlthat triggers on main branch pushes to update release drafts.github/workflows/update-major-tags.ymlto trigger onrelease.publishedevents instead of direct tag pushesReview & Testing Checklist for Human
release-drafter/release-drafter@v6andnowactions/update-majorver@v1are from reputable sources and haven't been compromisedrelease.publishedevent properly triggers the major tag workflow and doesn't trigger on drafts or pre-releasescontents: writeandpull-requests: readare the minimum required permissions for both workflowsRecommended Test Plan:
Diagram
%%{ init : { "theme" : "default" }}%% graph TD subgraph Repository["aaronsteers/poe-command-processor"] PRMerge["PR Merge<br/>to main"] subgraph Workflows[".github/workflows/"] ReleaseDrafter[".../release-drafter.yml"]:::major-edit MajorTags[".../update-major-tags.yml"]:::major-edit ExistingWorkflow1[".../slash-command-dispatch.yml"]:::context ExistingWorkflow2[".../tests-command.yml"]:::context end subgraph Config[".github/"] ReleaseDrafterConfig["release-drafter.yml"]:::major-edit end subgraph GitHubUI["GitHub UI"] ReleaseDraft["Release Draft"]:::context PublishedRelease["Published Release"]:::context end subgraph Tags["Git Tags"] SemanticTags["v1.0.0, v1.1.0, v1.2.0, v1.3.0"]:::context MajorTagsNode["v1, v2, etc."]:::context end ThirdPartyAction1["release-drafter/release-drafter@v6"]:::context ThirdPartyAction2["nowactions/update-majorver@v1"]:::context end PRMerge --> ReleaseDrafter ReleaseDrafter --> ThirdPartyAction1 ThirdPartyAction1 --> ReleaseDraft ReleaseDraft --> PublishedRelease PublishedRelease --> MajorTags MajorTags --> ThirdPartyAction2 ThirdPartyAction2 --> MajorTagsNode ReleaseDrafterConfig --> ReleaseDrafter subgraph Legend L1[Major Edit]:::major-edit L2[Minor Edit]:::minor-edit L3[Context/No Edit]:::context end classDef major-edit fill:#90EE90 classDef minor-edit fill:#87CEEB classDef context fill:#FFFFFFNotes
fetch-depth: 0in the major tag workflow ensures access to full git history for proper tag managementorigin/v1branch