name: Build and Publish Docker Image on: push: branches: - main - develop jobs: build_and_push: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 'lts/Iron' - name: Log in to Docker Registry uses: docker/login-action@v3 with: username: ${{ secrets.USERNAME }} password: ${{ secrets.TOKEN }} registry: git.3t.network - name: Set Docker Image Tags id: set_tags run: | GIT_HASH=${{env.GITHUB_SHA}} IMAGE_NAME=git.3t.network/3t.network/butlerbot:${GIT_HASH:0:7} # Initialize the TAGS variable with the image name and hash TAGS=$IMAGE_NAME # Calculate additional tags based on branch if [ "${{ gitea.ref_name }}" = 'main' ]; then VERSION=$(node -p -e "require('./package.json').version") TAGS+=",git.3t.network/3t.network/butlerbot:latest" TAGS+=",git.3t.network/3t.network/butlerbot:$VERSION" elif [ "${{ gitea.ref_name }}" = 'develop' ]; then VERSION=$(node -p -e "require('./package.json').version")-dev TAGS+=",git.3t.network/3t.network/butlerbot:dev" TAGS+=",git.3t.network/3t.network/butlerbot:$VERSION" fi # Write the tags to the GITHUB_OUTPUT file to set the output echo "image_tags=$TAGS" >> $GITHUB_OUTPUT - name: Build and Push Docker Image uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile push: true tags: ${{ steps.set_tags.outputs.image_tags }} - name: Set Portainer Webhook URL run: | if [[ "${{ gitea.ref_name }}" == "main" ]]; then if [[ -n "${{ secrets.PORTAINER_WEBHOOK_URL_MAIN }}" ]]; then echo "PORTAINER_WEBHOOK_URL=${{ secrets.PORTAINER_WEBHOOK_URL_MAIN }}" >> $GITHUB_ENV fi elif [[ "${{ gitea.ref_name }}" == "develop" ]]; then if [[ -n "${{ secrets.PORTAINER_WEBHOOK_URL_DEV }}" ]]; then echo "PORTAINER_WEBHOOK_URL=${{ secrets.PORTAINER_WEBHOOK_URL_DEV }}" >> $GITHUB_ENV fi fi - name: Trigger Portainer Webhook run: | if [[ -n "${{ env.PORTAINER_WEBHOOK_URL }}" ]]; then curl -X POST --silent --fail "$PORTAINER_WEBHOOK_URL" fi env: PORTAINER_WEBHOOK_URL: ${{ env.PORTAINER_WEBHOOK_URL }}