Skip to content

Prep for Release 0.9.2 #43

Prep for Release 0.9.2

Prep for Release 0.9.2 #43

Workflow file for this run

name: CI
on:
push:
branches:
- main
- release*
pull_request:
env:
REGISTRY: ghcr.io
REGISTRYPATH: ghcr.io/stac-utils/
PGSTACIMAGE: ghcr.io/stac-utils/pgstac-postgres
PGSTACLATEST: ghcr.io/stac-utils/pgstac-postgres:latest
IMAGE_NAME: ${{ github.repository }}
DOCKER_BUILDKIT: 1
PIP_BREAK_SYSTEM_PACKAGES: 1
PGPASSWORD: postgres
PGHOST: postgres
PGDATABASE: postgres
PGUSER: postgres
POSTGRES_PASSWORD: postgres
SCRIPTS: /home/runner/work/pgstac/pgstac/docker/pypgstac/bin
PGSTACDIR: /home/runner/work/pgstac/pgstac/src/pgstac
PYPGSTACDIR: /home/runner/work/pgstac/pgstac/src/pypgstac
MIGRATIONSDIR: /home/runner/work/pgstac/pgstac/src/pgstac/migrations
TESTS: /home/runner/work/pgstac/pgstac/src/pypgstac/tests
jobs:
check-pgstac-base:
runs-on: ubuntu-latest
permissions:
pull-requests: read
outputs:
pgstac-image-exists: ${{ steps.pgstac_image_check.outputs.pgstac-image-exists }}
pgstac-image-hash: ${{ steps.pgstac_image_check.outputs.pgstac-image-hash }}
steps:
- uses: actions/checkout@v4
- name: Check if pgstac-base docker image needs to be updated
id: pgstac_image_check
run: |
IMAGE=stac-utils/pgstac-base
HASH=$(git log -1 --pretty="format:%h" -- docker/pgstac)
TAG="\"$HASH\""
TOKEN=$(curl -s https://ghcr.io/token\?scope\="repository:$IMAGE:pull" | jq -r .token)
EXISTS=$(curl -s -H "Authorization: Bearer $TOKEN" https://ghcr.io/v2/$IMAGE/tags/list | jq "any(.tags[]; . == $TAG)")
echo "pgstac-image-exists=$EXISTS" >>$GITHUB_OUTPUT
echo "pgstac-image-hash=$HASH" >>$GITHUB_OUTPUT
buildpg:
name: Build and push base postgres image
needs: [check-pgstac-base]
if: ${{ needs.check-pgstac-base.outputs.pgstac-image-exists != 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Docker Meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/stac-utils/pgstac-base
tags: |
type=sha
- uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push Base Postgres
uses: docker/build-push-action@v6
with:
platforms: linux/amd64
context: .
target: pgstacbase
file: docker/pgstac/Dockerfile
tags: ${{ steps.meta.outputs.tags }}
push: true
cache-from: type=gha
cache-to: type=gha, mode=max
# test:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: docker/setup-buildx-action@v3
# - name: Build and Cache Docker layers
# uses: docker/bake-action@master
# with:
# push: false
# load: true
# allow:
# network.host
# files: |-
# docker-compose.yml
# docker-compose-cache.json
# - name: Run docker compose
# run: |
# docker compose up -d pgstac
# - name: Execute tests in the running services
# run: |
# scripts/test --nobuild
# - name: Stop Docker
# run: |
# scripts/nuke
# linux_x86_64:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# working-directory: src/pypgstac
# target: x86_64
# args: --release --out /home/runner/work/pgstac/pgstac/dist
# sccache: 'true'
# manylinux: auto
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-x86_64
# path: /home/runner/work/pgstac/pgstac/dist/*
# if-no-files-found: error
# linux:
# if: false
# runs-on: ubuntu-latest
# strategy:
# matrix:
# target: [x86, aarch64, armv7, s390x, ppc64le]
# steps:
# - uses: actions/checkout@v4
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# working-directory: src/pypgstac
# target: ${{ matrix.target }}
# args: --release --out /home/runner/work/pgstac/pgstac/dist
# sccache: 'true'
# manylinux: auto
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-${{ matrix.target }}
# path: /home/runner/work/pgstac/pgstac/dist/*
# if-no-files-found: error
# windows:
# if: false
# runs-on: windows-latest
# strategy:
# matrix:
# target: [x64, x86]
# steps:
# - uses: actions/checkout@v4
# - name: Setup Python
# uses: actions/setup-python@v4
# with:
# python-version: '3.10'
# architecture: ${{ matrix.target }}
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# working-directory: src/pypgstac
# target: ${{ matrix.target }}
# args: --release --out /home/runner/work/pgstac/pgstac/dist
# sccache: 'true'
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: win-wheels-${{ matrix.target }}
# path: /home/runner/work/pgstac/pgstac/dist/*
# if-no-files-found: error
# macos:
# if: false
# runs-on: macos-latest
# strategy:
# matrix:
# target: [x86_64, aarch64]
# steps:
# - uses: actions/checkout@v4
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# working-directory: src/pypgstac
# target: ${{ matrix.target }}
# args: --release --out /tmp/dist
# sccache: 'true'
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: mac-wheels-${{ matrix.target }}
# path: /tmp/dist/*
# if-no-files-found: error
# sdist:
# if: false
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Build sdist
# uses: PyO3/maturin-action@v1
# with:
# working-directory: src/pypgstac
# command: sdist
# args: --out /home/runner/work/pgstac/pgstac/dist
# - name: Upload sdist
# uses: actions/upload-artifact@v4
# with:
# name: source-wheels
# path: /home/runner/work/pgstac/pgstac/dist/*
# if-no-files-found: error
# test:
# name: test
# needs: [buildpg, linux_x86_64]
# runs-on: ubuntu-latest
# container:
# env:
# PGHOST: localhost
# UV_FROZEN: true
# UV_FIND_LINKS: /tmp/wheels
# UV_PROJECT_ENVIRONMENT: /home/runner/work/pgstac/pgstac/src/pypgstac/.venv
# VIRTUAL_ENVIRONMENT: /home/runner/work/pgstac/pgstac/src/pypgstac/.venv
# services:
# postgres:
# image: ghcr.io/stac-utils/pgstac-postgres:latest
# env:
# POSTGRES_PASSWORD: postgres
# POSTGRES_USER: postgres
# POSTGRES_DATABASE: postgres
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# steps:
# - uses: actions/checkout@v4
# - name: Setup UV
# uses: astral-sh/setup-uv@v3
# with:
# enable-cache: true
# - name: Get Wheel
# uses: actions/download-artifact@v4
# with:
# name: wheels-x86_64
# path: /tmp/wheels
# - name: Install pypgstac
# run: |
# cd /home/runner/work/pgstac/pgstac/src/pypgstac
# uv venv
# source $UV_PROJECT_ENVIRONMENT/bin/activate
# uv pip install psycopg[binary] psycopg-pool
# uv sync --frozen --no-install-project --extra test --extra dev
# uv pip install --offline --find-links /tmp/wheels pypgstac
# - name: Run tests
# run: |
# cd /home/runner/work/pgstac/pgstac/src/pypgstac
# source $UV_PROJECT_ENVIRONMENT/bin/activate
# $SCRIPTS/test