diff --git a/.github/templates/publish_docker/action.yml b/.github/templates/publish_docker/action.yml new file mode 100644 index 00000000..f21a7e20 --- /dev/null +++ b/.github/templates/publish_docker/action.yml @@ -0,0 +1,63 @@ +name: publish_docker + +# Were we can define the inputs that our action will accept +inputs: + platform: + required: true + github: + required: true + GITHUB_TOKEN: + required: true + +runs: + using: "composite" + # Defining the action steps(Just one step to be simple) + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ inputs.GITHUB_TOKEN }} + + - name: Docker meta + id: teddycloud_meta # you'll use this in the next step + uses: docker/metadata-action@v3 + with: + # list of Docker images to use as base name for tags + images: | + ghcr.io/toniebox-reverse-engineering/teddycloud + # Docker tags based on the following events/attributes + tags: | + type=schedule + type=schedule,pattern=nightly + type=schedule,pattern={{date 'YYYYMMDD'}} + type=schedule,pattern={{date 'YYYYMMDD-hhmmss' tz='Germany/Berlin'}} + type=ref,event=branch + type=ref,event=pr + type=sha + type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/tc_v') }} + type=raw,value=nightly,enable=${{ startsWith(github.ref, 'refs/tags/tc_nightly') }} + type=raw,value=nightly-develop,enable=${{ github.ref == 'refs/heads/develop' }} + type=ref,event=tag + type=match,pattern=tc_v(\d+),group=1 + type=match,pattern=tc_v(\d+.\d+),group=1 + type=match,pattern=tc_v(\d+.\d+.\d+),group=1 + type=match,pattern=tc_v(\d+.\d+.\d+-\S+),group=1 + + - name: Build and push ${{ inputs.platform }} + uses: docker/build-push-action@v2 + with: + context: . + platforms: ${{ inputs.platform }} + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.teddycloud_meta.outputs.tags }} + labels: ${{ steps.teddycloud_meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file