boxes/.forgejo/workflows/publish.yaml

66 lines
2 KiB
YAML

name: Publish image
on:
push:
paths:
- 'boxes/**'
workflow_dispatch:
jobs:
generate-matrix:
name: Generate job matrices
runs-on: host
outputs:
boxes: ${{ steps.changed-files.outputs.all_changed_files }}
boxes-count: ${{ steps.changed-files.outputs.all_changed_files_count }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: List changed files
id: changed-files
uses: tj-actions/changed-files@v45.0.3
with:
matrix: true
diff_relative: true
dir_names: true
dir_names_exclude_current_dir: true
dir_names_max_depth: 2
files: boxes/**
- name: Output changes
run: |
echo 'Files changed: ${{ steps.changed-files.outputs.all_changed_files_count }}'
echo 'List: ${{ steps.changed-files.outputs.all_changed_files }}'
create-docker-images:
# needs: generate-matrix
runs-on: host
strategy:
matrix:
# box: ${{ needs.generate-matrix.outputs.boxes }} FIXME: this doesn't work yet in forgejo-runner
box:
- ["boxes", "devbox"]
if: contains(needs.generate-matrix.outputs.boxes, join(matrix.box, '/'))
steps:
- name: Print variables
run: |
echo 'Building image in context: ${{ matrix.box }}'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: git.alecodes.page
username: ${{ vars.CONTAINER_REGISTRY_USER }}
password: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: true
context: "{{defaultContext}}:${{ join(matrix.box, '/') }}"
tags: |
git.alecodes.page/alecodes/${{ matrix.box[0] }}:latest