-
Notifications
You must be signed in to change notification settings - Fork 23
121 lines (98 loc) · 3.76 KB
/
create-release.yml
File metadata and controls
121 lines (98 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: "Create Version Bump PR"
on:
schedule:
- cron: '0 3 * * MON' # Each Monday at 3am UTC
workflow_dispatch:
inputs:
bump:
type: choice
description: "Version bump type"
required: true
default: patch
options:
- patch
- minor
- major
jobs:
create-pr:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Hatch
run: |
pip install hatch 'virtualenv!=21.0.0'
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Calculate next version
id: version
working-directory: ./datajunction-server
run: |
CURRENT_VERSION=$(hatch version)
echo "Current version: $CURRENT_VERSION"
BUMP_TYPE="${{ github.event.inputs.bump || 'patch' }}"
echo "Bump type: $BUMP_TYPE"
# Parse current version (handles X.Y.Z and X.Y.ZaN formats)
IFS='.' read -r MAJOR MINOR PATCH <<< "${CURRENT_VERSION%%a*}"
# Calculate new version
case $BUMP_TYPE in
major) NEW_VERSION="$((MAJOR + 1)).0.0" ;;
minor) NEW_VERSION="${MAJOR}.$((MINOR + 1)).0" ;;
patch) NEW_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" ;;
esac
echo "New version: $NEW_VERSION"
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Configure Git
run: |
git config user.name "GitHub Actions Bot"
git config user.email "actions@github.com"
- name: Create release branch and update versions
run: |
VERSION="${{ steps.version.outputs.NEW_VERSION }}"
BRANCH="release/v$VERSION"
git checkout -b $BRANCH
# Update Python packages
cd datajunction-server && hatch version $VERSION && cd ..
cd datajunction-query && hatch version $VERSION && cd ..
cd datajunction-reflection && hatch version $VERSION && cd ..
cd datajunction-clients/python && hatch version $VERSION && cd ../..
# Update JavaScript packages
cd datajunction-ui && npm version $VERSION --no-git-tag-version && cd ..
cd datajunction-clients/javascript && npm version $VERSION --no-git-tag-version && cd ../..
git add -A
git commit -m "Bump version to v$VERSION"
git push origin $BRANCH
- name: Create Pull Request
run: |
VERSION="${{ steps.version.outputs.NEW_VERSION }}"
gh pr create \
--title "Release v$VERSION" \
--body "## Release v$VERSION
This PR bumps all package versions to v$VERSION.
**When merged**, packages will be automatically published to:
- PyPI: datajunction-server, datajunction-query, datajunction-reflection, datajunction
- npm: datajunction, datajunction-ui
A GitHub Release will also be created with auto-generated release notes.
---
*Auto-generated by Create Version Bump workflow*" \
--base main \
--head "release/v$VERSION"
env:
GITHUB_TOKEN: ${{ secrets.REPO_SCOPED_TOKEN }}
- name: Summary
run: |
VERSION="${{ steps.version.outputs.NEW_VERSION }}"
echo "## Version Bump PR Created" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Version:** v$VERSION" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Review the PR and merge when ready to publish." >> $GITHUB_STEP_SUMMARY