diff --git a/.github/workflows/federated-catalog.yml b/.github/workflows/federated-catalog.yml new file mode 100644 index 0000000..abafe74 --- /dev/null +++ b/.github/workflows/federated-catalog.yml @@ -0,0 +1,99 @@ +name: Build and Publish Federated Catalog Image (Main) + +on: + push: + branches: + - "main" + - "feature/deployment" + paths: + - 'federated-catalog/**' + - '.github/workflows/federated-catalog.yml' + +concurrency: + group: fc-main + cancel-in-progress: true + +jobs: + # ------------------------------ + # 1. BUILD & PUSH FC DOCKER IMAGE + # ------------------------------ + build-and-push-fc: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # -------- LOGIN GHCR -------- + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # -------- GRADLE BUILD -------- + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Build federated catalog JAR + run: | + ./gradlew :federated-catalog:clean :federated-catalog:build + + # --------------------------------- + + - name: Set dynamic tags for Federated Catalog + id: vars + run: | + IMAGE_BASE_FC="ghcr.io/wake-ua/federated-catalog" + DATE=$(date +%Y%m%d) + SHA_SHORT=$(echo "${GITHUB_SHA}" | cut -c1-7) + + # Tags for federated catalog image + echo "FC_LATEST=${IMAGE_BASE_FC}:latest" >> $GITHUB_OUTPUT + echo "FC_SHA=${IMAGE_BASE_FC}:${SHA_SHORT}" >> $GITHUB_OUTPUT + echo "FC_DATE=${IMAGE_BASE_FC}:${DATE}" >> $GITHUB_OUTPUT + + # -------- DOCKER BUILD & PUSH -------- + - name: Build Docker image for Federated Catalog + run: | + docker build \ + -t ${{ steps.vars.outputs.FC_LATEST }} \ + -t ${{ steps.vars.outputs.FC_SHA }} \ + -t ${{ steps.vars.outputs.FC_DATE }} \ + ./federated-catalog + + - name: Push Federated Catalog images + run: | + docker push ${{ steps.vars.outputs.FC_LATEST }} + docker push ${{ steps.vars.outputs.FC_SHA }} + docker push ${{ steps.vars.outputs.FC_DATE }} + # --------------------------------- +# deploy-fc: +# runs-on: self-hosted # Runner local +# needs: build-and-push-fc +# +# steps: +# - name: Deploy backend FC +# run: | +# GITHUB_SHA=${GITHUB_SHA::7} +# +# ssh -i ${{ secrets.DEPLOY_SSH_KEY }} gh_docker_deploy@${{ secrets.FC_WEB_HOST }} " +# export FC_IMAGE_TAG=${GITHUB_SHA} && +# +# docker pull ghcr.io/wake-ua/federated-catalog:${GITHUB_SHA} && +# docker stack deploy -c /home/gh_docker_deploy/despliegue/docker-stack-catalog.yml federated-catalog +# " +# +# \ No newline at end of file diff --git a/.github/workflows/provider-build.yml b/.github/workflows/provider-build.yml new file mode 100644 index 0000000..f2f2697 --- /dev/null +++ b/.github/workflows/provider-build.yml @@ -0,0 +1,85 @@ +name: Build and Publish Provider Image (Main) + +on: + push: + branches: + - "main" + - "feature/deployment" + paths: + - 'providers/provider/src/**' + - 'providers/provider-base/Dockerfile' + - '.github/workflows/provider-build.yml' + +concurrency: + group: provider-main + cancel-in-progress: true + +jobs: + # ------------------------------ + # 1. BUILD & PUSH PROVIDER DOCKER IMAGE + # ------------------------------ + build-and-push-provider: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # -------- LOGIN GHCR -------- + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # -------- GRADLE BUILD -------- + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Build provider JAR + run: | + ./gradlew clean build + + # --------------------------------- + + - name: Set dynamic tags for Provider + id: vars + run: | + IMAGE_BASE_PROVIDER="ghcr.io/wake-ua/provider-base" + DATE=$(date +%Y%m%d) + SHA_SHORT=$(echo "${GITHUB_SHA}" | cut -c1-7) + + # Tags for provider image + echo "PROVIDER_LATEST=${IMAGE_BASE_PROVIDER}:latest" >> $GITHUB_OUTPUT + echo "PROVIDER_SHA=${IMAGE_BASE_PROVIDER}:${SHA_SHORT}" >> $GITHUB_OUTPUT + echo "PROVIDER_DATE=${IMAGE_BASE_PROVIDER}:${DATE}" >> $GITHUB_OUTPUT + + # -------- DOCKER BUILD & PUSH -------- + - name: Build Docker image for Provider + run: | + docker build \ + -t ${{ steps.vars.outputs.PROVIDER_LATEST }} \ + -t ${{ steps.vars.outputs.PROVIDER_SHA }} \ + -t ${{ steps.vars.outputs.PROVIDER_DATE }} \ + ./providers/provider-base + + - name: Push Provider images + run: | + docker push ${{ steps.vars.outputs.PROVIDER_LATEST }} + docker push ${{ steps.vars.outputs.PROVIDER_SHA }} + docker push ${{ steps.vars.outputs.PROVIDER_DATE }} + # --------------------------------- + + \ No newline at end of file