Files
Hardened-Docker-Images/.gitea/workflows/deploy.yml
T
2026-07-12 15:01:17 -07:00

81 lines
2.7 KiB
YAML

name: Dynamic Build and Deploy Hardened Images
on:
push:
branches:
- main
schedule:
- cron: '0 0 * * 5'
workflow_dispatch:
jobs:
build-and-push:
strategy:
matrix:
runner: [linux-amd64, linux-arm64]
runs-on: ${{ matrix.runner }}
permissions:
contents: read
packages: write
container:
image: docker:latest
steps:
- name: Checkout Code
run: |
apk add --no-cache git
git config --global init.defaultObjectFormat sha256
git clone https://${{ github.token }}@git.chillcog.com/${{ github.repository }}.git .
git checkout ${{ github.sha }}
- name: Log in to DHI Registry
run: |
echo "${{ secrets.DHI_PASSWORD }}" | docker login dhi.io -u "${{ secrets.DHI_USERNAME }}" --password-stdin
- name: Log in to Gitea Container Registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login git.chillcog.com -u "${{ github.repository_owner }}" --password-stdin
- name: Detect and Build Images
env:
REPO_OWNER: ${{ github.repository_owner }}
EVENT_NAME: ${{ github.event_name }}
run: |
apk add --no-cache bash findutils
FILES_TO_BUILD=""
REGISTRY_HOST="git.chillcog.com"
IF_OWNER="${REPO_OWNER:-chillcog}"
OWNER_LOWER=$(echo "$IF_OWNER" | tr '[:upper:]' '[:lower:]')
if [ "$EVENT_NAME" = "schedule" ] || [ "$EVENT_NAME" = "workflow_dispatch" ]; then
echo "Scheduled or manual run triggered. Processing all YAML files..."
FILES_TO_BUILD=$(find . -maxdepth 1 -name "*.yml" -o -name "*.yaml")
else
echo "Push triggered. Detecting changed files..."
FILES_TO_BUILD=$(find . -maxdepth 1 -name "*.yml" -o -name "*.yaml")
fi
for file in $FILES_TO_BUILD; do
file=$(echo "$file" | sed 's|^\./||')
if [ ! -f "$file" ]; then continue; fi
if [[ "$file" == .gitea/* ]]; then continue; fi
filename=$(basename -- "$file")
image_base="${filename%.*}"
image_name=$(echo "$image_base" | tr '[:upper:]' '[:lower:]')
echo "---------------------------------------------------"
echo "Processing: $file -> Target: ${REGISTRY_HOST}/${OWNER_LOWER}/${image_name}:latest"
echo "---------------------------------------------------"
docker build \
-f "$file" \
-t "${REGISTRY_HOST}/${OWNER_LOWER}/${image_name}:latest" \
.
docker push "${REGISTRY_HOST}/${OWNER_LOWER}/${image_name}:latest"
done