Skip to content

Commit 56bffa9

Browse files
authored
ci: add crates.io publish to release workflow (supabase#579)
* ci: add crates.io publish to release * test workflow * test workflow * revert test * change rust toolchain action * treat http 404 as publish trigger * add authentication step for crates.io publishing and update token usage
1 parent 73a61b4 commit 56bffa9

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,64 @@ permissions:
1111
contents: write
1212

1313
jobs:
14+
publish-to-crates-io:
15+
name: Publish to crates.io
16+
runs-on: blacksmith-4vcpu-ubuntu-2404
17+
environment: release
18+
permissions:
19+
id-token: write
20+
steps:
21+
- uses: actions/checkout@v6
22+
- uses: actions-rust-lang/setup-rust-toolchain@v1
23+
with:
24+
toolchain: 1.88.0
25+
26+
- run: |
27+
sudo apt remove -y postgres*
28+
sudo apt -y install curl ca-certificates build-essential pkg-config libssl-dev
29+
sudo install -d /usr/share/postgresql-common/pgdg
30+
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
31+
. /etc/os-release
32+
sudo sh -c "echo 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
33+
sudo apt update -y -qq --fix-missing
34+
sudo apt -y install postgresql-client-15 postgresql-15 postgresql-server-dev-15
35+
sudo apt -y autoremove && sudo apt -y clean
36+
sudo chmod a+rwx `/usr/lib/postgresql/15/bin/pg_config --pkglibdir` `/usr/lib/postgresql/15/bin/pg_config --sharedir`/extension /var/run/postgresql/
37+
38+
- run: cargo install --locked cargo-pgrx --version 0.16.1
39+
- run: cargo pgrx init --pg15 /usr/lib/postgresql/15/bin/pg_config
40+
41+
- uses: rust-lang/crates-io-auth-action@v1
42+
id: auth
43+
44+
- name: Check and publish supabase-wrappers-macros
45+
env:
46+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
47+
run: |
48+
VERSION=$(cargo metadata --format-version 1 --no-deps --offline | jq -r '.packages[] | select(.name == "supabase-wrappers-macros") | .version')
49+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --user-agent "supabase-wrappers" https://crates.io/api/v1/crates/supabase-wrappers-macros/$VERSION)
50+
if [ "$STATUS" = "404" ]; then
51+
cargo publish -p supabase-wrappers-macros
52+
else
53+
echo "Version $VERSION already published, skipping."
54+
fi
55+
56+
# sleep for a while to avoid crates.io request rate limit
57+
- name: Sleep for 2 seconds
58+
run: sleep 2s
59+
60+
- name: Check and publish supabase-wrappers
61+
env:
62+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
63+
run: |
64+
VERSION=$(cargo metadata --format-version 1 --no-deps --offline | jq -r '.packages[] | select(.name == "supabase-wrappers") | .version')
65+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --user-agent "supabase-wrappers" https://crates.io/api/v1/crates/supabase-wrappers/$VERSION)
66+
if [ "$STATUS" = "404" ]; then
67+
cargo publish -p supabase-wrappers
68+
else
69+
echo "Version $VERSION already published, skipping."
70+
fi
71+
1472
release:
1573
name: Create Release
1674
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)