@@ -37,101 +37,19 @@ jobs:
3737 - name : Publish to database.dev
3838 run : dbdev publish
3939
40- github :
41- name : GitHub
40+ pgxn :
41+ name : PGXN
4242 runs-on : ubuntu-latest
43- permissions :
44- contents : write
43+ container : pgxn/pgxn-tools
4544 steps :
4645 - name : Checkout repository
4746 uses : actions/checkout@v4
48- with :
49- fetch-depth : 0
50- fetch-tags : true
5147
52- - name : Get version from control file
53- id : version
54- run : |
55- VERSION=$(grep "default_version" pg_dispatch.control | sed "s/.*'\(.*\)'.*/\1/")
56- echo "version=$VERSION" >> $GITHUB_OUTPUT
57-
58- - name : Check if version exists
59- id : version_check
60- run : |
61- VERSION=${{ steps.version.outputs.version }}
62- if git tag | grep -q "v$VERSION"; then
63- echo "Version v$VERSION already exists, skipping release"
64- echo "should_release=false" >> $GITHUB_OUTPUT
65- else
66- echo "New version v$VERSION detected, proceeding with release"
67- echo "should_release=true" >> $GITHUB_OUTPUT
68- fi
69-
70- - name : Generate changelog
71- id : changelog
72- if : ${{ steps.version_check.outputs.should_release == 'true' }}
73- run : |
74- LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
75-
76- if [ -z "$LAST_TAG" ]; then
77- COMMITS=$(git log --pretty=format:"%s" --no-merges)
78- else
79- COMMITS=$(git log ${LAST_TAG}..HEAD --pretty=format:"%s" --no-merges)
80- fi
81-
82- if [ -z "$COMMITS" ] || [ "$COMMITS" = "" ]; then
83- echo "No commits since last tag, trying to get commits from previous tag..."
84- PREV_TAG=$(git tag --sort=-version:refname | head -2 | tail -1)
85- echo "Previous tag: $PREV_TAG"
86- if [ -n "$PREV_TAG" ] && [ "$PREV_TAG" != "$LAST_TAG" ]; then
87- COMMITS=$(git log ${PREV_TAG}..HEAD --pretty=format:"%s" --no-merges)
88- echo "Commits since $PREV_TAG:"
89- echo "$COMMITS"
90- fi
91- fi
48+ - name : Bundle the Release
49+ run : pgxn-bundle
9250
93- FEATURES=$(echo "$COMMITS" | grep -E "^feat" | sed 's/^/- /' || true)
94- FIXES=$(echo "$COMMITS" | grep -E "^fix" | sed 's/^/- /' || true)
95- CHORES=$(echo "$COMMITS" | grep -E "^chore" | sed 's/^/- /' || true)
96- BUILDS=$(echo "$COMMITS" | grep -E "^build" | sed 's/^/- /' || true)
97- DOCS=$(echo "$COMMITS" | grep -E "^docs" | sed 's/^/- /' || true)
98- OTHER_COMMITS=$(echo "$COMMITS" | grep -v -E "^(feat|fix|chore|build|docs)" | sed 's/^/- /' || true)
99-
100- CHANGELOG=""
101- if [ -n "$FEATURES" ]; then
102- CHANGELOG="${CHANGELOG}### Features"$'\n'"$FEATURES"$'\n\n'
103- fi
104- if [ -n "$FIXES" ]; then
105- CHANGELOG="${CHANGELOG}### Bug Fixes"$'\n'"$FIXES"$'\n\n'
106- fi
107- if [ -n "$DOCS" ]; then
108- CHANGELOG="${CHANGELOG}### Documentation"$'\n'"$DOCS"$'\n\n'
109- fi
110- if [ -n "$CHORES" ] || [ -n "$BUILDS" ]; then
111- CHANGELOG="${CHANGELOG}### Maintenance"$'\n'
112- [ -n "$CHORES" ] && CHANGELOG="${CHANGELOG}$CHORES"$'\n'
113- [ -n "$BUILDS" ] && CHANGELOG="${CHANGELOG}$BUILDS"$'\n'
114- fi
115- if [ -n "$OTHER_COMMITS" ]; then
116- CHANGELOG="${CHANGELOG}### Other Changes"$'\n'"$OTHER_COMMITS"$'\n'
117- fi
118-
119- {
120- echo "changelog<<EOF"
121- printf '%s' "$CHANGELOG"
122- echo "EOF"
123- } >> $GITHUB_OUTPUT
124-
125- - name : Create GitHub Release
126- uses : softprops/action-gh-release@v1
127- if : ${{ steps.version_check.outputs.should_release == 'true' }}
128- with :
129- tag_name : v${{ steps.version.outputs.version }}
130- name : v${{ steps.version.outputs.version }}
131- body : |
132- Release of `pg_dispatch` version ${{ steps.version.outputs.version }}.
133-
134- Go to [database.dev](https://database.dev/Snehil_Shah/pg_dispatch) for the latest installation.
135-
136- ## Changes
137- ${{ steps.changelog.outputs.changelog }}
51+ - name : Publish to PGXN
52+ env :
53+ PGXN_USERNAME : ${{ secrets.PGXN_USERNAME }}
54+ PGXN_PASSWORD : ${{ secrets.PGXN_PASSWORD }}
55+ run : pgxn-release
0 commit comments