name: Build and Deploy Member Service on: push: branches: [ main, develop ] paths: - 'member/**' - 'common/**' pull_request: branches: [ main ] paths: - 'member/**' - 'common/**' env: ACR_NAME: acrdigitalgarage03 IMAGE_NAME: hiorder/member MANIFEST_REPO: dg04-hi/hi-manifest MANIFEST_FILE_PATH: member/deployment.yml jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - name: Cache Gradle packages uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - name: Grant execute permission for gradlew run: chmod +x ./gradlew - name: Build with Gradle run: ./gradlew member:build -x test --no-daemon - name: Run tests run: ./gradlew member:test --no-daemon - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Azure Container Registry uses: docker/login-action@v3 with: registry: ${{ env.ACR_NAME }}.azurecr.io username: ${{ secrets.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.ACR_NAME }}.azurecr.io/${{ env.IMAGE_NAME }}:${{ steps.timestamp.outputs.BUILD_TIME }} tags: | type=ref,event=branch type=ref,event=pr type=sha,prefix={{branch}}- - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . file: ./member/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | SERVICE_NAME=member