From 59df46f89beabc73809c8544d48ba175603119c4 Mon Sep 17 00:00:00 2001 From: Yuri Astrakhan Date: Mon, 2 Oct 2023 00:06:02 -0400 Subject: [PATCH] test --- .github/workflows/audit-check.yml | 14 - .github/workflows/bench.yml | 29 -- .github/workflows/build-deploy-docs.yml | 30 -- .github/workflows/ci.yml | 588 ------------------------ .github/workflows/dependabot.yml | 27 -- .github/workflows/grcov.yml | 80 ---- .github/workflows/homebrew.yml | 21 + Cargo.lock | 60 +-- 8 files changed, 51 insertions(+), 798 deletions(-) delete mode 100644 .github/workflows/audit-check.yml delete mode 100644 .github/workflows/bench.yml delete mode 100644 .github/workflows/build-deploy-docs.yml delete mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/dependabot.yml delete mode 100644 .github/workflows/grcov.yml create mode 100644 .github/workflows/homebrew.yml diff --git a/.github/workflows/audit-check.yml b/.github/workflows/audit-check.yml deleted file mode 100644 index 5c98fae41..000000000 --- a/.github/workflows/audit-check.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Security audit - -on: - schedule: - - cron: "0 0 * * *" - -jobs: - audit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions-rs/audit-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index 5cbec58c4..000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Benchmark - -on: -# pull_request: -# types: [ opened, synchronize, reopened ] -# paths-ignore: -# - '**.md' -# - 'demo/**' -# - 'docs/**' -# - 'homebrew-formula/**' -# push: -# branches: [ main ] -# paths-ignore: -# - '**.md' -# - 'demo/**' -# - 'docs/**' -# - 'homebrew-formula/**' - workflow_dispatch: - -jobs: - check_benchmark: - runs-on: ubuntu-latest - - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Check benchmark - run: cargo bench diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml deleted file mode 100644 index c932c99f0..000000000 --- a/.github/workflows/build-deploy-docs.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Documentation - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build-docs: - name: Build Docs - runs-on: ubuntu-latest - concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - steps: - - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - - name: Setup mdBook - uses: peaceiris/actions-mdbook@v1 - with: - mdbook-version: 'latest' - - - run: mdbook build docs - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - if: ${{ github.ref == 'refs/heads/main' }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./target/book diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index a67acba26..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,588 +0,0 @@ -name: CI - -on: - push: - branches: [ main ] - paths-ignore: - - '**.md' - - 'demo/**' - - 'docs/**' - - 'HomebrewFormula/**' - pull_request: - branches: [ main ] - paths-ignore: - - '**.md' - - 'demo/**' - - 'docs/**' - - 'HomebrewFormula/**' - release: - types: [ published ] - workflow_dispatch: - -defaults: - run: - shell: bash - -jobs: - lint-debug-test: - name: Lint and Unit test - runs-on: ubuntu-latest - env: - PGDATABASE: test - PGHOST: localhost - PGUSER: postgres - PGPASSWORD: postgres - services: - postgres: - image: postgis/postgis:16-3.4 - ports: - # will assign a random free host port - - 5432/tcp - # Sadly there is currently no way to pass arguments to the service image other than this hack - # See also https://stackoverflow.com/a/62720566/177275 - options: >- - -e POSTGRES_DB=test - -e POSTGRES_USER=postgres - -e POSTGRES_PASSWORD=postgres - -e PGDATABASE=test - -e PGUSER=postgres - -e PGPASSWORD=postgres - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - --entrypoint sh - postgis/postgis:16-3.4 - -c "exec docker-entrypoint.sh postgres -c ssl=on -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key" - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Rust Versions - run: rustc --version && cargo --version - - uses: Swatinem/rust-cache@v2 - if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - - run: cargo fmt --all -- --check - - run: cargo clippy --package martin-tile-utils -- -D warnings - - run: cargo clippy --package martin-mbtiles --no-default-features -- -D warnings - - run: cargo clippy --package martin-mbtiles -- -D warnings - - run: cargo clippy --package martin -- -D warnings - - run: cargo clippy --package martin --features bless-tests -- -D warnings - - run: cargo doc --no-deps --workspace - env: - RUSTDOCFLAGS: "-D warnings" - - name: Init database - run: tests/fixtures/initdb.sh - env: - PGPORT: ${{ job.services.postgres.ports[5432] }} - - name: Run cargo test - run: | - set -x - cargo test --package martin-tile-utils - cargo test --package martin-mbtiles --no-default-features - cargo test --package martin-mbtiles - cargo test --package martin - cargo test --doc - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=require - - docker-build-test: - name: Build and test docker images - runs-on: ubuntu-latest - env: - # PG_* variables are used by psql - PGDATABASE: test - PGHOST: localhost - PGUSER: postgres - PGPASSWORD: postgres - TARGETS: "aarch64-unknown-linux-musl x86_64-unknown-linux-musl" - # TODO: aarch64-unknown-linux-gnu - services: - postgres: - image: postgis/postgis:15-3.3 - ports: - - 5432/tcp - options: >- - -e POSTGRES_DB=test - -e POSTGRES_USER=postgres - -e POSTGRES_PASSWORD=postgres - -e PGDATABASE=test - -e PGUSER=postgres - -e PGPASSWORD=postgres - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - --entrypoint sh - postgis/postgis:15-3.3 - -c "exec docker-entrypoint.sh postgres -c ssl=on -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key" - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - - name: Install cross - run: | - cargo install cross - # Install latest cross version from git (disabled as it is probably less stable) - # cargo install cross --git https://github.com/cross-rs/cross - cross --version - - name: Init database - run: tests/fixtures/initdb.sh - env: - PGPORT: ${{ job.services.postgres.ports[5432] }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - # https://github.com/docker/setup-qemu-action - with: - platforms: linux/amd64,linux/arm64 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - # https://github.com/docker/setup-buildx-action - with: - install: true - platforms: linux/amd64,linux/arm64 - - - name: Build targets - run: | - for target in $TARGETS; do - echo -e "\n----------------------------------------------" - echo "Building $target" - - export "CARGO_TARGET_$(echo $target | tr 'a-z-' 'A-Z_')_RUSTFLAGS"='-C strip=debuginfo' - cross build --release --target $target --package martin-mbtiles - cross build --release --target $target --package martin - - mkdir -p target_releases/$target - mv target/$target/release/mbtiles target_releases/$target - mv target/$target/release/martin target_releases/$target - done - - - name: Save build artifacts to build-${{ matrix.target }} - uses: actions/upload-artifact@v3 - with: - name: cross-build - path: target_releases/* - - name: Reorganize artifacts for docker build - run: | - mkdir -p target_releases/linux/arm64 - mv target_releases/aarch64-unknown-linux-musl/* target_releases/linux/arm64/ - mkdir -p target_releases/linux/amd64 - mv target_releases/x86_64-unknown-linux-musl/* target_releases/linux/amd64/ - - - name: Build linux/arm64 Docker image - uses: docker/build-push-action@v5 - # https://github.com/docker/build-push-action - with: - context: . - file: multi-platform.Dockerfile - load: true - tags: ${{ github.repository }}:linux-arm64 - platforms: linux/arm64 - - name: Test linux/arm64 Docker image - run: | - PLATFORM=linux/arm64 - TAG=${{ github.repository }}:linux-arm64 - export MBTILES_BUILD=- - export MBTILES_BIN="docker run --rm --net host --platform $PLATFORM -e DATABASE_URL -v $PWD/tests:/tests --entrypoint /usr/local/bin/mbtiles $TAG" - export MARTIN_BUILD=- - export MARTIN_BIN="docker run --rm --net host --platform $PLATFORM -e DATABASE_URL -v $PWD/tests:/tests $TAG" - tests/test.sh - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=require - - - name: Build linux/amd64 Docker image - uses: docker/build-push-action@v5 - # https://github.com/docker/build-push-action - with: - context: . - file: multi-platform.Dockerfile - load: true - tags: ${{ github.repository }}:linux-amd64 - platforms: linux/amd64 - - name: Test linux/amd64 Docker image - run: | - PLATFORM=linux/amd64 - TAG=${{ github.repository }}:linux-amd64 - export MBTILES_BUILD=- - export MBTILES_BIN="docker run --rm --net host --platform $PLATFORM -e DATABASE_URL -v $PWD/tests:/tests --entrypoint /usr/local/bin/mbtiles $TAG" - export MARTIN_BUILD=- - export MARTIN_BIN="docker run --rm --net host --platform $PLATFORM -e DATABASE_URL -v $PWD/tests:/tests $TAG" - tests/test.sh - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=require - - - name: Login to GitHub Docker registry - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - # https://github.com/docker/login-action - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Docker meta - id: docker_meta - uses: docker/metadata-action@v5 - # https://github.com/docker/metadata-action - with: - images: ghcr.io/${{ github.repository }} - - name: Push the Docker image - if: github.event_name != 'pull_request' - uses: docker/build-push-action@v5 - with: - context: . - file: multi-platform.Dockerfile - push: true - tags: ${{ steps.docker_meta.outputs.tags }} - labels: ${{ steps.docker_meta.outputs.labels }} - platforms: linux/amd64,linux/arm64 - - build: - name: Build ${{ matrix.target }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - include: - - target: aarch64-apple-darwin - os: macOS-latest - cross: 'true' - - target: debian-x86_64 - os: ubuntu-latest - cross: 'true' - - target: x86_64-apple-darwin - os: macOS-latest - - target: x86_64-pc-windows-msvc - os: windows-latest - ext: '.exe' - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Rust Versions - run: rustc --version && cargo --version - - uses: Swatinem/rust-cache@v2 - if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - - name: Build (.deb) - if: matrix.target == 'debian-x86_64' - run: | - set -x - sudo apt-get install -y dpkg dpkg-dev liblzma-dev - cargo install cargo-deb - cargo deb -v -p martin --output target/debian/debian-x86_64.deb - mkdir -p target_releases - mv target/debian/debian-x86_64.deb target_releases/ - - name: Build - if: matrix.target != 'debian-x86_64' - run: | - set -x - rustup target add "${{ matrix.target }}" - export RUSTFLAGS='-C strip=debuginfo' - cargo build --release --target ${{ matrix.target }} --package martin-mbtiles - cargo build --release --target ${{ matrix.target }} --package martin - mkdir -p target_releases - mv target/${{ matrix.target }}/release/mbtiles${{ matrix.ext }} target_releases/ - mv target/${{ matrix.target }}/release/martin${{ matrix.ext }} target_releases/ - - name: Save build artifacts to build-${{ matrix.target }} - uses: actions/upload-artifact@v3 - with: - name: build-${{ matrix.target }} - path: target_releases/* - - test-multi-os: - name: Test on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - needs: [ build ] - strategy: - fail-fast: true - matrix: - include: - - target: x86_64-apple-darwin - os: macOS-latest - - target: x86_64-pc-windows-msvc - os: windows-latest - ext: '.exe' - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - - name: Start postgres - uses: nyurik/action-setup-postgis@v1 - id: pg - with: - username: test - password: test - database: test - rights: --superuser - - name: Init database - run: | - echo "DATABASE_URL=$DATABASE_URL" - echo "Print the same in base64 to bypass Github's obfuscation (uses hardcoded password):" - echo "$DATABASE_URL" | base64 - tests/fixtures/initdb.sh - env: - DATABASE_URL: ${{ steps.pg.outputs.connection-uri }} - - name: Download build artifact build-${{ matrix.target }} - uses: actions/download-artifact@v3 - with: - name: build-${{ matrix.target }} - path: target/ - - name: Integration Tests - run: | - export MARTIN_BUILD=- - export MARTIN_BIN=target/martin${{ matrix.ext }} - export MBTILES_BUILD=- - export MBTILES_BIN=target/mbtiles${{ matrix.ext }} - if [[ "${{ runner.os }}" != "Windows" ]]; then - chmod +x "$MARTIN_BIN" "$MBTILES_BIN" - fi - tests/test.sh - env: - DATABASE_URL: ${{ steps.pg.outputs.connection-uri }} - - name: Compare test output results (Linux) - if: matrix.target == 'x86_64-unknown-linux-gnu' - run: diff --brief --recursive --new-file tests/output tests/expected - - name: Download Debian package (Linux) - if: matrix.target == 'x86_64-unknown-linux-gnu' - uses: actions/download-artifact@v3 - with: - name: build-debian-x86_64 - path: target/ - - name: Tests Debian package (Linux) - if: matrix.target == 'x86_64-unknown-linux-gnu' - run: | - sudo dpkg -i target/debian-x86_64.deb - export MARTIN_BUILD=- - export MARTIN_BIN=/usr/bin/martin${{ matrix.ext }} - export MBTILES_BUILD=- - export MBTILES_BIN=/usr/bin/mbtiles${{ matrix.ext }} - tests/test.sh - env: - DATABASE_URL: ${{ steps.pg.outputs.connection-uri }} - - name: Save test output on failure (Linux) - if: failure() && matrix.target == 'x86_64-unknown-linux-gnu' - uses: actions/upload-artifact@v3 - with: - name: failed-test-output - path: tests/output/* - retention-days: 5 - - test-with-svc: - name: Test postgis:${{ matrix.img_ver }} sslmode=${{ matrix.sslmode }} - runs-on: ubuntu-latest - needs: [ build ] - strategy: - fail-fast: true - matrix: - include: - # These must match the versions of postgres used in the docker-compose.yml - - img_ver: 11-3.0-alpine - args: postgres - sslmode: disable - - img_ver: 14-3.3-alpine - args: postgres - sslmode: disable - # alpine images don't support SSL, so for this we use the debian images - - img_ver: 15-3.3 - args: postgres -c ssl=on -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key - sslmode: require - # - # FIXME! - # DISABLED because Rustls fails to validate name (CN?) with the NotValidForName error - #- img_ver: 15-3.3 - # args: postgres -c ssl=on -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key - # sslmode: verify-ca - #- img_ver: 15-3.3 - # args: postgres -c ssl=on -c ssl_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -c ssl_key_file=/etc/ssl/private/ssl-cert-snakeoil.key - # sslmode: verify-full - env: - PGDATABASE: test - PGHOST: localhost - PGUSER: postgres - PGPASSWORD: postgres - services: - postgres: - image: postgis/postgis:${{ matrix.img_ver }} - ports: - - 5432/tcp - options: >- - -e POSTGRES_DB=test - -e POSTGRES_USER=postgres - -e POSTGRES_PASSWORD=postgres - -e PGDATABASE=test - -e PGUSER=postgres - -e PGPASSWORD=postgres - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - --entrypoint sh - postgis/postgis:${{ matrix.img_ver }} - -c "exec docker-entrypoint.sh ${{ matrix.args }}" - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - - name: Init database - run: tests/fixtures/initdb.sh - env: - PGPORT: ${{ job.services.postgres.ports[5432] }} - - name: Get DB SSL cert (sslmode=verify-*) - if: matrix.sslmode == 'verify-ca' || matrix.sslmode == 'verify-full' - run: | - set -x - mkdir -p target/certs - docker cp ${{ job.services.postgres.id }}:/etc/ssl/certs/ssl-cert-snakeoil.pem target/certs/server.crt - docker cp ${{ job.services.postgres.id }}:/etc/ssl/private/ssl-cert-snakeoil.key target/certs/server.key - - name: Download build artifact build-x86_64-unknown-linux-gnu - uses: actions/download-artifact@v3 - with: - name: build-x86_64-unknown-linux-gnu - path: target_releases/ - - name: Integration Tests - run: | - if [[ "${{ matrix.sslmode }}" == "verify-ca" || "${{ matrix.sslmode }}" == "verify-full" ]]; then - export PGSSLROOTCERT=target/certs/server.crt - fi - export MARTIN_BUILD=- - export MARTIN_BIN=target_releases/martin - export MBTILES_BUILD=- - export MBTILES_BIN=target_releases/mbtiles - chmod +x "$MARTIN_BIN" "$MBTILES_BIN" - tests/test.sh - rm -rf target_releases - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=${{ matrix.sslmode }} - - name: Download Debian package - uses: actions/download-artifact@v3 - with: - name: build-debian-x86_64 - path: target_releases/ - - name: Tests Debian package - run: | - sudo dpkg -i target_releases/debian-x86_64.deb - if [[ "${{ matrix.sslmode }}" == "verify-ca" || "${{ matrix.sslmode }}" == "verify-full" ]]; then - export PGSSLROOTCERT=target/certs/server.crt - fi - export MARTIN_BUILD=- - export MARTIN_BIN=/usr/bin/martin - export MBTILES_BUILD=- - export MBTILES_BIN=/usr/bin/mbtiles - tests/test.sh - sudo dpkg -P martin - rm -rf target_releases - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=${{ matrix.sslmode }} - - name: Unit Tests - if: matrix.sslmode != 'verify-ca' && matrix.sslmode != 'verify-full' - run: | - echo "Running unit tests, connecting to DATABASE_URL=$DATABASE_URL" - echo "Same but as base64 to prevent GitHub obfuscation (this is not a secret):" - echo "$DATABASE_URL" | base64 - set -x - cargo test --package martin - cargo clean - env: - DATABASE_URL: postgres://${{ env.PGUSER }}:${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }}?sslmode=${{ matrix.sslmode }} - - name: On error, save test output - if: failure() - uses: actions/upload-artifact@v3 - with: - name: test-output - path: tests/output/* - retention-days: 5 - - package: - name: Package ${{ matrix.target }} - runs-on: ${{ matrix.os }} - needs: [ lint-debug-test, docker-build-test, test-multi-os, test-with-svc ] - strategy: - fail-fast: true - matrix: - include: - - target: aarch64-apple-darwin - os: ubuntu-latest - name: martin-Darwin-aarch64.tar.gz - sha: 'true' - - target: debian-x86_64 - os: ubuntu-latest - name: martin-Debian-x86_64.deb - - target: x86_64-apple-darwin - os: macOS-latest - name: martin-Darwin-x86_64.tar.gz - sha: 'true' - - target: x86_64-pc-windows-msvc - os: windows-latest - name: martin-Windows-x86_64.zip - ext: '.exe' - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - name: martin-Linux-x86_64.tar.gz - # - # From the cross-build - # - - target: aarch64-unknown-linux-musl - os: ubuntu-latest - cross: 'true' - name: martin-Linux-aarch64-musl.tar.gz - - target: x86_64-unknown-linux-musl - os: ubuntu-latest - cross: 'true' - name: martin-Linux-x86_64-musl.tar.gz - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - name: Download build artifact build-${{ matrix.target }} - if: matrix.cross != 'true' - uses: actions/download-artifact@v3 - with: - name: build-${{ matrix.target }} - path: target/ - - name: Download cross-build artifact build-${{ matrix.target }} - if: matrix.cross == 'true' - uses: actions/download-artifact@v3 - with: - name: cross-build - path: target/ - - name: Package - run: | - cd target/ - if [[ "${{ runner.os }}" == "Windows" ]]; then - 7z a ../${{ matrix.name }} martin${{ matrix.ext }} mbtiles${{ matrix.ext }} - elif [[ "${{ matrix.target }}" == "debian-x86_64" ]]; then - mv debian-x86_64.deb ../${{ matrix.name }} - else - if [[ "${{ matrix.cross }}" == "true" ]]; then - mv ${{ matrix.target }}/* . - fi - tar czvf ../${{ matrix.name }} martin${{ matrix.ext }} mbtiles${{ matrix.ext }} - fi - # TODO: why is this needed and where should the result go? - # - name: Generate SHA-256 (MacOS) - # if: matrix.sha == 'true' - # run: shasum -a 256 ${{ matrix.name }} - - name: Publish - if: startsWith(github.ref, 'refs/tags/') - uses: softprops/action-gh-release@v1 - with: - draft: true - files: 'martin*' - body_path: CHANGELOG.md - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - # This final step is needed to mark the whole workflow as successful - # Don't change its name - it is used by the merge protection rules - done: - name: CI Finished - runs-on: ubuntu-latest - needs: [ package ] - steps: - - name: Finished - run: echo "CI finished successfully" diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml deleted file mode 100644 index 4e7dfc47f..000000000 --- a/.github/workflows/dependabot.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Dependabot auto-merge -on: pull_request - -permissions: write-all - -jobs: - dependabot: - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - steps: - - name: Dependabot metadata - id: metadata - uses: dependabot/fetch-metadata@v1.6.0 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - - name: Approve Dependabot PRs - if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}} - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - name: Enable auto-merge for Dependabot PRs - if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}} - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/grcov.yml b/.github/workflows/grcov.yml deleted file mode 100644 index 4d7f22b44..000000000 --- a/.github/workflows/grcov.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Code coverage - -on: - push: - branches: [ main ] - paths-ignore: - - '**.md' - - 'demo/**' - - 'docs/**' - - 'HomebrewFormula/**' - pull_request: - branches: [ main ] - paths-ignore: - - '**.md' - - 'demo/**' - - 'docs/**' - - 'HomebrewFormula/**' - workflow_dispatch: - -jobs: - grcov: - runs-on: ubuntu-latest - env: - # PG_* variables are used by psql - PGDATABASE: test - PGHOST: localhost - PGUSER: postgres - services: - postgres: - image: postgis/postgis:14-3.3-alpine - env: - # POSTGRES_* variables are used by the postgis/postgres image - POSTGRES_DB: ${{ env.PGDATABASE }} - POSTGRES_USER: ${{ env.PGUSER }} - POSTGRES_HOST_AUTH_METHOD: trust - ports: - # will assign a random free host port - - 5432/tcp - # needed because the postgres container does not provide a healthcheck - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - - name: Setup database - run: | - sudo apt-get install postgresql-client - tests/fixtures/initdb.sh - env: - PGPORT: ${{ job.services.postgres.ports[5432] }} - - - name: Install nightly toolchain - uses: dtolnay/rust-toolchain@master - with: - toolchain: nightly - override: true - - - name: Run tests - run: cargo test - env: - CARGO_INCREMENTAL: '0' - RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' - RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' - DATABASE_URL: postgres://${{ env.PGUSER }}@${{ env.PGHOST }}:${{ job.services.postgres.ports[5432] }}/${{ env.PGDATABASE }} - - - name: Gather coverage data - id: coverage - uses: actions-rs/grcov@v0.1 - - - name: Codecov upload - uses: codecov/codecov-action@v3 - with: - file: ${{ steps.coverage.outputs.report }} - - - name: Check conditional cfg values - run: | - cargo +nightly check -Z unstable-options -Z check-cfg=features,names,values,output --workspace - env: - RUSTFLAGS: '-D warnings' diff --git a/.github/workflows/homebrew.yml b/.github/workflows/homebrew.yml new file mode 100644 index 000000000..bf01a900c --- /dev/null +++ b/.github/workflows/homebrew.yml @@ -0,0 +1,21 @@ +name: Homebrew + +on: [pull_request] + +jobs: + test: + runs-on: macos-latest + + steps: + - run: brew version +# - name: Checkout code +# uses: actions/checkout@v2 +# +# - name: Set up Homebrew +# run: | +# brew update +# brew install --build-bottle formula # Replace 'formula' with the name of your formula +# +# - name: Test Formula Installation +# run: | +# brew install --verbose formula # Replace 'formula' with the name of your formula diff --git a/Cargo.lock b/Cargo.lock index b96fb4d0d..cd358dae1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -105,7 +105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -219,7 +219,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -230,7 +230,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -401,7 +401,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -412,7 +412,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -538,9 +538,9 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.5.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -643,7 +643,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -850,7 +850,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37e366bff8cd32dd8754b0991fb66b279dc48f598c3a18914852a6673deef583" dependencies = [ "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -979,7 +979,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -1257,7 +1257,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -1655,9 +1655,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.149" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libdeflate-sys" @@ -1679,9 +1679,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libsqlite3-sys" @@ -2063,7 +2063,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -2305,9 +2305,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.68" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -2530,9 +2530,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.17" +version = "0.38.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7" +checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" dependencies = [ "bitflags 2.4.0", "errno", @@ -2686,7 +2686,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3140,7 +3140,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3151,7 +3151,7 @@ checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3195,9 +3195,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2", "quote", @@ -3255,7 +3255,7 @@ checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3385,7 +3385,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3484,7 +3484,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", ] [[package]] @@ -3749,7 +3749,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -3771,7 +3771,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ]