From dd6cf9079d2bdabda3d0a91f8f5a44b97d55549f Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Thu, 22 Aug 2024 15:38:01 +0900 Subject: [PATCH] Adding PostgreSQL 13 and MySQL 8.3 to GitHub Actions. --- .github/workflows/check.yml | 221 +++++++++++++++++++++++++++--------- 1 file changed, 166 insertions(+), 55 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index cf569691..d051502b 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,7 +1,7 @@ name: Check on: [ pull_request, push ] jobs: - mysql: + mysql5_7: runs-on: ubuntu-latest # push: always run. # pull_request: run only when the PR is submitted from a forked repository, not within this repository. @@ -13,34 +13,98 @@ jobs: image: mysql:5.7 options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10 ports: - - "3306:3306" + - "3306:3306" env: MYSQL_ROOT_PASSWORD: root MYSQL_USER: ci MYSQL_PASSWORD: password steps: - - uses: actions/checkout@v3 - - name: Set up JDK 8 - uses: actions/setup-java@v3 - with: - java-version: 8 - distribution: 'temurin' - cache: "gradle" - - name: Connect - run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;" - - name: Create database - run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;" - - name: Build with testing - run: ./gradlew --stacktrace :embulk-output-mysql:check + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + cache: "gradle" + - name: Connect + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;" + - name: Create database + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;" + - name: Build with testing + run: ./gradlew --stacktrace :embulk-output-mysql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: mysql5_7 + path: embulk-output-mysql/build/reports/tests/test + mysql8_3: + runs-on: ubuntu-latest + # push: always run. + # pull_request: run only when the PR is submitted from a forked repository, not within this repository. + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository + strategy: + fail-fast: false + services: + mysql: + # Due to MySQL 8.4 disabled mysql_native_password by default, + # Connector/J 5.x can't connect to database. + # So, Use MySQL 8.3. + image: mysql:8.3 + options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10 + ports: + - "3306:3306" env: - _JAVA_OPTIONS: "-Xmx2048m -Xms512m" - EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml" - - uses: actions/upload-artifact@v3 - if: always() - with: - name: mysql - path: embulk-output-mysql/build/reports/tests/test - postgresql: + MYSQL_ROOT_PASSWORD: root + MYSQL_USER: ci + MYSQL_PASSWORD: password + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + cache: "gradle" + - name: Connect + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "show databases;" + - name: show version + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "select version();" + - name: Create database + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "create database ci_test;" + # + # MySQL 8 uses caching_sha2_password mechanism by default. + # Connector/J 5.x doesn't support it. + # + # This part change password mechanism to mysql_native_password. + # Remove the following part after update Connector/J + # + - name: Show password plugins + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "SELECT user, host, plugin FROM mysql.user;" + - name: Change password mechanism1 (root@localhost) + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';" + - name: Change password mechanism2 (root@%) + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';" + - name: FLUSH PRIVILEGES + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "FLUSH PRIVILEGES;" + - name: Show password plugins2 + run: mysql -h 127.0.0.1 --port 3306 -uroot -proot -e "SELECT user, host, plugin FROM mysql.user;" + # + # End caching_sha2_password workaround. + # + - name: Build with testing + run: ./gradlew --stacktrace :embulk-output-mysql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_OUTPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: mysql8_3 + path: embulk-output-mysql/build/reports/tests/test + postgresql9_4: runs-on: ubuntu-latest # push: always run. # pull_request: run only when the PR is submitted from a forked repository, not within this repository. @@ -56,31 +120,78 @@ jobs: env: POSTGRES_PASSWORD: postgres steps: - - uses: actions/checkout@v3 - - name: Set up JDK 8 - uses: actions/setup-java@v3 - with: - java-version: 8 - distribution: 'temurin' - cache: "gradle" - - name: Connect - run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l" - env: - PGPASSWORD: postgres - - name: Create database - run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;" - env: - PGPASSWORD: postgres - - name: Build with testing - run: ./gradlew --stacktrace :embulk-output-postgresql:check + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + cache: "gradle" + - name: Connect + run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l" + env: + PGPASSWORD: postgres + - name: Create database + run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;" + env: + PGPASSWORD: postgres + - name: Build with testing + run: ./gradlew --stacktrace :embulk-output-postgresql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: postgresql9_4 + path: embulk-output-postgresql/build/reports/tests/test + # PostgreSQL 14 and later, raise the exception "The authentication type 10 is not supported." + # Use PostgreSQL 13 at this time. + postgresql13: + runs-on: ubuntu-latest + # push: always run. + # pull_request: run only when the PR is submitted from a forked repository, not within this repository. + if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository + strategy: + fail-fast: false + services: + postgres: + image: postgres:13 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + ports: + - "5432:5432" env: - _JAVA_OPTIONS: "-Xmx2048m -Xms512m" - EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml" - - uses: actions/upload-artifact@v3 - if: always() - with: - name: postgresql - path: embulk-output-postgresql/build/reports/tests/test + POSTGRES_PASSWORD: postgres + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + cache: "gradle" + - name: Connect + run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "\l" + env: + PGPASSWORD: postgres + - name: Show version + run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "select * from version();" + env: + PGPASSWORD: postgres + - name: Create database + run: psql -h 127.0.0.1 -p 5432 -U postgres -d postgres -c "create database ci_test;" + env: + PGPASSWORD: postgres + - name: Build with testing + run: ./gradlew --stacktrace :embulk-output-postgresql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: postgresql13 + path: embulk-output-postgresql/build/reports/tests/test redshift: runs-on: ubuntu-latest # push: always run. @@ -98,12 +209,12 @@ jobs: env: POSTGRES_PASSWORD: postgres steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 8 - distribution: 'temurin' + distribution: 'zulu' cache: "gradle" - name: Connect run: psql -h 127.0.0.1 -p 5439 -U postgres -d postgres -c "\l" @@ -118,13 +229,13 @@ jobs: env: _JAVA_OPTIONS: "-Xmx2048m -Xms512m" EMBULK_OUTPUT_REDSHIFT_TEST_CONFIG: "${{ github.workspace }}/ci/redshift.yml" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: always() with: name: redshift path: embulk-output-redshift/build/reports/tests/test if-no-files-found: ignore - sqlserver: + sqlserver: # https://hub.docker.com/_/microsoft-mssql-server runs-on: ubuntu-latest # push: always run. # pull_request: run only when the PR is submitted from a forked repository, not within this repository. @@ -132,12 +243,12 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 8 - distribution: 'temurin' + distribution: 'zulu' cache: "gradle" - name: Build-only run: ./gradlew --stacktrace :embulk-output-sqlserver:compileJava :embulk-output-sqlserver:compileTestJava