diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 6f01cf669b..0000000000 --- a/.cirrus.yml +++ /dev/null @@ -1,15 +0,0 @@ -freebsd_instance: - image_family: freebsd-14-0 - -build_task: - name: Build FreeBSD (Stack) - install_script: pkg install -y postgresql13-client hs-stack git - - stack_cache: - folders: /.stack - fingerprint_script: cat postgrest.cabal stack.yaml.lock - reupload_on_changes: false - - build_script: stack build -j 1 --local-bin-path . --copy-bins - bin_artifacts: - path: postgrest diff --git a/.github/actions/setup-nix/action.yaml b/.github/actions/setup-nix/action.yaml deleted file mode 100644 index f92ef0ae7f..0000000000 --- a/.github/actions/setup-nix/action.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Setup Nix - -description: Installs nix, sets up cachix and installs a subset of tooling. - -inputs: - authToken: - description: Token to pass to cachix - tools: - description: Tools to install with nix-env -iA - -runs: - using: composite - steps: - - uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26 - with: - install_url: https://releases.nixos.org/nix/nix-2.13.3/install - - uses: cachix/cachix-action@18cf96c7c98e048e10a83abd92116114cd8504be # v14 - with: - name: postgrest - authToken: ${{ inputs.authToken }} - - if: ${{ inputs.tools }} - run: nix-env -f default.nix -iA ${{ inputs.tools }} - shell: bash diff --git a/.github/codecov.yml b/.github/codecov.yml deleted file mode 100644 index 7b3c63b6f0..0000000000 --- a/.github/codecov.yml +++ /dev/null @@ -1,18 +0,0 @@ -codecov: - branch: main - require_ci_to_pass: false - -comment: false - -coverage: - status: - project: - default: - target: auto - threshold: 1% - only_pulls: false - patch: - default: - target: auto - threshold: 1% - only_pulls: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index e2347a8c76..0000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: -- package-ecosystem: github-actions - directory: / - schedule: - interval: weekly diff --git a/.github/get_cirrusci_freebsd b/.github/get_cirrusci_freebsd deleted file mode 100755 index 3be8370115..0000000000 --- a/.github/get_cirrusci_freebsd +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Get the FreeBSD PostgREST executable built by CirrusCI for the given GITHUB_COMMIT in GITHUB_REPOSITORY - -# We use the GitHub API for 'check suites' to find the corresponding CirrusCI job, see: -# https://docs.github.com/en/rest/reference/checks#list-check-suites-for-a-git-reference - -cirrus_artifact_name=bin -gh_auth_header="Authorization: Bearer $GITHUB_TOKEN" -gh_accept_header="Accept: application/vnd.github.v3+json" - -get_gh_check_runs_url() { - gh_checks_list_url="https://api.github.com/repos/$GITHUB_REPOSITORY/commits/$GITHUB_COMMIT/check-suites" - >&2 echo "Getting list of check-suites from $gh_checks_list_url ..." - curl -s --fail -H "$gh_auth_header" -H "$gh_accept_header" "$gh_checks_list_url" \ - | jq -r '.check_suites[] | select(.app.slug == "cirrus-ci") | .check_runs_url' -} - -wait_for_cirrusci() { - >&2 echo "Waiting to CirrusCI run to complete (two hours maximum)..." - for _ in $(seq 1 120); do - gh_check_runs_url="$(get_gh_check_runs_url)" - if [ -z "$gh_check_runs_url" ]; then - echo "CirrusCI task has not started, yet. Waiting..." - else - echo "Checking for CirrusCI task status at $gh_check_runs_url ..." - status=$(curl -s --fail -H "$gh_auth_header" "$gh_check_runs_url" | jq -r '.check_runs[] | .status') - if [ "$status" == "completed" ]; then - break - else - echo "CirrusCI task is still $status, waiting..." - fi - fi - sleep 60 - done -} - -# The CirrusCI taskid can change if a new check run is started for the same commit, -# e.g. when pushing both a branch and tag. We make sure that we have the very -# latest taskid by re-loading the 'gh_check_runs_url' and the 'check run' itself. -get_cirrus_taskid() { - gh_check_runs_url="$(get_gh_check_runs_url)" - >&2 echo "Getting the CirrusCI task id from $gh_check_runs_url ..." - curl --fail -H "$gh_auth_header" -H "$gh_accept_header" "$gh_check_runs_url" \ - | jq -r '.check_runs[] | .external_id' -} - -download_artifact() { - cirrus_task_id="$(get_cirrus_taskid)" - cirrus_artifact_url="https://api.cirrus-ci.com/v1/artifact/task/$cirrus_task_id/$cirrus_artifact_name.zip" - >&2 echo "Attemping to download the CirrusCI artifact from $cirrus_artifact_url ..." - curl --fail "$cirrus_artifact_url" -o freebsd.zip -} - -wait_for_cirrusci -download_artifact - -echo "Unpacking executable..." -unzip freebsd.zip -d . -rm -rf freebsd.zip diff --git a/.github/release b/.github/release deleted file mode 100755 index 4c113b1dc1..0000000000 --- a/.github/release +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -# Tag a release that will be built with Github Actions. The version is -# read from 'postgrest.cabal'. - -version="$(grep -oP '^version:\s*\K.*' postgrest.cabal)" - -echo "Tagging version v$version" -git tag -f "v$version" - -echo "Pushing tag..." -git push -f origin "refs/tags/v$version" diff --git a/.github/scripts/arm/build.sh b/.github/scripts/arm/build.sh deleted file mode 100644 index a22da7a3be..0000000000 --- a/.github/scripts/arm/build.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -# This script builds PostgREST in a remote ARM server - -[ -z "$1" ] && { echo "Missing 1st argument: PostgREST github commit SHA"; exit 1; } -[ -z "$2" ] && { echo "Missing 2nd argument: Build environment directory name"; exit 1; } - -PGRST_GITHUB_COMMIT="$1" -SCRIPT_DIR="$2" - -DOCKER_BUILD_DIR="$SCRIPT_DIR/docker-env" - -install_packages() { - sudo apt-get update -y - sudo apt-get upgrade -y - sudo apt-get install -y git build-essential curl libffi-dev libffi7 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5 llvm libnuma-dev zlib1g-dev libpq-dev jq gcc - sudo apt-get clean -} - -install_ghcup() { - export BOOTSTRAP_HASKELL_NONINTERACTIVE=1 - export BOOTSTRAP_HASKELL_MINIMAL=1 - curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh - source ~/.ghcup/env -} - -install_cabal() { - ghcup upgrade - ghcup install cabal 3.6.0.0 - ghcup set cabal 3.6.0.0 -} - -install_ghc() { - ghcup install ghc 8.10.7 - ghcup set ghc 8.10.7 -} - -install_packages - -# Add ghcup to the PATH for this session -[ -f ~/.ghcup/env ] && source ~/.ghcup/env - -ghcup --version || install_ghcup -cabal --version || install_cabal -ghc --version || install_ghc - -cd ~/$SCRIPT_DIR - -# Clone the repository and build the project -git clone https://github.com/PostgREST/postgrest.git -cd postgrest -git checkout $PGRST_GITHUB_COMMIT -cabal v2-update && cabal v2-build - -# Copy the built binary to the Dockerfile directory -PGRST_BIN=$(cabal exec which postgrest | tail -1) -cp $PGRST_BIN ~/$DOCKER_BUILD_DIR - -# Move and compress the built binary -mkdir -p ~/$SCRIPT_DIR/result -mv $PGRST_BIN ~/$SCRIPT_DIR/result -cd ~/$SCRIPT_DIR -tar -cJf result.tar.xz result diff --git a/.github/scripts/arm/docker-env/Dockerfile b/.github/scripts/arm/docker-env/Dockerfile deleted file mode 100644 index 437deabb10..0000000000 --- a/.github/scripts/arm/docker-env/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -# PostgREST docker hub image - -FROM ubuntu:jammy@sha256:a6d2b38300ce017add71440577d5b0a90460d0e57fd7aec21dd0d1b0761bbfb2 AS postgrest - -RUN apt-get update -y \ - && apt install -y --no-install-recommends libpq-dev zlib1g-dev jq gcc libnuma-dev \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -COPY postgrest /usr/bin/postgrest - -EXPOSE 3000 - -USER 1000 - -CMD postgrest diff --git a/.github/scripts/arm/docker-publish.sh b/.github/scripts/arm/docker-publish.sh deleted file mode 100644 index d6ebeaf306..0000000000 --- a/.github/scripts/arm/docker-publish.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# This script publishes the Docker ARM images to Docker Hub. - -[ -z "$1" ] && { echo "Missing 1st argument: PostgREST github commit SHA"; exit 1; } -[ -z "$2" ] && { echo "Missing 2nd argument: Docker repo"; exit 1; } -[ -z "$3" ] && { echo "Missing 3rd argument: Docker username"; exit 1; } -[ -z "$4" ] && { echo "Missing 4th argument: Docker password"; exit 1; } -[ -z "$5" ] && { echo "Missing 5th argument: Build environment directory name"; exit 1; } -[ -z "$6" ] && { echo "Missing 6th argument: PostgREST version"; exit 1; } - -PGRST_GITHUB_COMMIT="$1" -DOCKER_REPO="$2" -DOCKER_USER="$3" -DOCKER_PASS="$4" -SCRIPT_DIR="$5" -PGRST_VERSION="v$6" -IS_PRERELEASE="$7" - -DOCKER_BUILD_DIR="$SCRIPT_DIR/docker-env" - -clean_env() -{ - sudo docker logout -} - -# Login to Docker -sudo docker logout -{ echo $DOCKER_PASS | sudo docker login -u $DOCKER_USER --password-stdin; } || { echo "Couldn't login to docker"; exit 1; } - -trap clean_env sigint sigterm exit - -# Move to the docker build environment -cd ~/$DOCKER_BUILD_DIR - -# Push final images to Docker hub -# NOTE: This command publishes a separate ARM image because the builds cannot -# be added to the manifest if they are not in the registry beforehand. -# This image must be manually deleted from Docker Hub at the end of the process. -sudo docker buildx build --build-arg PGRST_GITHUB_COMMIT=$PGRST_GITHUB_COMMIT \ - -t $DOCKER_REPO/postgrest:$PGRST_VERSION-arm \ - --push . - -# Add the arm images to the manifest -# NOTE: This assumes that there already is a `postgrest:` image -# for the amd64 architecture pushed to Docker Hub -sudo docker buildx imagetools create --append -t $DOCKER_REPO/postgrest:$PGRST_VERSION $DOCKER_REPO/postgrest:$PGRST_VERSION-arm -[ -z $IS_PRERELEASE ] && sudo docker buildx imagetools create --append -t $DOCKER_REPO/postgrest:latest $DOCKER_REPO/postgrest:$PGRST_VERSION-arm - -sudo docker logout diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 47f24ce1a4..0000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,503 +0,0 @@ -name: CI - -on: - push: - branches: - - main - - v[0-9]+ - tags: - - v* - pull_request: - branches: - - main - - v[0-9]+ - -jobs: - Lint-Style: - name: Lint & check code style - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: style - - name: Run linter (check locally with `nix-shell --run postgrest-lint`) - run: postgrest-lint - - name: Run style check (auto-format with `nix-shell --run postgrest-style`) - run: postgrest-style-check - - - Test-Nix: - name: Test (Nix) - runs-on: ubuntu-22.04 - defaults: - run: - # Hack for enabling color output, see: - # https://github.com/actions/runner/issues/241#issuecomment-842566950 - shell: script -qec "bash --noprofile --norc -eo pipefail {0}" - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: tests - - - name: Run coverage (IO tests and Spec tests against PostgreSQL 15) - run: postgrest-coverage - - name: Upload coverage to codecov - uses: codecov/codecov-action@5ecb98a3c6b747ed38dc09f787459979aebb39be # v4.3.1 - with: - files: ./coverage/codecov.json - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Run doctests - if: always() - run: nix-shell --run postgrest-test-doctests - - - name: Check the spec tests for idempotence - if: always() - run: postgrest-test-spec-idempotence - - - Test-Pg-Nix: - strategy: - fail-fast: false - matrix: - pgVersion: [9.6, 10, 11, 12, 13, 14, 15] - name: Test PG ${{ matrix.pgVersion }} (Nix) - runs-on: ubuntu-22.04 - defaults: - run: - # Hack for enabling color output, see: - # https://github.com/actions/runner/issues/241#issuecomment-842566950 - shell: script -qec "bash --noprofile --norc -eo pipefail {0}" - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: tests withTools - - - name: Run spec tests - if: always() - run: postgrest-with-postgresql-${{ matrix.pgVersion }} postgrest-test-spec - - - name: Run IO tests - if: always() - run: postgrest-with-postgresql-${{ matrix.pgVersion }} -f test/io/fixtures.sql postgrest-test-io - - - Test-Memory-Nix: - name: Test memory (Nix) - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: memory - - name: Run memory tests - run: postgrest-test-memory - - - Build-Static-Nix: - name: Build Linux static (Nix) - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - tools: tests - - - name: Build static executable - run: nix-build -A postgrestStatic - - name: Check static executable - run: postgrest-check-static result/bin/postgrest - - name: Save built executable as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: postgrest-linux-static-x64 - path: result/bin/postgrest - if-no-files-found: error - - - name: Build Docker image - run: nix-build -A docker.image --out-link postgrest-docker.tar.gz - - name: Save built Docker image as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: postgrest-docker-x64 - path: postgrest-docker.tar.gz - if-no-files-found: error - - - name: Build and push everything to Cachix (main branch only) - if: ${{ github.ref == 'refs/heads/main' }} - run: | - nix-build - nix-env -f default.nix -iA devTools - postgrest-push-cachix - - - Build-Stack: - strategy: - fail-fast: false - matrix: - include: - - name: Linux - runs-on: ubuntu-22.04 - cache: | - ~/.stack - .stack-work - artifact: postgrest-ubuntu-x64 - - - name: MacOS - runs-on: macos-12 - cache: | - ~/.stack - .stack-work - artifact: postgrest-macos-x64 - - - name: Windows - runs-on: windows-2022 - cache: | - ~\AppData\Roaming\stack - ~\AppData\Local\Programs\stack - .stack-work - deps: Add-Content $env:GITHUB_PATH $env:PGBIN - artifact: postgrest-windows-x64 - - name: Build ${{ matrix.name }} (Stack) - runs-on: ${{ matrix.runs-on }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Stack working files cache - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: ${{ matrix.cache }} - key: ${{ runner.os }}-${{ hashFiles('stack.yaml.lock') }} - - name: Install dependencies - if: ${{ matrix.deps }} - run: ${{ matrix.deps }} - - name: Build with Stack - run: stack build --local-bin-path result --copy-bins - - name: Save built executable as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: ${{ matrix.artifact }} - path: | - result/postgrest - result/postgrest.exe - if-no-files-found: error - - Get-FreeBSD-CirrusCI: - name: Get FreeBSD build from CirrusCI - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Get FreeBSD executable from CirrusCI - env: - # GITHUB_SHA does weird things for pull request, so we roll our own: - GITHUB_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: .github/get_cirrusci_freebsd - - name: Save executable as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: postgrest-freebsd-x64 - path: postgrest - if-no-files-found: error - - Build-Cabal: - strategy: - matrix: - ghc: ['8.10.7', '9.2.4'] - fail-fast: false - name: Build Linux (Cabal, GHC ${{ matrix.ghc }}) - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: ghcup - run: | - ghcup install ghc ${{ matrix.ghc }} - ghcup set ghc ${{ matrix.ghc }} - - name: Copy cabal.project - run: | - cp cabal.project.non-nix cabal.project - - name: Cache - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: ~/.cabal - key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }} - restore-keys: | - ${{ runner.os }}-${{ matrix.ghc }}- - - name: Install dependencies - run: | - cabal update - cabal build --only-dependencies --enable-tests --enable-benchmarks - - name: Build - run: cabal build --enable-tests --enable-benchmarks all - - Build-Cabal-Arm: - name: Build aarch64 (Cabal) - if: "${{ github.event_name == 'push' }}" - runs-on: ubuntu-22.04 - outputs: - remotepath: ${{ steps.Remote-Dir.outputs.remotepath }} - env: - GITHUB_COMMIT: ${{ github.sha }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - id: Remote-Dir - name: Unique directory name for the remote build - run: echo "remotepath=postgrest-build-$(uuidgen)" >> "$GITHUB_OUTPUT" - - name: Copy script files to the remote server - uses: appleboy/scp-action@master - with: - host: ${{ secrets.SSH_ARM_HOST }} - username: ubuntu - key: ${{ secrets.SSH_ARM_PRIVATE_KEY }} - fingerprint: ${{ secrets.SSH_ARM_FINGERPRINT }} - source: ".github/scripts/arm/*" - target: ${{ steps.Remote-Dir.outputs.remotepath }} - strip_components: 3 - - name: Build ARM - uses: appleboy/ssh-action@master - env: - REMOTE_DIR: ${{ steps.Remote-Dir.outputs.remotepath }} - with: - host: ${{ secrets.SSH_ARM_HOST }} - username: ubuntu - key: ${{ secrets.SSH_ARM_PRIVATE_KEY }} - fingerprint: ${{ secrets.SSH_ARM_FINGERPRINT }} - command_timeout: 120m - script_stop: true - envs: GITHUB_COMMIT,REMOTE_DIR - script: bash ~/$REMOTE_DIR/build.sh "$GITHUB_COMMIT" "$REMOTE_DIR" - - name: Download binaries from remote server - uses: nicklasfrahm/scp-action@main - with: - direction: download - host: ${{ secrets.SSH_ARM_HOST }} - username: ubuntu - key: ${{ secrets.SSH_ARM_PRIVATE_KEY }} - fingerprint: ${{ secrets.SSH_ARM_FINGERPRINT }} - source: "${{ steps.Remote-Dir.outputs.remotepath }}/result.tar.xz" - target: "result.tar.xz" - - name: Extract downloaded binaries - run: tar -xvf result.tar.xz && rm result.tar.xz - - name: Save aarch64 executable as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3.3.1 - with: - name: postgrest-ubuntu-aarch64 - path: result/postgrest - if-no-files-found: error - - - Prepare-Release: - name: Prepare release - if: startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-22.04 - needs: - - Lint-Style - - Test-Nix - - Test-Pg-Nix - - Test-Memory-Nix - - Build-Static-Nix - - Build-Stack - #- Get-FreeBSD-CirrusCI - - Build-Cabal-Arm - outputs: - version: ${{ steps.Identify-Version.outputs.version }} - isprerelease: ${{ steps.Identify-Version.outputs.isprerelease }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - id: Identify-Version - name: Identify the version to be released - run: | - tag_version="${GITHUB_REF##*/}" - cabal_version="$(grep -oP '^version:\s*\K.*' postgrest.cabal)" - - if [ "$tag_version" != "v$cabal_version" ]; then - echo "Tagged version ($tag_version) does not match the one in postgrest.cabal (v$cabal_version). Aborting release..." - exit 1 - else - echo "Version to be released is $cabal_version" - echo "version=$cabal_version" >> "$GITHUB_OUTPUT" - fi - - if [[ "$cabal_version" != *.*.*.* ]]; then - echo "Version is for a full release (version does not have four components)" - else - echo "Version is for a pre-release (version has four components, e.g., 1.1.1.1)" - echo "isprerelease=1" >> "$GITHUB_OUTPUT" - fi - - name: Identify changes from CHANGELOG.md - run: | - version="${{ steps.Identify-Version.outputs.version }}" - isprerelease="${{ steps.Identify-Version.outputs.isprerelease }}" - - if [ -n "$isprerelease" ]; then - echo "Getting unreleased changes..." - sed -n "1,/## Unreleased/d;/## \[/q;p" CHANGELOG.md > CHANGES.md - else - echo "Full release (no '-' in version), getting changes for version $version ..." - sed -n "1,/## \[$version\]/d;/## \[/q;p" CHANGELOG.md > CHANGES.md - fi - - echo "Relevant extract from CHANGELOG.md:" - cat CHANGES.md - - name: Save CHANGES.md as artifact - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: release-changes - path: CHANGES.md - if-no-files-found: error - - - Release-GitHub: - name: Release on GitHub - permissions: - contents: write - runs-on: ubuntu-22.04 - needs: Prepare-Release - env: - VERSION: ${{ needs.Prepare-Release.outputs.version }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Download all artifacts - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - path: artifacts - - name: Create release bundle with archives for all builds - run: | - find artifacts -type f -iname postgrest -exec chmod +x {} \; - - mkdir -p release-bundle - - tar cJvf "release-bundle/postgrest-v$VERSION-linux-static-x64.tar.xz" \ - -C artifacts/postgrest-linux-static-x64 postgrest - - # No need to release Ubuntu, as the static Linux binary built with Nix - # covers all Linux use-cases - #tar cfJv "release-bundle/postgrest-v$VERSION-ubuntu-x64.tar.xz" \ - # -C artifacts/postgrest-ubuntu-x64 postgrest - - tar cJvf "release-bundle/postgrest-v$VERSION-macos-x64.tar.xz" \ - -C artifacts/postgrest-macos-x64 postgrest - - tar cJvf "release-bundle/postgrest-v$VERSION-freebsd-x64.tar.xz" \ - -C artifacts/postgrest-freebsd-x64 postgrest - - tar cJvf "release-bundle/postgrest-v$VERSION-ubuntu-aarch64.tar.xz" \ - -C artifacts/postgrest-ubuntu-aarch64 postgrest - - zip "release-bundle/postgrest-v$VERSION-windows-x64.zip" \ - artifacts/postgrest-windows-x64/postgrest.exe - - - name: Save release bundle - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: release-bundle - path: release-bundle - if-no-files-found: error - - - name: Publish release on GitHub - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - isprerelease="${{ needs.Prepare-Release.outputs.isprerelease }}" - echo "Releasing version v$VERSION on GitHub (isprerelease=$isprerelease)..." - - gh release delete "v$VERSION" || true - gh release create "v$VERSION" \ - -F artifacts/release-changes/CHANGES.md \ - ${isprerelease:+"--prerelease"} \ - release-bundle/* - - - Release-Docker: - name: Release on Docker Hub - runs-on: ubuntu-22.04 - needs: - - Build-Cabal-Arm - - Prepare-Release - env: - GITHUB_COMMIT: ${{ github.sha }} - DOCKER_REPO: postgrest - DOCKER_USER: stevechavez - DOCKER_PASS: ${{ secrets.DOCKER_PASS }} - VERSION: ${{ needs.Prepare-Release.outputs.version }} - ISPRERELEASE: ${{ needs.Prepare-Release.outputs.isprerelease }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: release - - name: Download Docker image - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - name: postgrest-docker-x64 - - name: Publish images on Docker Hub - run: | - docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" - docker load -i postgrest-docker.tar.gz - - docker tag postgrest:latest "$DOCKER_REPO/postgrest:v$VERSION" - docker push "$DOCKER_REPO/postgrest:v$VERSION" - - # Only tag 'latest' for full releases - if [[ -z "$ISPRERELEASE" ]]; then - echo "Pushing to 'latest' tag for full release of v$VERSION ..." - docker tag postgrest:latest "$DOCKER_REPO"/postgrest:latest - docker push "$DOCKER_REPO"/postgrest:latest - else - echo "Skipping pushing to 'latest' tag for v$VERSION pre-release..." - fi - - name: Publish images for ARM builds on Docker Hub - uses: appleboy/ssh-action@master - env: - REMOTE_DIR: ${{ needs.Build-Cabal-Arm.outputs.remotepath }} - with: - host: ${{ secrets.SSH_ARM_HOST }} - username: ubuntu - key: ${{ secrets.SSH_ARM_PRIVATE_KEY }} - fingerprint: ${{ secrets.SSH_ARM_FINGERPRINT }} - script_stop: true - envs: GITHUB_COMMIT,DOCKER_REPO,DOCKER_USER,DOCKER_PASS,REMOTE_DIR,VERSION,ISPRERELEASE - script: bash ~/$REMOTE_DIR/docker-publish.sh "$GITHUB_COMMIT" "$DOCKER_REPO" "$DOCKER_USER" "$DOCKER_PASS" "$REMOTE_DIR" "$VERSION" "$ISPRERELEASE" -# TODO: Enable dockerhub description update again, once a solution for the permission problem is found: -# https://github.com/docker/hub-feedback/issues/1927 -# - name: Update descriptions on Docker Hub -# env: -# DOCKER_PASS: ${{ secrets.DOCKER_PASS }} -# run: | -# if [[ -z "$ISPRERELEASE" ]]; then -# echo "Updating description on Docker Hub..." -# postgrest-release-dockerhub-description -# else -# echo "Skipping updating description for pre-release..." -# fi - - Clean-Arm-Server: - name: Remove copied files from server - needs: - - Build-Cabal-Arm - - Release-Docker - if: ${{ always() && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/heads/rel-')) }} - runs-on: ubuntu-22.04 - env: - REMOTE_DIR: ${{ needs.Build-Cabal-Arm.outputs.remotepath }} - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - name: Remove uploaded files from server - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.SSH_ARM_HOST }} - username: ubuntu - key: ${{ secrets.SSH_ARM_PRIVATE_KEY }} - fingerprint: ${{ secrets.SSH_ARM_FINGERPRINT }} - envs: REMOTE_DIR - script: rm -rf $REMOTE_DIR diff --git a/.github/workflows/loadtest.yaml b/.github/workflows/loadtest.yaml deleted file mode 100644 index 0b5c8840be..0000000000 --- a/.github/workflows/loadtest.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: Loadtest - -on: - push: - branches: - - main - tags: - - v* - pull_request: - branches: - - main - -jobs: - Loadtest-Nix: - name: Loadtest (Nix) - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - with: - fetch-depth: 0 - - name: Setup Nix Environment - uses: ./.github/actions/setup-nix - with: - tools: loadtest - - name: Run loadtest - run: | - postgrest-loadtest-against main - postgrest-loadtest-report > loadtest/loadtest.md - - name: Upload report - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: loadtest.md - path: loadtest/loadtest.md - if-no-files-found: error diff --git a/.github/workflows/report.yaml b/.github/workflows/report.yaml deleted file mode 100644 index fd73ea02a6..0000000000 --- a/.github/workflows/report.yaml +++ /dev/null @@ -1,33 +0,0 @@ -name: Upload Reports - -on: - workflow_run: - workflows: ["Loadtest"] - types: - - completed - -jobs: - upload: - name: Loadtest - permissions: - checks: write - runs-on: ubuntu-22.04 - if: ${{ github.event.workflow_run.conclusion == 'success' }} - steps: - - name: Download from Artifacts - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 - with: - github-token: ${{ github.token }} - run-id: ${{ github.event.workflow_run.id }} - name: loadtest.md - path: artifacts - - name: Upload to GitHub Checks - uses: LouisBrunner/checks-action@6b626ffbad7cc56fd58627f774b9067e6118af23 # v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - sha: ${{ github.event.workflow_run.head_sha }} - name: Loadtest Results - conclusion: neutral - output: | - {"summary":""} - output_text_description_file: artifacts/loadtest.md