Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 0 additions & 124 deletions .github/actions/build-and-push-to-quay/action.yml

This file was deleted.

53 changes: 0 additions & 53 deletions .github/actions/find-changed-directories/action.yml

This file was deleted.

207 changes: 207 additions & 0 deletions .github/workflows/pg-image-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
name: Build Postgres with pg_later

defaults:
run:
shell: bash

on:
pull_request:
branches:
- main
push:
branches:
- main
tags: ['v[0-9]+.[0-9]+.[0-9]+']
jobs:
build_and_push_amd64:
name: Build and push AMD64 images
if: github.repository_owner == 'ChuckHend'
runs-on:
- ubuntu-latest
outputs:
short_sha: ${{ steps.versions.outputs.SHORT_SHA }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Install stoml
shell: bash
run: |
set -xe
sudo apt-get update
sudo apt-get install -y wget
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
- name: Set version strings
id: versions
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "TAG_VER=$(/usr/local/bin/stoml Cargo.toml package.version)" >> $GITHUB_OUTPUT
echo "PGRX_VER=$(/usr/local/bin/stoml Cargo.toml dependencies.pgrx | tr -d '="')" >> $GITHUB_OUTPUT

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push -- Commit
# push commit build when not a release
if: github.event_name != 'release'
run: |
docker build \
--build-arg PGRX_VER=${{ steps.versions.outputs.PGRX_VER }} \
-f ./images/pglater-pg/Dockerfile \
-t ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-amd64 .
docker push ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-amd64

- name: Build and push -- Release
if: github.event_name == 'release'
run: |
docker build \
--build-arg PGRX_VER=${{ steps.versions.outputs.PGRX_VER }} \
-f ./images/pglater-pg/Dockerfile \
-t ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-amd64 \
-t ghcr.io/chuckhend/pglater-pg:latest-amd64 .
docker push ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-amd64
docker push ghcr.io/chuckhend/pglater-pg:latest-amd64

build_and_push_arm64:
name: Build and push ARM64 images
if: github.repository_owner == 'ChuckHend'
runs-on:
- ubicloud-standard-2-arm-ubuntu-2204
outputs:
short_sha: ${{ steps.versions.outputs.SHORT_SHA }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Install stoml
shell: bash
run: |
set -xe
sudo apt-get update
sudo apt-get install -y wget
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_armv7 &> /dev/null
mv stoml_linux_armv7 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
- name: Set version strings
id: versions
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "TAG_VER=$(/usr/local/bin/stoml Cargo.toml package.version)" >> $GITHUB_OUTPUT
echo "PGRX_VER=$(/usr/local/bin/stoml Cargo.toml dependencies.pgrx | tr -d '="')" >> $GITHUB_OUTPUT

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push -- Commit
# push commit build when not a release
if: github.event_name != 'release'
run: |
docker build \
--build-arg PGRX_VER=${{ steps.versions.outputs.PGRX_VER }} \
-f ./images/pglater-pg/Dockerfile \
--platform linux/arm64 \
-t ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-arm64 .
docker push ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-arm64

- name: Build and push -- Release
if: github.event_name == 'release'
run: |
docker build \
--build-arg PGRX_VER=${{ steps.versions.outputs.PGRX_VER }} \
-f ./images/pglater-pg/Dockerfile \
--platform linux/arm64 \
-t ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-arm64 \
-t ghcr.io/chuckhend/pglater-pg:latest-arm64 .
docker push ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-arm64
docker push ghcr.io/chuckhend/pglater-pg:latest-arm64

create_manifest:
name: Create and Push Manifest
runs-on: ubuntu-latest
needs: [build_and_push_arm64, build_and_push_amd64]
outputs:
short_sha: ${{ steps.versions.outputs.SHORT_SHA }}

steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Install stoml
shell: bash
run: |
set -xe
sudo apt-get update
sudo apt-get install -y wget
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
- name: Set version strings
id: versions
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "TAG_VER=$(/usr/local/bin/stoml Cargo.toml package.version)" >> $GITHUB_OUTPUT

- name: Create and push Docker manifest -- Commit
if: github.event_name != 'release'
run: |
docker manifest create ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }} \
ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-arm64 \
ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-amd64

docker manifest annotate ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-arm64 --arch arm64 --os linux
docker manifest annotate ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}-amd64 --arch amd64 --os linux
docker manifest push ghcr.io/chuckhend/pglater-pg:${{ steps.versions.outputs.SHORT_SHA }}

- name: Create and push Docker manifest -- Release
if: github.event_name == 'release'
run: |
docker manifest create ghcr.io/chuckhend/pglater-pg:latest \
ghcr.io/chuckhend/pglater-pg:latest-arm64 \
ghcr.io/chuckhend/pglater-pg:latest-amd64

docker manifest annotate ghcr.io/chuckhend/pglater-pg:latest ghcr.io/chuckhend/pglater-pg:latest-arm64 --arch arm64 --os linux
docker manifest annotate ghcr.io/chuckhend/pglater-pg:latest ghcr.io/chuckhend/pglater-pg:latest-amd64 --arch amd64 --os linux
docker manifest push ghcr.io/chuckhend/pglater-pg:latest

docker manifest create ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }} \
ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-arm64 \
ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-amd64

docker manifest annotate ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }} ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-arm64 --arch arm64 --os linux
docker manifest annotate ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }} ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}-amd64 --arch amd64 --os linux
docker manifest push ghcr.io/chuckhend/pglater-pg:v${{ steps.versions.outputs.TAG_VER }}
Loading