TideSQL 4 MINOR (v4.2.0) #31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docker | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [main, master] | |
| paths: | |
| - 'docker/**' | |
| - 'tidesdb/**' | |
| - 'mysql-test/**' | |
| - '.github/workflows/docker.yml' | |
| pull_request: | |
| branches: [main, master] | |
| paths: | |
| - 'docker/**' | |
| - 'tidesdb/**' | |
| - 'mysql-test/**' | |
| - '.github/workflows/docker.yml' | |
| env: | |
| IMAGE_NAME: tidesql-ci | |
| jobs: | |
| docker-build-and-run: | |
| name: "Build & verify Docker image" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Resolve TidesDB version | |
| id: versions | |
| run: | | |
| VERSION=$(curl -fsSL https://api.github.com/repos/tidesdb/tidesdb/releases/latest \ | |
| | grep '"tag_name":' | sed -E 's/.*"tag_name": *"([^"]+)".*/\1/') | |
| if [ -z "$VERSION" ]; then | |
| echo "Failed to fetch latest TidesDB version" >&2 | |
| exit 1 | |
| fi | |
| echo "tidesdb=${VERSION}" >> "$GITHUB_OUTPUT" | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build Docker image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: docker/ubuntu/Dockerfile | |
| push: false | |
| load: true | |
| tags: "${{ env.IMAGE_NAME }}:ci" | |
| build-args: | | |
| MARIADB_VERSION=11.8 | |
| TIDESDB_VERSION=${{ steps.versions.outputs.tidesdb }} | |
| DISABLED_ENGINES=MROONGA,ROCKSDB,CONNECT,SPIDER,OQGRAPH,COLUMNSTORE | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| - name: Start container | |
| run: | | |
| docker run -d \ | |
| --name tidesql-ci \ | |
| --tmpfs /tmp:exec \ | |
| "${{ env.IMAGE_NAME }}:ci" | |
| echo "Waiting for MariaDB to start..." | |
| for i in $(seq 1 60); do | |
| if docker exec tidesql-ci mariadb -u root -e "SELECT 1" &>/dev/null; then | |
| echo "MariaDB ready (${i}s)" | |
| break | |
| fi | |
| if [ "$i" = "60" ]; then | |
| echo "MariaDB failed to start within 60s" | |
| docker logs tidesql-ci | |
| exit 1 | |
| fi | |
| sleep 1 | |
| done | |
| - name: Verify TidesDB plugin is loaded | |
| run: | | |
| docker exec tidesql-ci mariadb -u root -e " | |
| SELECT PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE | |
| FROM INFORMATION_SCHEMA.PLUGINS | |
| WHERE PLUGIN_NAME = 'TidesDB'; | |
| " | |
| docker exec tidesql-ci mariadb -u root -BN -e " | |
| SELECT PLUGIN_STATUS | |
| FROM INFORMATION_SCHEMA.PLUGINS | |
| WHERE PLUGIN_NAME = 'TidesDB'; | |
| " | grep -q ACTIVE | |
| - name: Smoke test | |
| run: | | |
| docker exec tidesql-ci mariadb -u root -e " | |
| CREATE DATABASE IF NOT EXISTS ci_test; | |
| USE ci_test; | |
| CREATE TABLE t ( | |
| id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, | |
| name VARCHAR(100) | |
| ) ENGINE=TidesDB; | |
| INSERT INTO t (name) VALUES ('alice'), ('bob'), ('charlie'); | |
| SELECT * FROM t ORDER BY id; | |
| START TRANSACTION; | |
| INSERT INTO t (name) VALUES ('should_not_exist'); | |
| ROLLBACK; | |
| SELECT COUNT(*) AS expect_3 FROM t; | |
| DROP TABLE t; | |
| DROP DATABASE ci_test; | |
| " | |
| - name: SHOW ENGINE TIDESDB STATUS | |
| run: | | |
| docker exec tidesql-ci mariadb -u root -e "SHOW ENGINE TIDESDB STATUS\G" | |
| - name: Collect logs on failure | |
| if: failure() | |
| run: | | |
| echo "=== Container logs ===" | |
| docker logs tidesql-ci 2>&1 | tail -200 | |
| echo "" | |
| echo "=== MariaDB error log ===" | |
| docker exec tidesql-ci cat /usr/local/mariadb/log/error.log 2>/dev/null \ | |
| | tail -200 || true | |
| - name: Cleanup | |
| if: always() | |
| run: | | |
| docker rm -f tidesql-ci 2>/dev/null || true |