@@ -11,6 +11,64 @@ permissions:
1111 contents : write
1212
1313jobs :
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