diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index a11103d..0328444 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -1,16 +1,9 @@ -name: Build and Push Docker Image +name: Build and Push Docker Image only on Conventional Commits on: push: branches: - main - pull_request: - branches: - - main - -concurrency: - group: build-${{ github.ref }} - cancel-in-progress: false jobs: build: @@ -23,38 +16,23 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v3 - with: - fetch-depth: 0 # Full history for branch info - - name: Validate Conventional Commits - id: validate_commits + - name: Validate Conventional Commit + id: validate run: | if git log -1 --pretty=%B | grep -Eq "^(feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert)(\(.+\))?: .+"; then - echo "valid=true" >> $GITHUB_ENV + echo "valid=true" >> $GITHUB_OUTPUT else - echo "valid=false" >> $GITHUB_ENV + echo "valid=false" >> $GITHUB_OUTPUT fi - - name: Determine Branch Name + - name: Stop if not a Conventional Commit + if: ${{ steps.validate.outputs.valid == 'false' }} run: | - echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - - - name: Calculate Semantic Version tag - if: env.valid == 'true' - id: semver - uses: gandarez/semver-action@v2.0.0 - with: - main_branch_name: main - source_branch: ${{ env.BRANCH_NAME }} - - - name: Extract Variables - if: env.valid == 'true' - run: | - echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - echo "SEMVER_TAG=${{ steps.semver.outputs.semver_tag }}" >> $GITHUB_ENV + echo "Latest commit is not a valid Conventional Commit. Skipping build." + exit 0 - name: Docker Login - if: env.valid == 'true' env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} @@ -62,12 +40,9 @@ jobs: echo "$DOCKER_PASSWORD" | docker login $DOCKER_REGISTRY -u "$DOCKER_USERNAME" --password-stdin - name: Build Docker Image - if: env.valid == 'true' run: | - docker build -t "$DOCKER_REGISTRY/$DOCKER_IMAGE:latest" -t "$DOCKER_REGISTRY/$DOCKER_IMAGE:$SEMVER_TAG" . + docker build -t "$DOCKER_REGISTRY/$DOCKER_IMAGE:latest" . - - name: Push Docker Images - if: env.valid == 'true' + - name: Push Docker Image run: | docker push "$DOCKER_REGISTRY/$DOCKER_IMAGE:latest" - docker push "$DOCKER_REGISTRY/$DOCKER_IMAGE:$SEMVER_TAG"