From 89d0e6c5704d861a83c5fc50dabdc5714c50b822 Mon Sep 17 00:00:00 2001 From: Ko Nagase Date: Sat, 15 Jun 2024 19:07:01 +0900 Subject: [PATCH] Support CI test in ubuntu/macos --- .github/workflows/test-macos.yml | 60 ++++++++++++++++++++++++++ .github/workflows/test-ubuntu.yml | 71 +++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 .github/workflows/test-macos.yml create mode 100644 .github/workflows/test-ubuntu.yml diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml new file mode 100644 index 0000000..43bce32 --- /dev/null +++ b/.github/workflows/test-macos.yml @@ -0,0 +1,60 @@ +name: Test macOS + +on: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop + workflow_dispatch: + +jobs: + test-macos: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [macos-latest] + + steps: + - name: Checkout pgGeocoder + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + brew install postgresql postgis + + - name: Install pgTAP + run: | + git clone https://github.com/theory/pgtap.git pgTapExtension + cd pgTapExtension + make -j + make install + cpan TAP::Parser::SourceHandler::pgTAP + ln -s $(find `brew --prefix` -name pg_prove) symlink it into $(brew --prefix)/bin + + - name: Start PostgreSQL + run: | + pg_ctl -D $(brew --prefix)/var/postgresql@14 start + createuser -s postgres + + - name: Wait PostgreSQL launch + run: | + pg_isready -U postgres -h localhost -p 5432 + psql -U postgres -h localhost -p 5432 -c "SELECT version();" + + - name: Set up database + run: | + cp .env.example .env + cp tests/.env.test tests/.env + bash tests/create_test_db_from_fixtures.sh + + - name: Run test + run: | + cd tests/normalize-japanese-addresses + pg_prove -U postgres -h localhost -p 5432 -d addresses_test addresses.test.sql + pg_prove -U postgres -h localhost -p 5432 -d addresses_test main.test.sql diff --git a/.github/workflows/test-ubuntu.yml b/.github/workflows/test-ubuntu.yml new file mode 100644 index 0000000..fbfefa9 --- /dev/null +++ b/.github/workflows/test-ubuntu.yml @@ -0,0 +1,71 @@ +name: Test Ubuntu + +on: + push: + branches: + - master + - develop + pull_request: + branches: + - master + - develop + workflow_dispatch: + +jobs: + test-ubuntu: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-24.04, ubuntu-22.04] + + steps: + - name: Checkout pgGeocoder + uses: actions/checkout@v4 + + - name: Set PostgreSQL/PostGIS major version + run: | + pg_major=$(psql --version | grep -Po '(?<=psql \(PostgreSQL\) )[^;]+(?=\.\d+ \()') + echo "PG_MAJOR=${pg_major}" >> $GITHUB_ENV + echo "POSTGIS_MAJOR=3" >> $GITHUB_ENV + + - name: Add PostgreSQL APT repository + run: | + sudo apt-get install curl ca-certificates gnupg + curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ \ + $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libtap-parser-sourcehandler-pgtap-perl \ + postgresql-${PG_MAJOR} \ + postgresql-${PG_MAJOR}-pgtap \ + postgresql-${PG_MAJOR}-postgis-${POSTGIS_MAJOR} \ + postgresql-${PG_MAJOR}-postgis-${POSTGIS_MAJOR}-scripts + + - name: Start PostgreSQL (with trust authentication) + run: | + sudo sed -i "s/\(peer\|scram-sha-256\)$/trust/g" "/etc/postgresql/${PG_MAJOR}/main/pg_hba.conf" + sudo cat "/etc/postgresql/${PG_MAJOR}/main/pg_hba.conf" + sudo systemctl start postgresql.service + + - name: Wait PostgreSQL launch + run: | + pg_isready -U postgres -h localhost -p 5432 + psql -U postgres -h localhost -p 5432 -c "SELECT version();" + + - name: Set up database + run: | + cp .env.example .env + cp tests/.env.test tests/.env + bash tests/create_test_db_from_fixtures.sh + + - name: Run test + run: | + cd tests/normalize-japanese-addresses + pg_prove -U postgres -h localhost -p 5432 -d addresses_test addresses.test.sql + pg_prove -U postgres -h localhost -p 5432 -d addresses_test main.test.sql