name: CI/CD on: push: branches: [main] tags: ['v*'] env: REGISTRY: ${{ secrets.REGISTRY_URL }} REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} IMAGE_NAME: ${{ secrets.REGISTRY_URL }}/infra/infra-report CHART_NAME: infra-report jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set image tag id: tag run: | if [[ "${GITHUB_REF}" == refs/tags/* ]]; then echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV else echo "TAG=sha-$(echo ${GITHUB_SHA} | cut -c1-7)" >> $GITHUB_ENV fi - name: Login to Harbor run: | echo "${{ env.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u ${{ env.REGISTRY_USER }} --password-stdin - name: Build and push Docker image run: | docker build -t ${{ env.IMAGE_NAME }}:${{ env.TAG }} . docker tag ${{ env.IMAGE_NAME }}:${{ env.TAG }} ${{ env.IMAGE_NAME }}:latest docker push ${{ env.IMAGE_NAME }}:${{ env.TAG }} docker push ${{ env.IMAGE_NAME }}:latest - name: Install Helm run: | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - name: Package Helm chart run: | sed -i "s/appVersion: .*/appVersion: \"${{ env.TAG }}\"/" charts/infra-report/Chart.yaml helm package charts/infra-report --version 0.1.0 --app-version ${{ env.TAG }} - name: Push Helm chart to Harbor (OCI) run: | echo "${{ env.REGISTRY_PASSWORD }}" | helm registry login ${{ env.REGISTRY }} -u ${{ env.REGISTRY_USER }} --password-stdin helm push ${CHART_NAME}-0.1.0.tgz oci://${{ env.REGISTRY }}/infra