- build.yaml: merge 3 cargo steps into single compile pass (reuse artifacts) - build.yaml: remove cargo clean (wasted compiled artifacts before Docker) - build.yaml: add secret validation for registry credentials - deploy.yaml: skip checkout, fetch SHA via Gitea API (no clone overhead) - deploy.yaml: reuse FORGEJO_REGISTRY_TOKEN for API auth (existing privilege) - deploy.yaml: validate SHA image exists before tagging as latest - deploy.yaml: add secret validation for registry credentials - migrate.yaml: merge schema verification into both changed + manual paths - migrate.yaml: manual trigger now fails on first error (was silently masking)
This commit is contained in:
@@ -15,29 +15,48 @@ jobs:
|
||||
name: Tag & Push Latest
|
||||
runs-on: rust
|
||||
steps:
|
||||
- name: Install Docker
|
||||
run: apt-get update && apt-get install -y docker.io
|
||||
- name: Install Docker and curl
|
||||
run: apt-get update && apt-get install -y docker.io curl
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Get short SHA
|
||||
- name: Get short SHA via Gitea API
|
||||
id: sha
|
||||
run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||
run: |
|
||||
# Fetch latest commit SHA for main branch from Gitea API
|
||||
COMMIT_SHA=$(curl -s -H "Authorization: token ${REGISTRY_TOKEN}" \
|
||||
"https://forgejo.riotpiao.com/api/v1/repos/riotpiao-poimen/poimen-memory/commits?sha=main&limit=1" | \
|
||||
grep -o '"sha":"[^"]*' | head -1 | cut -d'"' -f4)
|
||||
|
||||
if [ -z "$COMMIT_SHA" ]; then
|
||||
echo "ERROR: Failed to fetch commit SHA from Gitea API"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SHORT_SHA=$(echo "$COMMIT_SHA" | cut -c1-7)
|
||||
echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||
echo "Full SHA: $COMMIT_SHA, Short: $SHORT_SHA"
|
||||
env:
|
||||
REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Registry login
|
||||
run: |
|
||||
if [ -z "${REGISTRY_USER}" ] || [ -z "${REGISTRY_TOKEN}" ]; then
|
||||
echo "ERROR: Missing REGISTRY_USER or REGISTRY_TOKEN secrets"
|
||||
exit 1
|
||||
fi
|
||||
echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \
|
||||
--username "${REGISTRY_USER}" --password-stdin
|
||||
env:
|
||||
REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }}
|
||||
REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
|
||||
|
||||
- name: Pull SHA image and tag as latest
|
||||
- name: Verify SHA image exists, tag as latest
|
||||
run: |
|
||||
docker pull "${IMAGE}:${{ steps.sha.outputs.short_sha }}" && \
|
||||
docker tag "${IMAGE}:${{ steps.sha.outputs.short_sha }}" "${IMAGE}:latest" && \
|
||||
docker push "${IMAGE}:latest" && \
|
||||
if ! docker pull "${IMAGE}:${{ steps.sha.outputs.short_sha }}"; then
|
||||
echo "ERROR: Image ${IMAGE}:${{ steps.sha.outputs.short_sha }} not found. Check build.yaml passed."
|
||||
exit 1
|
||||
fi
|
||||
docker tag "${IMAGE}:${{ steps.sha.outputs.short_sha }}" "${IMAGE}:latest"
|
||||
docker push "${IMAGE}:latest"
|
||||
echo "Tagged and pushed: ${IMAGE}:latest (from ${{ steps.sha.outputs.short_sha }})"
|
||||
|
||||
- name: Prune images
|
||||
|
||||
Reference in New Issue
Block a user