name: Build and Push Docker Image on: push: branches: - main - dev tags: - 'v*' pull_request: branches: - main jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Login to Gitea Container Registry run: | echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.avatic.de -u "${{ gitea.actor }}" --password-stdin - name: Prepare Docker tags id: tags run: | IMAGE_BASE="git.avatic.de/lcc_public/lcc" TAGS="" TAGS="${TAGS} -t ${IMAGE_BASE}:${{ gitea.sha }}" if [ "${{ gitea.ref_name }}" = "main" ]; then TAGS="${TAGS} -t ${IMAGE_BASE}:latest" TAGS="${TAGS} -t ${IMAGE_BASE}:main" elif [ "${{ gitea.ref_name }}" = "dev" ]; then TAGS="${TAGS} -t ${IMAGE_BASE}:dev" fi if [[ "${{ gitea.ref }}" == refs/tags/* ]]; then VERSION="${{ gitea.ref_name }}" TAGS="${TAGS} -t ${IMAGE_BASE}:${VERSION}" fi echo "tags=${TAGS}" >> $GITHUB_OUTPUT echo "image_base=${IMAGE_BASE}" >> $GITHUB_OUTPUT - name: Build Docker image run: | docker build \ --build-arg BUILDKIT_INLINE_CACHE=1 \ ${{ steps.tags.outputs.tags }} \ . - name: Push Docker images run: | IMAGE_BASE="${{ steps.tags.outputs.image_base }}" docker push ${IMAGE_BASE}:${{ gitea.sha }} if [ "${{ gitea.ref_name }}" = "main" ]; then docker push ${IMAGE_BASE}:latest docker push ${IMAGE_BASE}:main elif [ "${{ gitea.ref_name }}" = "dev" ]; then docker push ${IMAGE_BASE}:dev fi if [[ "${{ gitea.ref }}" == refs/tags/* ]]; then docker push ${IMAGE_BASE}:${{ gitea.ref_name }} fi - name: Deploy to Docker if: github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'dev') run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts BRANCH="${{ gitea.ref_name }}" DEPLOY_PATH="${{ secrets.DEPLOY_PATH }}" ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << EOF cd ${DEPLOY_PATH} docker compose pull lcc-app-${BRANCH} docker compose --profile ${BRANCH} up -d lcc-app-${BRANCH} EOF