diff --git a/deploy-template.yml b/.gitea/workflows/deploy-template.yml similarity index 98% rename from deploy-template.yml rename to .gitea/workflows/deploy-template.yml index 10b9f14..c3a5993 100644 --- a/deploy-template.yml +++ b/.gitea/workflows/deploy-template.yml @@ -1,15 +1,15 @@ -name: Deploy Template - -on: - workflow_call: - inputs: - runner: - required: true - type: string - image: - required: true - type: string - +name: Deploy Template + +on: + workflow_call: + inputs: + runner: + required: true + type: string + image: + required: true + type: string + jobs: deploy: runs-on: ${{ inputs.runner }} @@ -33,4 +33,4 @@ jobs: DOCKER_IMAGE: ${{ inputs.image }} run: | docker compose up -d --pull always --remove-orphans - + diff --git a/.gitea/workflows/docker-build-push.yml b/.gitea/workflows/docker-build-push.yml new file mode 100644 index 0000000..0144a16 --- /dev/null +++ b/.gitea/workflows/docker-build-push.yml @@ -0,0 +1,61 @@ +name: Docker Build & Push (Template) + +on: + workflow_call: + inputs: + runner: + required: false + type: string + default: ubuntu-latest + image_name: + required: true + type: string + image_tag: + required: false + type: string + default: latest + dockerfile: + required: false + type: string + default: Dockerfile + context: + required: false + type: string + default: . + outputs: + image: + description: Fully-qualified image reference pushed to Docker Hub + value: ${{ jobs.build.outputs.image }} + +jobs: + build: + runs-on: ${{ inputs.runner }} + outputs: + image: ${{ steps.push.outputs.image }} + + steps: + - uses: actions/checkout@v4 + + - name: Build Docker image + run: | + docker build \ + -t "${{ inputs.image_name }}:${{ inputs.image_tag }}" \ + -f "${{ inputs.dockerfile }}" \ + "${{ inputs.context }}" + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ env.DOCKER_HUB_USERNAME }} + password: ${{ env.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Push Docker image to Docker Hub + id: push + shell: bash + run: | + set -euo pipefail + REMOTE_IMAGE="${{ env.DOCKER_HUB_USERNAME }}/${{ inputs.image_name }}:${{ inputs.image_tag }}" + docker tag "${{ inputs.image_name }}:${{ inputs.image_tag }}" "$REMOTE_IMAGE" + docker push "$REMOTE_IMAGE" + echo "image=$REMOTE_IMAGE" >> "$GITHUB_OUTPUT" +