diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17352c39..28e366f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,7 @@ name: Build and test -on: push +on: [push, pull_request] jobs: - mysql: + mysql5_7: strategy: fail-fast: false runs-on: ubuntu-latest @@ -16,8 +16,8 @@ jobs: MYSQL_USER: ci MYSQL_PASSWORD: password steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: 8 distribution: 'zulu' @@ -30,12 +30,71 @@ jobs: env: _JAVA_OPTIONS: "-Xmx2048m -Xms512m" EMBULK_INPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml" - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: - name: mysql + name: mysql5_7 path: embulk-input-mysql/build/reports/tests/test - postgresql: + mysql8_3: + strategy: + fail-fast: false + runs-on: ubuntu-latest + 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: + MYSQL_ROOT_PASSWORD: root + MYSQL_USER: ci + MYSQL_PASSWORD: password + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + - 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-input-mysql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_INPUT_MYSQL_TEST_CONFIG: "${{ github.workspace }}/ci/mysql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: mysql8_3 + path: embulk-input-mysql/build/reports/tests/test + postgresql9_4: runs-on: ubuntu-latest services: postgres: @@ -46,8 +105,44 @@ jobs: env: POSTGRES_PASSWORD: postgres steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + java-version: 8 + distribution: 'zulu' + - 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-input-postgresql:check + env: + _JAVA_OPTIONS: "-Xmx2048m -Xms512m" + EMBULK_INPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: postgresql9_4 + path: embulk-input-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 + services: + postgres: + image: postgres:13 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + ports: + - "5432:5432" + env: + POSTGRES_PASSWORD: postgres + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: 8 distribution: 'zulu' @@ -55,6 +150,10 @@ jobs: 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: @@ -64,10 +163,10 @@ jobs: env: _JAVA_OPTIONS: "-Xmx2048m -Xms512m" EMBULK_INPUT_POSTGRESQL_TEST_CONFIG: "${{ github.workspace }}/ci/postgresql.yml" - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: - name: postgresql + name: postgresql13 path: embulk-input-postgresql/build/reports/tests/test redshift: runs-on: ubuntu-latest @@ -81,8 +180,8 @@ jobs: env: POSTGRES_PASSWORD: postgres steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: 8 distribution: 'zulu' @@ -99,7 +198,7 @@ jobs: env: _JAVA_OPTIONS: "-Xmx2048m -Xms512m" EMBULK_INPUT_REDSHIFT_TEST_CONFIG: "${{ github.workspace }}/ci/redshift.yml" - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: name: redshift @@ -118,8 +217,8 @@ jobs: ACCEPT_EULA: Y SA_PASSWORD: "P@ssw0rd" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: java-version: 8 distribution: 'zulu' @@ -146,7 +245,7 @@ jobs: _JAVA_OPTIONS: "-Xmx2048m -Xms512m" EMBULK_INPUT_SQLSERVER_TEST_CONFIG: "${{ github.workspace }}/ci/sqlserver.yml" EMBULK_INPUT_SQLSERVER_TEST_SQLCMD_COMMAND: "docker exec mssqlcontainer /opt/mssql-tools/bin/sqlcmd" - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: name: sqlserver