mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-02 10:03:28 +00:00
* Adjust server Dockerfile - Simpify remix-run_router patch * Update crun and podman required for new buildah version - Build arm64 version of server * Disable arm64 build for now, build is too slow with qemu
127 lines
3.8 KiB
YAML
127 lines
3.8 KiB
YAML
name: Server release
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/server.yml'
|
|
- 'apps/server/docker/*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-server:
|
|
name: Build a docker image for spacedrive server
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: Maximize build space
|
|
if: ${{ runner.os == 'Linux' }}
|
|
uses: easimon/maximize-build-space@master
|
|
with:
|
|
remove-codeql: 'true'
|
|
remove-dotnet: 'true'
|
|
remove-haskell: 'true'
|
|
remove-android: 'true'
|
|
overprovision-lvm: 'true'
|
|
remove-docker-images: 'true'
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Homebrew
|
|
id: set-up-homebrew
|
|
uses: Homebrew/actions/setup-homebrew@master
|
|
|
|
- name: Update Podman & crun
|
|
run: |
|
|
sudo apt-get remove crun podman
|
|
brew install crun podman
|
|
|
|
- name: Update buildah
|
|
shell: bash
|
|
run: |
|
|
set -euxo pipefail
|
|
wget -O- 'https://github.com/HeavenVolkoff/buildah-static/releases/latest/download/buildah-amd64.tar.gz' \
|
|
| sudo tar -xzf- -C /usr/local/bin
|
|
|
|
- name: Install netavark
|
|
shell: bash
|
|
run: |
|
|
set -euxo pipefail
|
|
sudo mkdir -p /usr/local/lib/podman
|
|
sudo wget -O- 'https://github.com/containers/netavark/releases/latest/download/netavark.gz' \
|
|
| gunzip | sudo dd status=none of=/usr/local/lib/podman/netavark
|
|
sudo chmod +x /usr/local/lib/podman/netavark
|
|
|
|
- name: Install passt
|
|
shell: bash
|
|
working-directory: /tmp
|
|
run: |
|
|
set -euxo pipefail
|
|
|
|
deb="$(
|
|
curl -SsL https://passt.top/builds/latest/x86_64 \
|
|
| grep -oP 'passt[^\.<>'\''"]+\.deb' | sort -u | head -n1
|
|
)"
|
|
|
|
curl -SsJLO "https://passt.top/builds/latest/x86_64/${deb}"
|
|
sudo dpkg -i "${deb}"
|
|
|
|
- name: Basic sanity check
|
|
run: |
|
|
crun --version
|
|
podman version
|
|
buildah --version
|
|
|
|
- name: Determine image name & tag
|
|
id: image_info
|
|
shell: bash
|
|
run: |
|
|
set -euxo pipefail
|
|
if [ "$GITHUB_EVENT_NAME" == "release" ]; then
|
|
IMAGE_TAG="${GITHUB_REF##*/}"
|
|
else
|
|
IMAGE_TAG="$(git rev-parse --short "$GITHUB_SHA")"
|
|
fi
|
|
IMAGE_TAG="${IMAGE_TAG,,}"
|
|
IMAGE_NAME="${GITHUB_REPOSITORY,,}/server"
|
|
|
|
echo "Building ${IMAGE_NAME}:${IMAGE_TAG}"
|
|
|
|
echo "tag=${IMAGE_TAG}" >> "$GITHUB_OUTPUT"
|
|
echo "name=${IMAGE_NAME}" >> "$GITHUB_OUTPUT"
|
|
echo "repo=${GITHUB_REPOSITORY}" >> "$GITHUB_OUTPUT"
|
|
echo "repo_ref=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
with:
|
|
platforms: 'arm64'
|
|
|
|
- name: Build image
|
|
id: build-image
|
|
uses: redhat-actions/buildah-build@v2
|
|
with:
|
|
tags: ${{ steps.image_info.outputs.tag }} ${{ github.event_name == 'release' && 'latest' || 'staging' }}
|
|
archs: amd64
|
|
image: ${{ steps.image_info.outputs.name }}
|
|
layers: 'false'
|
|
context: ./apps/server/docker
|
|
build-args: |
|
|
REPO=${{ steps.image_info.outputs.repo }}
|
|
REPO_REF=${{ steps.image_info.outputs.repo_ref }}
|
|
containerfiles: |
|
|
./apps/server/docker/Dockerfile
|
|
|
|
- name: Push image to ghcr.io
|
|
uses: redhat-actions/push-to-registry@v2
|
|
with:
|
|
tags: ${{ steps.build-image.outputs.tags }}
|
|
image: ${{ steps.build-image.outputs.image }}
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|