@@ -48,19 +48,37 @@ jobs:
4848 - name : Get list of services
4949 id : get-services
5050 run : |
51- services=$(grep "^ [^ ]" docker-compose.yml | grep -v '#' | awk -F: '{print $1}' | sed -e 's/^ *//')
51+ services=$(grep "^ [^ ]" docker-compose.yml | grep -v base| grep -v '#' | awk -F: '{print $1}' | sed -e 's/^ *//')
5252 services_json=$(echo $services | tr '\n' ',' | sed 's/,$//' | jq -R 'split(" ")' | tr -d '\n')
5353 # Set the list of service names as an output variable
5454 echo "services=$services_json" >> $GITHUB_OUTPUT
5555 echo "services=$services_json"
5656
57+ - name : Login to DockerHub
58+ uses : docker/login-action@v3
59+ with :
60+ username : ${{ secrets.DOCKER_USERNAME }}
61+ password : ${{ secrets.DOCKER_PASSWORD }}
62+
63+ - name : Build and push base image
64+ uses : docker/build-push-action@v6
65+ with :
66+ file : packages/Dockerfile.base
67+ context : .
68+ push : true
69+ tags : |
70+ opencrvs/ocrvs-base:${{ steps.set-version.outputs.version }}
71+ cache-from : type=registry,ref=opencrvs/ocrvs-base:${{ steps.set-version.outputs.version }}
72+ cache-to : type=inline
73+
5774 outputs :
5875 services : ${{ steps.get-services.outputs.services }}
5976 version : ${{ steps.set-version.outputs.version }}
6077
6178 build :
6279 needs : base
6380 strategy :
81+ fail-fast : false
6482 matrix :
6583 service : ${{ fromJSON(needs.base.outputs.services) }}
6684 runs-on : ubuntu-22.04
@@ -74,17 +92,23 @@ jobs:
7492 if : github.event_name == 'push'
7593
7694 - name : Login to DockerHub
77- uses : docker/login-action@v1
95+ uses : docker/login-action@v3
7896 with :
7997 username : ${{ secrets.DOCKER_USERNAME }}
8098 password : ${{ secrets.DOCKER_PASSWORD }}
8199
82- - name : Build ${{ matrix.service }}
83- run : |
84- echo ${{ matrix.service }}
85- export VERSION=${{ github.event.inputs.release_version }}
86- docker compose build ${{ matrix.service }}
87- docker compose push ${{ matrix.service }}
100+ - name : Build and push
101+ uses : docker/build-push-action@v6
102+ with :
103+ file : packages/${{ matrix.service }}/Dockerfile
104+ build-args : |
105+ VERSION=${{ needs.base.outputs.version }}
106+ push : true
107+ context : .
108+ tags : |
109+ opencrvs/ocrvs-${{ matrix.service }}:${{ needs.base.outputs.version }}
110+ cache-from : type=registry,ref=opencrvs/ocrvs-${{ matrix.service }}:${{ needs.base.outputs.version}}
111+ cache-to : type=inline
88112
89113 security-scans :
90114 needs : [base, build]
0 commit comments