@@ -9,106 +9,138 @@ permissions:
99 contents : read
1010
1111jobs :
12+ # =============================================================
13+ # Detect which paths changed to skip unneeded jobs
14+ # =============================================================
15+ changes :
16+ name : Detect changes
17+ runs-on : ubuntu-latest
18+ outputs :
19+ native : ${{ steps.filter.outputs.native }}
20+ wasm : ${{ steps.filter.outputs.wasm }}
21+ steps :
22+ - uses : actions/checkout@v6
23+ with :
24+ fetch-depth : 0
25+ - id : filter
26+ run : |
27+ if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
28+ BASE=${{ github.event.pull_request.base.sha }}
29+ HEAD=${{ github.event.pull_request.head.sha }}
30+ else
31+ BASE=${{ github.event.before }}
32+ HEAD=${{ github.sha }}
33+ fi
34+ # Null SHA (force push / new branch): can't diff, so run everything
35+ if [[ "$BASE" == "0000000000000000000000000000000000000000" ]]; then
36+ echo "native=true" >> "$GITHUB_OUTPUT"
37+ echo "wasm=true" >> "$GITHUB_OUTPUT"
38+ exit 0
39+ fi
40+ CHANGED=$(git diff --name-only "$BASE" "$HEAD")
41+ echo "native=$(echo "$CHANGED" | grep -qE '^(wrappers/|supabase-wrappers/|supabase-wrappers-macros/|\.github/workflows/test_wrappers\.yml)' && echo true || echo false)" >> "$GITHUB_OUTPUT"
42+ echo "wasm=$(echo "$CHANGED" | grep -qE '^(wasm-wrappers/|supabase-wrappers/|wrappers/src/fdw/wasm_fdw/|\.github/workflows/test_wrappers\.yml)' && echo true || echo false)" >> "$GITHUB_OUTPUT"
43+
1244 # =============================================================
1345 # Native wrappers test
1446 # =============================================================
1547 test_native :
1648 name : Run native wrappers tests
49+ needs : [changes]
50+ if : needs.changes.outputs.native == 'true'
1751 runs-on : blacksmith-4vcpu-ubuntu-2404
1852
1953 steps :
20- - name : Checkout code
21- uses : actions/checkout@v6
22-
23- - name : Build docker images
24- run : |
25- docker compose -f wrappers/.ci/docker-compose-native.yaml up -d
26-
27- - uses : actions-rs/toolchain@v1
28- with :
29- toolchain : 1.88.0
30- default : true
31- override : true
32- components : rustfmt, clippy
33-
34- - run : |
35- sudo apt remove -y postgres*
36- sudo apt -y install curl ca-certificates build-essential pkg-config libssl-dev
37- sudo install -d /usr/share/postgresql-common/pgdg
38- sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
39- . /etc/os-release
40- 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"
41- sudo apt update -y -qq --fix-missing
42- sudo apt -y install postgresql-client-15 postgresql-15 postgresql-server-dev-15
43- sudo apt -y autoremove && sudo apt -y clean
44- sudo chmod a+rwx `/usr/lib/postgresql/15/bin/pg_config --pkglibdir` `/usr/lib/postgresql/15/bin/pg_config --sharedir`/extension /var/run/postgresql/
45-
46- - run : cargo install --locked cargo-pgrx --version 0.16.1
47- - run : cargo pgrx init --pg15 /usr/lib/postgresql/15/bin/pg_config
48-
49- - name : Format code
50- run : |
51- cd wrappers && cargo fmt --check
52-
53- - name : Run clippy
54- run : |
55- cd wrappers && RUSTFLAGS="-D warnings" cargo clippy --all --tests --no-deps --features native_fdws,helloworld_fdw
56-
57- - name : Perform test
58- run : cd wrappers && cargo pgrx test --features "native_fdws pg15"
54+ - name : Checkout code
55+ uses : actions/checkout@v6
56+
57+ - name : Build docker images
58+ run : |
59+ docker compose -f wrappers/.ci/docker-compose-native.yaml up -d
60+
61+ - uses : actions-rust-lang/setup-rust-toolchain@v1
62+ with :
63+ toolchain : 1.88.0
64+ components : rustfmt, clippy
65+
66+ - run : |
67+ sudo apt remove -y postgres*
68+ sudo apt -y install curl ca-certificates build-essential pkg-config libssl-dev
69+ sudo install -d /usr/share/postgresql-common/pgdg
70+ sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
71+ . /etc/os-release
72+ 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"
73+ sudo apt update -y -qq --fix-missing
74+ sudo apt -y install postgresql-client-15 postgresql-15 postgresql-server-dev-15
75+ sudo apt -y autoremove && sudo apt -y clean
76+ sudo chmod a+rwx `/usr/lib/postgresql/15/bin/pg_config --pkglibdir` `/usr/lib/postgresql/15/bin/pg_config --sharedir`/extension /var/run/postgresql/
77+
78+ - run : cargo install --locked cargo-pgrx --version 0.16.1
79+ - run : cargo pgrx init --pg15 /usr/lib/postgresql/15/bin/pg_config
80+
81+ - name : Format code
82+ run : |
83+ cd wrappers && cargo fmt --check
84+
85+ - name : Run clippy
86+ run : |
87+ cd wrappers && RUSTFLAGS="-D warnings" cargo clippy --all --tests --no-deps --features native_fdws,helloworld_fdw
88+
89+ - name : Perform test
90+ run : cd wrappers && cargo pgrx test --features "native_fdws pg15"
5991
6092 # =============================================================
6193 # Wasm wrappers test
6294 # =============================================================
6395 test_wasm :
6496 name : Run Wasm wrappers tests
97+ needs : [changes]
98+ if : needs.changes.outputs.wasm == 'true'
6599 runs-on : blacksmith-4vcpu-ubuntu-2404
66100
67101 steps :
68- - name : Checkout code
69- uses : actions/checkout@v6
70-
71- - name : Build docker images
72- run : |
73- docker compose -f wrappers/.ci/docker-compose-wasm.yaml up -d
74-
75- - uses : actions-rs/toolchain@v1
76- with :
77- toolchain : 1.88.0
78- default : true
79- override : true
80- components : rustfmt, clippy
81-
82- - run : |
83- sudo apt remove -y postgres*
84- sudo apt -y install curl ca-certificates build-essential pkg-config libssl-dev
85- sudo install -d /usr/share/postgresql-common/pgdg
86- sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
87- . /etc/os-release
88- 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"
89- sudo apt update -y -qq --fix-missing
90- sudo apt -y install postgresql-client-15 postgresql-15 postgresql-server-dev-15
91- sudo apt -y autoremove && sudo apt -y clean
92- sudo chmod a+rwx `/usr/lib/postgresql/15/bin/pg_config --pkglibdir` `/usr/lib/postgresql/15/bin/pg_config --sharedir`/extension /var/run/postgresql/
93-
94- - run : cargo install --locked cargo-pgrx --version 0.16.1
95- - run : cargo pgrx init --pg15 /usr/lib/postgresql/15/bin/pg_config
96- - run : cargo install --locked cargo-component --version 0.21.1
97- - run : rustup target add wasm32-unknown-unknown
98-
99- - name : Build Wasm FDWs
100- run : |
101- cd ./wasm-wrappers/fdw && cargo component build --release --target wasm32-unknown-unknown
102-
103- # we don't want to check format for generated files, so we use
104- # 'git diff --quiet' trick here, instead of 'cargo fmt --check'
105- - name : Format code
106- run : |
107- cd ./wasm-wrappers/fdw && cargo fmt && git diff --quiet
108-
109- - name : Run clippy
110- run : |
111- cd ./wasm-wrappers/fdw && RUSTFLAGS="-D warnings" cargo clippy --all --tests --no-deps
112-
113- - name : Perform test
114- run : cd wrappers && cargo pgrx test --features "wasm_fdw pg15"
102+ - name : Checkout code
103+ uses : actions/checkout@v6
104+
105+ - name : Build docker images
106+ run : |
107+ docker compose -f wrappers/.ci/docker-compose-wasm.yaml up -d
108+
109+ - uses : actions-rust-lang/setup-rust-toolchain@v1
110+ with :
111+ toolchain : 1.88.0
112+ components : rustfmt, clippy
113+
114+ - run : |
115+ sudo apt remove -y postgres*
116+ sudo apt -y install curl ca-certificates build-essential pkg-config libssl-dev
117+ sudo install -d /usr/share/postgresql-common/pgdg
118+ sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
119+ . /etc/os-release
120+ 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"
121+ sudo apt update -y -qq --fix-missing
122+ sudo apt -y install postgresql-client-15 postgresql-15 postgresql-server-dev-15
123+ sudo apt -y autoremove && sudo apt -y clean
124+ sudo chmod a+rwx `/usr/lib/postgresql/15/bin/pg_config --pkglibdir` `/usr/lib/postgresql/15/bin/pg_config --sharedir`/extension /var/run/postgresql/
125+
126+ - run : cargo install --locked cargo-pgrx --version 0.16.1
127+ - run : cargo pgrx init --pg15 /usr/lib/postgresql/15/bin/pg_config
128+ - run : cargo install --locked cargo-component --version 0.21.1
129+ - run : rustup target add wasm32-unknown-unknown
130+
131+ - name : Build Wasm FDWs
132+ run : |
133+ cd ./wasm-wrappers/fdw && cargo component build --release --target wasm32-unknown-unknown
134+
135+ # we don't want to check format for generated files, so we use
136+ # 'git diff --quiet' trick here, instead of 'cargo fmt --check'
137+ - name : Format code
138+ run : |
139+ cd ./wasm-wrappers/fdw && cargo fmt && git diff --quiet
140+
141+ - name : Run clippy
142+ run : |
143+ cd ./wasm-wrappers/fdw && RUSTFLAGS="-D warnings" cargo clippy --all --tests --no-deps
144+
145+ - name : Perform test
146+ run : cd wrappers && cargo pgrx test --features "wasm_fdw pg15"
0 commit comments