Update workflow to include logic to update gitops repo #4
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # update version for each build in this file | |
| name: Docker Image CI | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| pull_request: | |
| branches: [ "master" ] | |
| # update image tags based on update to each component here | |
| env: | |
| PRODUCER_IMAGE: producer:2.0.0 | |
| PROCESSOR_IMAGE: processor:2.0.0 | |
| GRPC_SERVER_IMAGE: grpc-server:2.0.0 | |
| GRPC_CLIENT_IMAGE: grpc-client:2.0.0 | |
| GITOPS_REPO: srivathsashreyas/metrics-collector-py-gitops | |
| jobs: | |
| # each job: | |
| # 1. logs in to dockerhub (secrets are configured in github) | |
| # 2. builds the docker image with the tag <registry>/<username>/image:version | |
| # 3. pushes the image with the given tag to dockerhub | |
| # note: avoid using the -p flag when performing docker login since | |
| # this docker login with the -p flag requires an interactive terminal | |
| # since github action servers do not provide an interactive terminal, | |
| # use --password-stdin instead | |
| build-and-push-producer: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Login to dockerhub | |
| run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login docker.io -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin | |
| - name: Build the producer image | |
| run: docker build -f deploy/producer/Dockerfile -t docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.PRODUCER_IMAGE}} . | |
| - name: Push the producer image | |
| run: docker push docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.PRODUCER_IMAGE}} | |
| build-and-push-processor: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Login to dockerhub | |
| run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login docker.io -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin | |
| - name: Build the processor image | |
| run: docker build -f deploy/processor/Dockerfile -t docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.PROCESSOR_IMAGE}} . | |
| - name: Push the processor image | |
| run: docker push docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.PROCESSOR_IMAGE}} | |
| build-and-push-grpc-server: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Login to dockerhub | |
| run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login docker.io -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin | |
| - name: Build the server image | |
| run: docker build -f deploy/server/Dockerfile -t docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.GRPC_SERVER_IMAGE}} . | |
| - name: Push the server image | |
| run: docker push docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.GRPC_SERVER_IMAGE}} | |
| build-and-push-grpc-client: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Login to dockerhub | |
| run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login docker.io -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin | |
| - name: Build the client image | |
| run: docker build -f deploy/client/Dockerfile -t docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.GRPC_CLIENT_IMAGE}} . | |
| - name: Push the client image | |
| run: docker push docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{env.GRPC_CLIENT_IMAGE}} | |
| update-image-tags-in-gitops-repo: | |
| needs: [build-and-push-producer, build-and-push-processor, build-and-push-grpc-server, build-and-push-grpc-client] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout gitops repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: ${{ env.GITOPS_REPO }} | |
| token: ${{ secrets.REPO_PAT }} | |
| - name: Update image tags in values.yaml based on env specification | |
| run: | | |
| sed -i -r 's/grpc-client:(.)+/grpc-client:${{env.GRPC_CLIENT_IMAGE}}/g' values.yaml | |
| sed -i -r 's/grpc-server:(.)+/grpc-server:${{env.GRPC_SERVER_IMAGE}}/g' values.yaml | |
| sed -i -r 's/processor:(.)+/processor:${{env.PROCESSOR_IMAGE}}/g' values.yaml | |
| sed -i -r 's/producer:(.)+/producer:${{env.PRODUCER_IMAGE}}/g' values.yaml | |
| - name: Commit and push changes | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add values.yaml | |
| git commit -m "Update image tags in values.yaml" | |
| git push |