Skip to content

Commit f278985

Browse files
committed
build: add workflow to publish to PGXN
Signed-off-by: Snehil Shah <snehilshah.989@gmail.com>
1 parent 5e372ef commit f278985

File tree

6 files changed

+32
-102
lines changed

6 files changed

+32
-102
lines changed

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
uses: actions/checkout@v4
1818

1919
- name: Update docs
20-
run: bash scripts/update-docs.sh
20+
run: make docs
2121

2222
- name: Configure Git
2323
run: |

.github/workflows/publish.yml

Lines changed: 10 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -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

META.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
{
22
"name": "pg_dispatch",
33
"abstract": "Asynchronous SQL dispatcher",
4-
"version": "0.1.2",
4+
"description": "A TLE compliant asynchronous SQL dispatcher, allowing you to run SQL queries asynchronously.",
5+
"version": "0.1.3",
56
"maintainer": "Snehil Shah <snehilshah.989@gmail.com>",
67
"license": "postgresql",
78
"provides": {
89
"pg_dispatch": {
910
"abstract": "Asynchronous SQL dispatcher",
10-
"file": "pg_dispatch--0.1.2.sql",
11+
"file": "pg_dispatch--0.1.3.sql",
1112
"docfile": "README.md",
12-
"version": "0.1.2"
13+
"version": "0.1.3"
14+
}
15+
},
16+
"prereqs": {
17+
"runtime": {
18+
"requires": {
19+
"PostgreSQL": ">= 13.0.0",
20+
"pg_cron": ">= 1.5.0"
21+
}
1322
}
1423
},
1524
"resources": {

Makefile

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
EXTENSION = pg_dispatch
2-
EXTVERSION = 0.1.2
3-
DATA = pg_dispatch--0.1.2.sql
2+
EXTVERSION = 0.1.3
3+
DATA = pg_dispatch--0.1.3.sql
44

55
PG_CONFIG ?= pg_config
66
PGXS := $(shell $(PG_CONFIG) --pgxs)
77
include $(PGXS)
88

9-
.PHONY: dist
9+
.PHONY: dist docs
1010
dist:
11-
mkdir -p dist
12-
git archive --format zip --prefix=$(EXTENSION)-$(EXTVERSION)/ -o dist/$(EXTENSION)-$(EXTVERSION).zip HEAD
11+
mkdir -p dist
12+
git archive --format zip --prefix=$(EXTENSION)-$(EXTVERSION)/ -o dist/$(EXTENSION)-$(EXTVERSION).zip HEAD
13+
14+
docs:
15+
bash scripts/update-docs.sh

pg_dispatch.control

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Ref: https://www.postgresql.org/docs/current/extend-extensions.html#EXTEND-EXTENSIONS-FILES
22

33
comment = 'Asynchronous SQL dispatcher'
4-
default_version = '0.1.2'
4+
default_version = '0.1.3'
55
relocatable = false
66
requires = 'pgcrypto, pg_cron'
77
superuser = false

0 commit comments

Comments
 (0)