70 lines
2.4 KiB
YAML
70 lines
2.4 KiB
YAML
name: Build & Deploy
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
tags: [ 'v*' ]
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: host
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
run: |
|
|
rm -rf * .git* 2>/dev/null || true
|
|
git clone https://gitea.skalas.org/jskala/NFOguard.git /tmp/repo
|
|
cp -r /tmp/repo/* .
|
|
cp -r /tmp/repo/.* . 2>/dev/null || true
|
|
rm -rf /tmp/repo
|
|
|
|
- name: Set up variables
|
|
run: |
|
|
# Get version from tag or use 'latest'
|
|
if [[ ${{ github.ref }} == refs/tags/* ]]; then
|
|
VERSION=${GITHUB_REF#refs/tags/}
|
|
else
|
|
VERSION=latest
|
|
fi
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
echo "Building version: $VERSION"
|
|
|
|
- name: Build Docker image
|
|
run: |
|
|
docker build -t nfoguard:${{ env.VERSION }} .
|
|
docker tag nfoguard:${{ env.VERSION }} nfoguard:latest
|
|
|
|
- name: Push to GitHub Container Registry
|
|
run: |
|
|
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
|
docker tag nfoguard:${{ env.VERSION }} ghcr.io/jskala/nfoguard:${{ env.VERSION }}
|
|
docker tag nfoguard:${{ env.VERSION }} ghcr.io/jskala/nfoguard:latest
|
|
docker push ghcr.io/jskala/nfoguard:${{ env.VERSION }}
|
|
docker push ghcr.io/jskala/nfoguard:latest
|
|
|
|
- name: Push to Docker Hub
|
|
run: |
|
|
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
|
|
docker tag nfoguard:${{ env.VERSION }} jskala/nfoguard:${{ env.VERSION }}
|
|
docker tag nfoguard:${{ env.VERSION }} jskala/nfoguard:latest
|
|
docker push jskala/nfoguard:${{ env.VERSION }}
|
|
docker push jskala/nfoguard:latest
|
|
|
|
- name: Update distribution repo
|
|
run: |
|
|
# Clone the distribution repo
|
|
git clone https://github.com/jskala/NFOguard-Deploy.git /tmp/deploy
|
|
cd /tmp/deploy
|
|
|
|
# Update docker-compose.yml with new version
|
|
sed -i "s|image: .*nfoguard:.*|image: ghcr.io/jskala/nfoguard:${{ env.VERSION }}|" docker-compose.yml
|
|
|
|
# Update README with new version info
|
|
sed -i "s/Latest Version: .*/Latest Version: ${{ env.VERSION }}/" README.md
|
|
|
|
# Commit and push changes
|
|
git config user.name "GitHub Actions"
|
|
git config user.email "actions@github.com"
|
|
git add .
|
|
git commit -m "Update to version ${{ env.VERSION }}" || exit 0
|
|
git push |