Update image tag and push to branch in kustomize-ci workflow
#16
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Kustomize CI - Build and Push | |
| on: | |
| push: | |
| branches: | |
| - feature/development | |
| # - development | |
| jobs: | |
| build-and-push: | |
| name: Build and Push Docker Image | |
| runs-on: ubuntu-latest | |
| env: | |
| IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/springboot-postgres | |
| outputs: | |
| image-tag: ${{ steps.set-tag.outputs.tag }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Build Spring Boot App | |
| working-directory: ./app | |
| run: ./mvnw clean package -DskipTests | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Set Image Tag | |
| id: set-tag | |
| run: | | |
| COMMIT_SHA=$(echo "${{ github.sha }}" | cut -c1-7) | |
| BRANCH=$(echo "${GITHUB_REF#refs/heads/}" | tr '/' '-') | |
| TAG="${BRANCH}-${COMMIT_SHA}" | |
| echo "tag=$TAG" >> $GITHUB_OUTPUT | |
| - name: Build and Push Docker Image | |
| run: | | |
| docker build -t $IMAGE_NAME:${{ steps.set-tag.outputs.tag }} ./app | |
| docker push $IMAGE_NAME:${{ steps.set-tag.outputs.tag }} | |
| update-kustomize: | |
| name: Update Kustomize Overlay | |
| needs: build-and-push | |
| runs-on: ubuntu-latest | |
| env: | |
| IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/springboot-postgres | |
| IMAGE_TAG: ${{ needs.build-and-push.outputs.image-tag }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Configure git | |
| run: | | |
| git config --global user.name "${{ secrets.GIT_USER_NAME }}" | |
| git config --global user.email "${{ secrets.GIT_USER_EMAIL }}" | |
| - name: Update image tag and push to branch | |
| run: | | |
| if [ -z "$IMAGE_TAG" ]; then | |
| echo "IMAGE_TAG is empty, exiting." | |
| exit 1 | |
| fi | |
| git fetch origin auto/kustomize-update || true | |
| git pull origin auto/kustomize-update --rebase || true | |
| FILE="kustomize/overlays/dev/patch-deployment-image.yaml" | |
| echo "Updating $FILE with image: $IMAGE_NAME:$IMAGE_TAG" | |
| sed -i.bak -E "s|image:.*|image: ${IMAGE_NAME}:${IMAGE_TAG}|" "$FILE" | |
| git add "$FILE" | |
| git commit -m "Update image tag to $IMAGE_TAG" || echo "No changes to commit" | |
| git push origin HEAD:auto/kustomize-update --force-with-lease | |
| env: | |
| IMAGE_NAME: yourdockerhub/springboot-postgres | |
| IMAGE_TAG: ${{ needs.build-and-push.outputs.image-tag }} | |