Skip to content

Commit dffd452

Browse files
committed
Enhanced release, many drops
1 parent f248461 commit dffd452

15 files changed

+322
-1710
lines changed

.github/workflows/test-eql.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: "Test EQL"
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- ".github/workflows/test-eql.yml"
8+
- "sql/*.sql"
9+
10+
pull_request:
11+
branches:
12+
- main
13+
paths:
14+
- ".github/workflows/test-eql.yml"
15+
- "sql/*.sql"
16+
17+
workflow_dispatch:
18+
19+
defaults:
20+
run:
21+
shell: bash -l {0}
22+
23+
jobs:
24+
test:
25+
name: "Test EQL SQL components"
26+
runs-on: ubuntu-24.04
27+
28+
strategy:
29+
fail-fast: false
30+
matrix:
31+
postgres-version: [17, 16, 15, 14]
32+
33+
env:
34+
CS_DATABASE__PASSWORD:
35+
CS_DATABASE__PORT: 5432
36+
CS_DATABASE__NAME: test
37+
38+
steps:
39+
- uses: actions/checkout@v4
40+
41+
- uses: extractions/setup-just@v1
42+
43+
- uses: ankane/setup-postgres@v1
44+
with:
45+
postgres-version: ${{ matrix.postgres-version }}
46+
database: ${{ env.CS_DATABASE__NAME }}
47+
48+
- name: Test EQL
49+
run: |
50+
just build test
51+

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,5 @@ cipherstash-proxy.toml
183183

184184
# build artifacts
185185
release/
186+
187+
.mise.*

justfile

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,71 @@ set dotenv-load
22
set positional-arguments
33

44

5-
test_dsl:
5+
test:
66
#!/usr/bin/env bash
77
set -euxo pipefail
88

9-
PGPASSWORD=$CS_DATABASE__PASSWORD dropdb --force --if-exists --username $CS_DATABASE__USERNAME --port $CS_DATABASE__PORT cs_migrator_test
10-
PGPASSWORD=$CS_DATABASE__PASSWORD createdb --username $CS_DATABASE__USERNAME --port $CS_DATABASE__PORT cs_migrator_test
9+
PGPASSWORD=$CS_DATABASE__PASSWORD dropdb --force --if-exists --username ${CS_DATABASE__USERNAME:-$USER} --port $CS_DATABASE__PORT $CS_DATABASE__NAME
10+
PGPASSWORD=$CS_DATABASE__PASSWORD createdb --username ${CS_DATABASE__USERNAME:-$USER} --port $CS_DATABASE__PORT $CS_DATABASE__NAME
1111

12-
connection_url=postgresql://$CS_DATABASE__USERNAME:@localhost:$CS_DATABASE__PORT/cs_migrator_test
13-
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f sql/dsl-core.sql
14-
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f sql/dsl-config-schema.sql
15-
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f sql/dsl-config-functions.sql
16-
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f sql/dsl-encryptindex.sql
12+
connection_url=postgresql://${CS_DATABASE__USERNAME:-$USER}:@localhost:$CS_DATABASE__PORT/$CS_DATABASE__NAME
13+
14+
# Install
15+
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f release/cipherstash-encrypt.sql
1716

1817
# tests
1918
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f tests/core.sql
2019
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f tests/config.sql
2120
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f tests/encryptindex.sql
2221

23-
dropdb --username $CS_DATABASE__USERNAME --port $CS_DATABASE__PORT cs_migrator_test
22+
# Uninstall
23+
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f release/cipherstash-encrypt-uninstall.sql
2424

25+
dropdb --username ${CS_DATABASE__USERNAME:-$USER} --port $CS_DATABASE__PORT $CS_DATABASE__NAME
2526

2627
build:
2728
#!/usr/bin/env bash
2829
set -euxo pipefail
2930

3031
mkdir -p release
3132

32-
cat sql/666-drop.sql > release/cipherstash-encrypt-uninstall.sql
33-
grep -h '^DROP' sql/0*-*.sql | tac >> release/cipherstash-encrypt-uninstall.sql
33+
rm -f release/cipherstash-encrypt-uninstall.sql
34+
rm -f release/cipherstash-encrypt.sql
35+
36+
# Collect all the drops
37+
# In reverse order (tac) so that we drop the constraints before the tables
38+
grep -h -E '^(DROP|ALTER DOMAIN [^ ]+ DROP CONSTRAINT)' sql/0*-*.sql | tac > release/cipherstash-encrypt-tmp-drop.sql
39+
# types are always last
40+
cat sql/666-drop_types.sql >> release/cipherstash-encrypt-tmp-drop.sql
41+
3442

35-
cat release/cipherstash-encrypt-uninstall.sql > release/cipherstash-encrypt.sql
43+
# Build cipherstash-encrypt.sql
44+
# drop everything first
45+
cat release/cipherstash-encrypt-tmp-drop.sql > release/cipherstash-encrypt.sql
46+
# cat the rest of the sql files
3647
cat sql/0*-*.sql >> release/cipherstash-encrypt.sql
3748

3849

50+
# Build cipherstash-encrypt-uninstall.sql
51+
# prepend the drops to the main sql file
52+
cat release/cipherstash-encrypt-tmp-drop.sql >> release/cipherstash-encrypt-uninstall.sql
53+
# uninstall renames configuration table
54+
cat sql/666-rename_configuration_table.sql >> release/cipherstash-encrypt-uninstall.sql
55+
56+
# remove the drop file
57+
# rm release/cipherstash-encrypt-tmp-drop.sql
58+
59+
60+
reset:
61+
#!/usr/bin/env bash
62+
set -euxo pipefail
63+
64+
PGPASSWORD=$CS_DATABASE__PASSWORD dropdb --force --if-exists --username ${CS_DATABASE__USERNAME:-$USER} --port $CS_DATABASE__PORT $CS_DATABASE__NAME
65+
PGPASSWORD=$CS_DATABASE__PASSWORD createdb --username ${CS_DATABASE__USERNAME:-$USER} --port $CS_DATABASE__PORT $CS_DATABASE__NAME
66+
67+
PGPASSWORD=$CS_DATABASE__PASSWORD psql $connection_url -f release/cipherstash-encrypt.sql
68+
69+
3970
psql:
4071
psql postgresql://$CS_USERNAME:$CS_PASSWORD@localhost:$CS_PORT/$CS_DATABASE__NAME
4172

0 commit comments

Comments
 (0)