name: image puller runner run-name: Pull and Push 🚀 on: push: workflow_dispatch: # Enables the manual run UI button jobs: Explore-Gitea-Actions: env: RUNNER_TOOL_CACHE: /toolcache container: image: gitea.tryton.geeraert.eu/pi-ux-ce/custom-runner-debian-slim:latest volumes: - act-toolcache:/opt/hostedtoolcache # this is where Runner store their cache default runs-on: host-runner outputs: image_matrix: ${{ steps.set-matrix.outputs.images }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Parse image file into JSON array id: set-matrix run: | # Read lines, remove empty lines/comments, and format as a JSON array # e.g., ["ubuntu:latest", "alpine:3.18"] JSON_ARRAY=$(jq -R -s -c 'split("\n") | map(select(length > 0 and (startswith("#") | not)))' image_list.txt) echo "Images found: $JSON_ARRAY" echo "images=$JSON_ARRAY" >> $GITHUB_OUTPUT # Job 2: Process each image in parallel matrix slots process-images: needs: setup runs-on: host-runner strategy: # Prevents all other jobs from failing immediately if one image fails fail-fast: false matrix: image: ${{ fromJSON(needs.setup.outputs.image_matrix) }} steps: - name: Login to gitea uses: docker/login-action@v3 with: registry: gitea.tryton.geeraert.eu username: ${{ secrets.USERNAME_GITEA }} password: ${{ secrets.PASSWORD_GITEA }} - name: Docker Pull run: docker pull ${{ matrix.image }} # - name: Push image # run: | # docker push gitea.tryton.geeraert.eu/pi-ux-ce/django-python:latest # docker push gitea.tryton.geeraert.eu/pi-ux-ce/django-python:${{ env.next_version }}