Fichiers

71 lignes
2.2 KiB
YAML

name: Build & Push Nextcloud Docker Image (registry cache)
on:
workflow_dispatch:
inputs:
version:
description: "Nextcloud version (ex: 26.0.1). Leave empty for latest"
required: false
latest:
description: "Tag as latest (true/false)"
required: false
default: "false"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install tools
run: |
apt-get update
apt-get install -y curl jq
- name: Determine Nextcloud version
run: |
if [ -z "${{ inputs.version }}" ]; then
NC_VERS=$(curl -s https://api.github.com/repos/nextcloud/server/releases/latest \
| jq -r '.tag_name' | tr -d 'v')
else
NC_VERS="${{ inputs.version }}"
fi
MAJOR_VERS=$(echo "$NC_VERS" | cut -d. -f1)
if [ "$MAJOR_VERS" -lt 24 ]; then
echo "Unsupported Nextcloud major version: $MAJOR_VERS"
exit 1
fi
echo "NC_VERS=$NC_VERS" >> $GITHUB_ENV
echo "MAJOR_VERS=$MAJOR_VERS" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Gitea Registry
uses: docker/login-action@v3
with:
registry: ${{ vars.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Build & push with registry cache
run: |
TAGS="-t ${{ vars.DOCKER_REGISTRY }}/${{ vars.DOCKER_NAMESPACE }}/nextcloud:$NC_VERS"
if [ "${{ inputs.latest }}" = "true" ]; then
TAGS="$TAGS -t ${{ vars.DOCKER_REGISTRY }}/${{ vars.DOCKER_NAMESPACE }}/nextcloud:latest"
fi
docker buildx build \
--push \
--build-arg NC_VERS=$NC_VERS \
--cache-from type=registry,ref=${{ vars.DOCKER_REGISTRY }}/${{ vars.DOCKER_NAMESPACE }}/nextcloud:buildcache \
--cache-to type=registry,ref=${{ vars.DOCKER_REGISTRY }}/${{ vars.DOCKER_NAMESPACE }}/nextcloud:buildcache,mode=max \
$TAGS \
./$MAJOR_VERS