diff --git a/Dockerfile.mysql b/Dockerfile.mysql new file mode 100644 index 00000000..d60ee325 --- /dev/null +++ b/Dockerfile.mysql @@ -0,0 +1,23 @@ +ARG MYSQL_VERSION + +FROM mysql:${MYSQL_VERSION}-debian +# Make all apt-get commands non-interactive. Setting this as an ARG will apply to the entire +# build phase, but not leak into the final image and run phase. +ARG DEBIAN_FRONTEND=noninteractive + +# MySQL 5.7 has been EOL'd and is no longer being built by the official mysql docker maintainers: +# https://github.com/docker-library/mysql/pull/1019 +# Copy the gpg key from the latest MySQL image. +COPY --from=mysql:8.0-debian /etc/apt/keyrings/mysql.gpg /etc/apt/keyrings/mysql.gpg + +# Install the MySQL test package so that we can get test plugins. +# https://github.com/docker-library/mysql/issues/1040 +RUN set -eux \ + # Install MySQL test package. + && apt-get update \ + && apt-get install --yes mysql-community-test + +# This is the final stage inwhich we copy the plugins from the test stage. Doing it this way allows +# us to not have to install the test package in the final image since we only need the plugins. +FROM mysql:${MYSQL_VERSION}-debian +COPY --from=0 /usr/lib/mysql/plugin/ /usr/lib/mysql/plugin/ diff --git a/docker-compose.yml b/docker-compose.yml index 0e8cae99..c8531955 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,20 @@ services: db: platform: linux/x86_64 - image: "mysql:${MYSQL_VERSION}-debian" + image: "ghcr.io/trilogy-libraries/trilogy/ci-mysql:${MYSQL_VERSION}-debian" command: - - --sql_mode=NO_ENGINE_SUBSTITUTION - - --server-id=1 - - --gtid-mode=ON - - --enforce-gtid-consistency=ON - - --log-bin=mysql-bin.log + - --sql_mode=NO_ENGINE_SUBSTITUTION + - --server-id=1 + - --gtid-mode=ON + - --enforce-gtid-consistency=ON + - --log-bin=mysql-bin.log + build: + context: . + dockerfile: Dockerfile.mysql + args: + - MYSQL_VERSION=${MYSQL_VERSION} + cache_from: + - ghcr.io/trilogy-libraries/trilogy/ci-mysql:${MYSQL_VERSION}-debian environment: MYSQL_ALLOW_EMPTY_PASSWORD: 1 MYSQL_DATABASE: test @@ -15,7 +22,6 @@ services: volumes: - "./tmp/mysql-certs:/mysql-certs" - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - - ./test/auth_plugins/${MYSQL_VERSION}/auth_test_plugin.so:/usr/lib/mysql/plugin/auth_test_plugin.so app: image: ghcr.io/trilogy-libraries/trilogy/ci-app:distro-${DISTRIBUTION_SLUG}-ruby-${RUBY_VERSION}-mysql-${MYSQL_VERSION} privileged: true diff --git a/script/cibuild b/script/cibuild index b5555097..e053a5d7 100755 --- a/script/cibuild +++ b/script/cibuild @@ -58,7 +58,7 @@ mkdir tmp/mysql-certs chmod 777 tmp/mysql-certs docker compose rm --stop --force --volumes -output_fold "Pull cache image..." docker compose pull app || true +output_fold "Pull cache image..." docker compose pull app db || true output_fold "Bootstrapping container..." docker compose build output_fold "Running tests..." docker compose run --rm app -output_fold "Pushing cache image..." docker compose push app || true # Don't fail if push fails +output_fold "Pushing cache image..." docker compose push app db || true # Don't fail if push fails diff --git a/test/auth_plugins/5.7/auth_test_plugin.so b/test/auth_plugins/5.7/auth_test_plugin.so deleted file mode 100755 index fc4fc1f1..00000000 Binary files a/test/auth_plugins/5.7/auth_test_plugin.so and /dev/null differ diff --git a/test/auth_plugins/8.0/auth_test_plugin.so b/test/auth_plugins/8.0/auth_test_plugin.so deleted file mode 100644 index 5b990734..00000000 Binary files a/test/auth_plugins/8.0/auth_test_plugin.so and /dev/null differ