diff --git a/.github/workflows/ci-cd-java.yml b/.github/workflows/ci-cd-java.yml new file mode 100644 index 0000000..c25a5c3 --- /dev/null +++ b/.github/workflows/ci-cd-java.yml @@ -0,0 +1,78 @@ +name: ci-cd-java.yml +on: + workflow_call: + +jobs: + build-check-test-push: + name: Build, check, test, push + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + clean: 'true' + fetch-depth: 2 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + cache: 'maven' + + - name: Check code format and lint + run: | + mvn spotless:check + + - name: Run tests + run: mvn test + + - name: Build artifact + run: mvn package -Dmaven.test.skip + + - name: Build Docker Image + uses: docker/build-push-action@v6 + with: + context: . + push: 'false' + tags: 'hsldevcom/${{ github.repository }}:${{ github.sha }}' + + - name: Setup Docker Buildx + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + uses: docker/setup-buildx-action@v3 + + - name: Extract Docker metadata + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ github.repository }} + tags: | + type=ref,event=branch + type=sha + type=semver,pattern={{version}} + labels: | + org.opencontainers.image.title=${{ github.repository }} + org.opencontainers.image.vendor=hsldevcom + + - name: Login to Github Container Registry + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + uses: docker/login-action@v3 + with: + registry: hsldevcom + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build & Push Docker image + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' + uses: docker/build-push-action@v6 + with: + context: . + push: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + + + +