From 54276162f162f6c9648766e6d18ff875ec1d2a8e Mon Sep 17 00:00:00 2001 From: Toby Hede Date: Tue, 11 Mar 2025 14:32:20 +1100 Subject: [PATCH] feat: Add cs_eql_version function and generate eql version from release tag --- .github/workflows/release-eql.yml | 2 +- .gitignore | 2 ++ sql/{000-ore.sql => 001-ore.sql} | 0 sql/{001-ore-cllw.sql => 002-ore-cllw.sql} | 0 sql/{002-ste-vec.sql => 003-ste-vec.sql} | 0 tasks/000-version-template.sql | 9 +++++++++ tasks/build.sh | 7 +++++++ tasks/test.sh | 1 + tests/version.sql | 8 ++++++++ 9 files changed, 28 insertions(+), 1 deletion(-) rename sql/{000-ore.sql => 001-ore.sql} (100%) rename sql/{001-ore-cllw.sql => 002-ore-cllw.sql} (100%) rename sql/{002-ste-vec.sql => 003-ste-vec.sql} (100%) create mode 100644 tasks/000-version-template.sql create mode 100644 tests/version.sql diff --git a/.github/workflows/release-eql.yml b/.github/workflows/release-eql.yml index 70882a94..f51a2833 100644 --- a/.github/workflows/release-eql.yml +++ b/.github/workflows/release-eql.yml @@ -37,7 +37,7 @@ jobs: - name: Build EQL release run: | - mise run build + mise run build --version ${{github.event.release.tag_name}} - name: Upload EQL artifacts uses: actions/upload-artifact@v4 diff --git a/.gitignore b/.gitignore index 00e99a38..dfcfe631 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore +sql/000-version.sql + # Logs logs diff --git a/sql/000-ore.sql b/sql/001-ore.sql similarity index 100% rename from sql/000-ore.sql rename to sql/001-ore.sql diff --git a/sql/001-ore-cllw.sql b/sql/002-ore-cllw.sql similarity index 100% rename from sql/001-ore-cllw.sql rename to sql/002-ore-cllw.sql diff --git a/sql/002-ste-vec.sql b/sql/003-ste-vec.sql similarity index 100% rename from sql/002-ste-vec.sql rename to sql/003-ste-vec.sql diff --git a/tasks/000-version-template.sql b/tasks/000-version-template.sql new file mode 100644 index 00000000..dba8e9eb --- /dev/null +++ b/tasks/000-version-template.sql @@ -0,0 +1,9 @@ +DROP FUNCTION IF EXISTS cs_eql_version(); + +CREATE FUNCTION cs_eql_version() + RETURNS text + IMMUTABLE STRICT PARALLEL SAFE +AS $$ + SELECT '$RELEASE_VERSION'; +$$ LANGUAGE SQL; + diff --git a/tasks/build.sh b/tasks/build.sh index 09adaed5..bb4ad314 100755 --- a/tasks/build.sh +++ b/tasks/build.sh @@ -3,6 +3,7 @@ #MISE alias="b" #MISE sources=["sql/*.sql"] #MISE outputs=["release/cipherstash-encrypt.sql","release/cipherstash-encrypt-uninstall.sql"] +#USAGE flag "--version " help="Specify release version of EQL" default="DEV" #!/bin/bash @@ -13,6 +14,12 @@ mkdir -p release rm -f release/cipherstash-encrypt-uninstall.sql rm -f release/cipherstash-encrypt.sql +rm -f sql/000-version.sql + +RELEASE_VERSION=${usage_version} +sed "s/\$RELEASE_VERSION/$RELEASE_VERSION/g" tasks/000-version-template.sql > sql/000-version.sql + + # Collect all the drops # In reverse order (tac) so that we drop the constraints before the tables grep -h -E '^(DROP)' sql/0*-*.sql | tac > release/cipherstash-encrypt-tmp-drop-install.sql diff --git a/tasks/test.sh b/tasks/test.sh index 175b1cb3..8b6606d8 100755 --- a/tasks/test.sh +++ b/tasks/test.sh @@ -37,6 +37,7 @@ mise run build mise run reset --postgres ${POSTGRES_VERSION} # tests +run_test tests/version.sql run_test tests/core.sql run_test tests/core-functions.sql run_test tests/config.sql diff --git a/tests/version.sql b/tests/version.sql new file mode 100644 index 00000000..5330ad10 --- /dev/null +++ b/tests/version.sql @@ -0,0 +1,8 @@ +\set ON_ERROR_STOP on + +DO $$ + BEGIN + ASSERT (SELECT true WHERE cs_eql_version() = 'DEV'); + + END; +$$ LANGUAGE plpgsql;