name: Build & Deploy on: push: branches: - main - development env: DOCKER_TLS_CERTDIR: /certs REGISTRY: registry.remo-liebmann.de IMAGE_NAME: hallofbrawl-homepage jobs: # ========================= # BUILD # ========================= build: runs-on: ubuntu-latest services: docker: image: docker:24.0.5-dind options: --privileged container: image: docker:24.0.5 steps: - uses: actions/checkout@v4 - name: Set environment based on branch run: | if [ "${GITHUB_REF##*/}" = "main" ]; then echo "IMAGE_TAG=prod" >> $GITHUB_ENV echo "HUGO_ENV=production" >> $GITHUB_ENV else echo "IMAGE_TAG=dev" >> $GITHUB_ENV echo "HUGO_ENV=development" >> $GITHUB_ENV fi - name: Login to registry run: echo "${{ secrets.CI_REGISTRY_PASSWORD }}" | docker login $REGISTRY -u reguser --password-stdin - name: Build image run: | docker build \ --build-arg HUGO_ENV=$HUGO_ENV \ -t $REGISTRY/$IMAGE_NAME:$IMAGE_TAG \ . - name: Push image run: docker push $REGISTRY/$IMAGE_NAME:$IMAGE_TAG # ========================= # DEPLOY # ========================= deploy: runs-on: ubuntu-latest needs: build container: image: alpine/curl steps: - name: Set webhook based on branch run: | if [ "${GITHUB_REF##*/}" = "main" ]; then echo "PORTAINER_WEBHOOK=${{ secrets.PORTAINER_WEBHOOK_PROD }}" >> $GITHUB_ENV else echo "PORTAINER_WEBHOOK=${{ secrets.PORTAINER_WEBHOOK_DEV }}" >> $GITHUB_ENV fi - name: Trigger Portainer run: curl --insecure -X POST $PORTAINER_WEBHOOK