This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
name: Build ElegooSlicer Container
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
- cron: '0 4 * * *'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
check-and-build:
|
||||
runs-on: docker-runner
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Determine Registry & Image Path
|
||||
id: meta
|
||||
run: |
|
||||
if [ "${{ github.server_url }}" = "https://github.com" ]; then
|
||||
REGISTRY="ghcr.io"
|
||||
else
|
||||
REGISTRY=$(echo "${{ github.server_url }}" | sed -e 's|^[^/]*/\+/||')
|
||||
fi
|
||||
|
||||
IMAGE_NAME=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')
|
||||
FULL_IMAGE_NAME="$REGISTRY/$IMAGE_NAME"
|
||||
|
||||
echo "registry=$REGISTRY" >> "$GITHUB_OUTPUT"
|
||||
echo "full_image_name=$FULL_IMAGE_NAME" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Login to Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ secrets.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||
|
||||
- name: Check Elegoo Upstream Release & Local Image Tag
|
||||
id: check_tag
|
||||
run: |
|
||||
RELEASE_JSON=$(curl -s https://api.github.com/repos/ELEGOO-3D/ElegooSlicer/releases/latest)
|
||||
DOWNLOAD_URL=$(echo "$RELEASE_JSON" | grep -o 'https://[^"]*Linux[^"]*\.AppImage' | head -n 1)
|
||||
TAG_NAME=$(echo "$RELEASE_JSON" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)
|
||||
|
||||
if [ -z "$DOWNLOAD_URL" ] || [ -z "$TAG_NAME" ]; then
|
||||
echo "Error: Could not parse release data"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Newest Elegoo-Tag: $TAG_NAME"
|
||||
TARGET_IMAGE="${{ steps.meta.outputs.full_image_name }}:$TAG_NAME"
|
||||
|
||||
if docker manifest inspect "$TARGET_IMAGE" > /dev/null 2>&1; then
|
||||
echo "Image $TARGET_IMAGE exists in registry"
|
||||
echo "build_needed=false" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "Image $TARGET_IMAGE does not exist in registry, lets build it"
|
||||
echo "build_needed=true" >> "$GITHUB_OUTPUT"
|
||||
echo "url=$DOWNLOAD_URL" >> "$GITHUB_OUTPUT"
|
||||
echo "tag=$TAG_NAME" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
if: steps.check_tag.outputs.build_needed == 'true' || github.event_name == 'workflow_dispatch'
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build and Push
|
||||
if: steps.check_tag.outputs.build_needed == 'true' || github.event_name == 'workflow_dispatch'
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
build-args: |
|
||||
SLICER_URL=${{ steps.check_tag.outputs.url }}
|
||||
tags: |
|
||||
${{ steps.meta.outputs.full_image_name }}:latest
|
||||
${{ steps.meta.outputs.full_image_name }}:${{ steps.check_tag.outputs.tag }}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
elegooslicer:
|
||||
image: https://gitea.root-zone.info/homelab/elegoo-slicer-image:latest
|
||||
container_name: elegooslicer
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Berlin
|
||||
volumes:
|
||||
- ./config:/config
|
||||
ports:
|
||||
- 3000:3000
|
||||
- 3001:3001
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
shm_size: "1gb"
|
||||
restart: unless-stopped
|
||||
Reference in New Issue
Block a user