All checks were successful
Build and Deploy / build-and-push (push) Successful in 1m25s
60 lines
1.9 KiB
YAML
60 lines
1.9 KiB
YAML
name: Build and Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to Gitea
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: git.ulfrx.dev
|
|
username: ${{ secrets.GIT_USERNAME }}
|
|
password: ${{ secrets.GIT_TOKEN }}
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: |
|
|
git.ulfrx.dev/ulfr/recipe-mockup:latest
|
|
git.ulfrx.dev/ulfr/recipe-mockup:${{ github.sha }}
|
|
|
|
- name: Update image tag in infra repo
|
|
run: |
|
|
REPO="ulfr/homelab"
|
|
FILE_PATH="stacks/recipe-mockup/docker-compose.yaml"
|
|
NEW_TAG="${{ github.sha }}"
|
|
API_URL="https://git.ulfrx.dev/api/v1/repos/${REPO}/contents/${FILE_PATH}"
|
|
|
|
RESPONSE=$(curl -fsS \
|
|
-H "Authorization: token ${{ secrets.GIT_TOKEN }}" \
|
|
"${API_URL}")
|
|
|
|
FILE_SHA=$(echo "$RESPONSE" | jq -r '.sha')
|
|
CONTENT=$(echo "$RESPONSE" | jq -r '.content' | base64 -d)
|
|
|
|
UPDATED=$(echo "$CONTENT" | sed "s|git.ulfrx.dev/ulfr/recipe-mockup:[a-zA-Z0-9._-]*|git.ulfrx.dev/ulfr/recipe-mockup:${NEW_TAG}|g")
|
|
ENCODED=$(echo "$UPDATED" | base64 -w 0)
|
|
|
|
curl -fsS -X PUT \
|
|
-H "Authorization: token ${{ secrets.GIT_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"message\":\"deploy: recipe-mockup ${NEW_TAG::7}\",\"content\":\"${ENCODED}\",\"sha\":\"${FILE_SHA}\"}" \
|
|
"${API_URL}"
|
|
|
|
- name: Trigger Dockhand redeploy
|
|
run: |
|
|
curl -fsS "${{ secrets.DOCKHAND_WEBHOOK_URL }}?secret=${{ secrets.DOCKHAND_WEBHOOK_SECRET }}"
|