1+ name : Build and Publish Provider Image (Main)
2+
3+ on :
4+ push :
5+ branches :
6+ - " feature/deployment"
7+ paths :
8+ - ' providers/provider/src/**'
9+ - ' providers/provider-base/Dockerfile'
10+ - ' .github/workflows/provider-build.yml'
11+
12+ concurrency :
13+ group : provider-main
14+ cancel-in-progress : true
15+
16+ jobs :
17+ # ------------------------------
18+ # 1. BUILD & PUSH PROVIDER DOCKER IMAGE
19+ # ------------------------------
20+ build-and-push-provider :
21+ runs-on : ubuntu-latest
22+
23+ permissions :
24+ contents : read
25+ packages : write
26+ id-token : write
27+
28+ steps :
29+ - name : Checkout repository
30+ uses : actions/checkout@v4
31+
32+ # -------- LOGIN GHCR --------
33+ - name : Login to GHCR
34+ uses : docker/login-action@v3
35+ with :
36+ registry : ghcr.io
37+ username : ${{ github.actor }}
38+ password : ${{ secrets.GITHUB_TOKEN }}
39+
40+ # -------- GRADLE BUILD --------
41+ - name : Set up JDK 17
42+ uses : actions/setup-java@v4
43+ with :
44+ distribution : temurin
45+ java-version : 17
46+
47+ - name : Make Gradle executable
48+ run : chmod +x ./gradlew
49+
50+ - name : Build provider JAR
51+ run : |
52+ ./gradlew clean build
53+
54+ # ---------------------------------
55+
56+ - name : Set dynamic tags for Federated Catalog
57+ id : vars
58+ run : |
59+ IMAGE_BASE_PROVIDER="ghcr.io/wake-ua/provider-base"
60+ DATE=$(date +%Y%m%d)
61+ SHA_SHORT=$(echo "${GITHUB_SHA}" | cut -c1-7)
62+
63+ # Tags for provider image
64+ echo "PROVIDER_LATEST=${IMAGE_BASE_PROVIDER}:latest" >> $GITHUB_OUTPUT
65+ echo "PROVIDER_SHA=${IMAGE_BASE_PROVIDER}:${SHA_SHORT}" >> $GITHUB_OUTPUT
66+ echo "PROVIDER_DATE=${IMAGE_BASE_PROVIDER}:${DATE}" >> $GITHUB_OUTPUT
67+
68+ # -------- DOCKER BUILD & PUSH --------
69+ - name : Build Docker image for Federated Catalog
70+ run : |
71+ docker build \
72+ -t ${{ steps.vars.outputs.PROVIDER_LATEST }} \
73+ -t ${{ steps.vars.outputs.PROVIDER_SHA }} \
74+ -t ${{ steps.vars.outputs.PROVIDER_DATE }} \
75+ ./provider-base
76+
77+ - name : Push Federated Catalog images
78+ run : |
79+ docker push ${{ steps.vars.outputs.PROVIDER_LATEST }}
80+ docker push ${{ steps.vars.outputs.PROVIDER_SHA }}
81+ docker push ${{ steps.vars.outputs.PROVIDER_DATE }}
82+ # ---------------------------------
83+
84+
0 commit comments