chore: release static executable for aarch64-linux
Also makes the aarch64 variant of the docker image consist of a single static executable, similar to the x86_64 variant.
This commit is contained in:
@@ -30,8 +30,18 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
static:
|
static:
|
||||||
name: Nix - Linux x86-64 static
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: Linux aarch64
|
||||||
|
runs-on: ubuntu-24.04-arm
|
||||||
|
artifact: aarch64
|
||||||
|
- name: Linux x86-64
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
|
artifact: x86-64
|
||||||
|
name: Nix - ${{ matrix.name }} static
|
||||||
|
runs-on: ${{ matrix.runs-on }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
- name: Setup Nix Environment
|
- name: Setup Nix Environment
|
||||||
@@ -44,17 +54,17 @@ jobs:
|
|||||||
- name: Save built executable as artifact
|
- name: Save built executable as artifact
|
||||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
name: postgrest-linux-static-x86-64
|
name: postgrest-linux-static-${{ matrix.artifact }}
|
||||||
path: result/bin/postgrest
|
path: result/bin/postgrest
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Build Docker image
|
- name: Build Docker image
|
||||||
run: nix-build -A docker.image --out-link postgrest-docker.tar.gz
|
run: nix-build -A docker.image --out-link postgrest-docker-${{ matrix.artifact }}.tar.gz
|
||||||
- name: Save built Docker image as artifact
|
- name: Save built Docker image as artifact
|
||||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
name: postgrest-docker-x86-64
|
name: postgrest-docker-${{ matrix.artifact }}
|
||||||
path: postgrest-docker.tar.gz
|
path: postgrest-docker-${{ matrix.artifact }}.tar.gz
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
|
||||||
@@ -87,15 +97,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- name: Linux aarch64
|
|
||||||
runs-on: ubuntu-24.04-arm
|
|
||||||
cache: |
|
|
||||||
~/.stack/pantry
|
|
||||||
~/.stack/snapshots
|
|
||||||
~/.stack/stack.sqlite3
|
|
||||||
artifact: postgrest-ubuntu-aarch64
|
|
||||||
deps: sudo apt-get update && sudo apt-get install libpq-dev
|
|
||||||
|
|
||||||
- name: MacOS aarch64
|
- name: MacOS aarch64
|
||||||
runs-on: macos-14
|
runs-on: macos-14
|
||||||
cache: |
|
cache: |
|
||||||
|
|||||||
@@ -75,6 +75,9 @@ jobs:
|
|||||||
|
|
||||||
mkdir -p release-bundle
|
mkdir -p release-bundle
|
||||||
|
|
||||||
|
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-linux-static-aarch64.tar.xz" \
|
||||||
|
-C artifacts/postgrest-linux-static-aarch64 postgrest
|
||||||
|
|
||||||
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-linux-static-x86-64.tar.xz" \
|
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-linux-static-x86-64.tar.xz" \
|
||||||
-C artifacts/postgrest-linux-static-x86-64 postgrest
|
-C artifacts/postgrest-linux-static-x86-64 postgrest
|
||||||
|
|
||||||
@@ -87,9 +90,6 @@ jobs:
|
|||||||
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-freebsd-x86-64.tar.xz" \
|
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-freebsd-x86-64.tar.xz" \
|
||||||
-C artifacts/postgrest-freebsd-x86-64 postgrest
|
-C artifacts/postgrest-freebsd-x86-64 postgrest
|
||||||
|
|
||||||
tar cJvf "release-bundle/postgrest-${GITHUB_REF_NAME}-ubuntu-aarch64.tar.xz" \
|
|
||||||
-C artifacts/postgrest-ubuntu-aarch64 postgrest
|
|
||||||
|
|
||||||
zip --junk-paths "release-bundle/postgrest-${GITHUB_REF_NAME}-windows-x86-64.zip" \
|
zip --junk-paths "release-bundle/postgrest-${GITHUB_REF_NAME}-windows-x86-64.zip" \
|
||||||
artifacts/postgrest-windows-x86-64/postgrest.exe
|
artifacts/postgrest-windows-x86-64/postgrest.exe
|
||||||
|
|
||||||
@@ -139,49 +139,43 @@ jobs:
|
|||||||
DOCKER_REPO: ${{ vars.DOCKER_REPO }}
|
DOCKER_REPO: ${{ vars.DOCKER_REPO }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
- name: Download aarch64 Docker image
|
||||||
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||||
|
with:
|
||||||
|
name: postgrest-docker-aarch64
|
||||||
- name: Download x86-64 Docker image
|
- name: Download x86-64 Docker image
|
||||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
||||||
with:
|
with:
|
||||||
name: postgrest-docker-x86-64
|
name: postgrest-docker-x86-64
|
||||||
- name: Download aarch64 binary
|
|
||||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
||||||
with:
|
|
||||||
name: postgrest-ubuntu-aarch64
|
|
||||||
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
|
- uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
|
||||||
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
||||||
with:
|
with:
|
||||||
username: ${{ vars.DOCKER_USER }}
|
username: ${{ vars.DOCKER_USER }}
|
||||||
password: ${{ secrets.DOCKER_PASS }}
|
password: ${{ secrets.DOCKER_PASS }}
|
||||||
- name: Build aarch64 Docker image
|
|
||||||
run: |
|
|
||||||
# This only pushes the image via digest, not a tag. This will not appear
|
|
||||||
# in the image list on Docker Hub, yet. It will be later added to the main
|
|
||||||
# tag's manifest.
|
|
||||||
docker buildx build \
|
|
||||||
-t "$DOCKER_REPO/postgrest" \
|
|
||||||
--platform linux/arm64 \
|
|
||||||
--output push-by-digest=true,type=image,push=true \
|
|
||||||
--metadata-file metadata.json \
|
|
||||||
.
|
|
||||||
echo "SHA256_ARM=$(jq -r '."containerimage.digest"' metadata.json)" >> "$GITHUB_ENV"
|
|
||||||
- name: Publish images on Docker Hub
|
- name: Publish images on Docker Hub
|
||||||
run: |
|
run: |
|
||||||
docker load -i postgrest-docker.tar.gz
|
docker load -i postgrest-docker-aarch64.tar.gz
|
||||||
|
|
||||||
docker tag postgrest:latest "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
docker tag postgrest:latest "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
||||||
docker push "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
docker push "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
||||||
docker buildx imagetools create --append \
|
SHA256_ARM64=$(docker inspect postgrest:latest | jq -r '.[0].Id')
|
||||||
-t "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}" \
|
|
||||||
"$DOCKER_REPO/postgrest@$SHA256_ARM"
|
docker load -i postgrest-docker-x86-64.tar.gz
|
||||||
|
docker tag postgrest:latest "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
||||||
|
docker push "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
||||||
|
SHA256_AMD64=$(docker inspect postgrest:latest | jq -r '.[0].Id')
|
||||||
|
|
||||||
|
docker manifest create "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}" \
|
||||||
|
"$DOCKER_REPO/postgrest@$SHA256_ARM64" \
|
||||||
|
"$DOCKER_REPO/postgrest@$SHA256_AMD64"
|
||||||
|
docker manifest push "$DOCKER_REPO/postgrest:${GITHUB_REF_NAME}"
|
||||||
|
|
||||||
# Only tag 'latest' for full releases
|
# Only tag 'latest' for full releases
|
||||||
if [ "${GITHUB_REF_NAME}" != "devel" ]; then
|
if [ "${GITHUB_REF_NAME}" != "devel" ]; then
|
||||||
echo "Pushing to 'latest' tag for full release of ${GITHUB_REF_NAME} ..."
|
echo "Pushing to 'latest' tag for full release of ${GITHUB_REF_NAME} ..."
|
||||||
docker tag postgrest:latest "$DOCKER_REPO"/postgrest:latest
|
docker manifest create "$DOCKER_REPO/postgrest:latest" \
|
||||||
docker push "$DOCKER_REPO"/postgrest:latest
|
"$DOCKER_REPO/postgrest@$SHA256_ARM64" \
|
||||||
docker buildx imagetools create --append \
|
"$DOCKER_REPO/postgrest@$SHA256_AMD64"
|
||||||
-t "$DOCKER_REPO/postgrest:latest" \
|
docker manifest push "$DOCKER_REPO/postgrest:latest"
|
||||||
"$DOCKER_REPO/postgrest@$SHA256_ARM"
|
|
||||||
else
|
else
|
||||||
echo "Skipping push to 'latest' tag for pre-release..."
|
echo "Skipping push to 'latest' tag for pre-release..."
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user