214 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
| name: (gha) Publish Helm Charts
 | |
| 
 | |
| on:
 | |
|   workflow_dispatch:
 | |
|     inputs:
 | |
|       ref:
 | |
|         description: "The branch, tag or SHA to cut a release from"
 | |
|         required: false
 | |
|         type: string
 | |
|         default: ""
 | |
|       release_tag_name:
 | |
|         description: "The name to tag the controller image with"
 | |
|         required: true
 | |
|         type: string
 | |
|         default: "canary"
 | |
|       push_to_registries:
 | |
|         description: "Push images to registries"
 | |
|         required: true
 | |
|         type: boolean
 | |
|         default: false
 | |
|       publish_gha_runner_scale_set_controller_chart:
 | |
|         description: "Publish new helm chart for gha-runner-scale-set-controller"
 | |
|         required: true
 | |
|         type: boolean
 | |
|         default: false
 | |
|       publish_gha_runner_scale_set_chart:
 | |
|         description: "Publish new helm chart for gha-runner-scale-set"
 | |
|         required: true
 | |
|         type: boolean
 | |
|         default: false
 | |
| 
 | |
| env:
 | |
|   HELM_VERSION: v3.8.0
 | |
| 
 | |
| permissions:
 | |
|   packages: write
 | |
| 
 | |
| concurrency:
 | |
|   group: ${{ github.workflow }}
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| jobs:
 | |
|   build-push-image:
 | |
|     name: Build and push controller image
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           # If inputs.ref is empty, it'll resolve to the default branch
 | |
|           ref: ${{ inputs.ref }}
 | |
| 
 | |
|       - name: Check chart versions
 | |
|         # Binary version and chart versions need to match.
 | |
|         # In case of an upgrade, the controller will try to clean up
 | |
|         # resources with older versions that should have been cleaned up
 | |
|         # during the upgrade process
 | |
|         run: ./hack/check-gh-chart-versions.sh ${{ inputs.release_tag_name }}
 | |
| 
 | |
|       - name: Resolve parameters
 | |
|         id: resolve_parameters
 | |
|         run: |
 | |
|           resolvedRef="${{ inputs.ref }}"
 | |
|           if [ -z "$resolvedRef" ]
 | |
|           then
 | |
|             resolvedRef="${{ github.ref }}"
 | |
|           fi
 | |
|           echo "resolved_ref=$resolvedRef" >> $GITHUB_OUTPUT
 | |
|           echo "INFO: Resolving short SHA for $resolvedRef"
 | |
|           echo "short_sha=$(git rev-parse --short $resolvedRef)" >> $GITHUB_OUTPUT
 | |
|           echo "INFO: Normalizing repository name (lowercase)"
 | |
|           echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT          
 | |
| 
 | |
|       - name: Set up QEMU
 | |
|         # https://github.com/docker/setup-qemu-action/releases/tag/v3.6.0
 | |
|         uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392
 | |
| 
 | |
|       - name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2
 | |
|         with:
 | |
|           # Pinning v0.9.1 for Buildx and BuildKit v0.10.6
 | |
|           # BuildKit v0.11 which has a bug causing intermittent
 | |
|           # failures pushing images to GHCR
 | |
|           version: v0.9.1
 | |
|           driver-opts: image=moby/buildkit:v0.10.6
 | |
| 
 | |
|       - name: Login to GitHub Container Registry
 | |
|         # https://github.com/docker/login-action/releases/tag/v3.4.0
 | |
|         uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
 | |
|         with:
 | |
|           registry: ghcr.io
 | |
|           username: ${{ github.actor }}
 | |
|           password: ${{ secrets.GITHUB_TOKEN }}
 | |
| 
 | |
|       - name: Build & push controller image
 | |
|         # https://github.com/docker/build-push-action/releases/tag/v6.18.0
 | |
|         uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
 | |
|         with:
 | |
|           file: Dockerfile
 | |
|           platforms: linux/amd64,linux/arm64
 | |
|           build-args: VERSION=${{ inputs.release_tag_name }}
 | |
|           push: ${{ inputs.push_to_registries }}
 | |
|           tags: |
 | |
|             ghcr.io/${{ steps.resolve_parameters.outputs.repository_owner }}/gha-runner-scale-set-controller:${{ inputs.release_tag_name }}
 | |
|             ghcr.io/${{ steps.resolve_parameters.outputs.repository_owner }}/gha-runner-scale-set-controller:${{ inputs.release_tag_name }}-${{ steps.resolve_parameters.outputs.short_sha }}            
 | |
| 
 | |
|       - name: Job summary
 | |
|         run: |
 | |
|           echo "The [gha-publish-chart.yaml](https://github.com/actions/actions-runner-controller/blob/main/.github/workflows/gha-publish-chart.yaml) workflow run was completed successfully!" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "**Parameters:**" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Ref: ${{ steps.resolve_parameters.outputs.resolvedRef }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Short SHA: ${{ steps.resolve_parameters.outputs.short_sha }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Release tag: ${{ inputs.release_tag_name }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Push to registries: ${{ inputs.push_to_registries }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "" >> $GITHUB_STEP_SUMMARY          
 | |
| 
 | |
|   publish-helm-chart-gha-runner-scale-set-controller:
 | |
|     if: ${{ inputs.publish_gha_runner_scale_set_controller_chart == true }}
 | |
|     needs: build-push-image
 | |
|     name: Publish Helm chart for gha-runner-scale-set-controller
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           # If inputs.ref is empty, it'll resolve to the default branch
 | |
|           ref: ${{ inputs.ref }}
 | |
| 
 | |
|       - name: Resolve parameters
 | |
|         id: resolve_parameters
 | |
|         run: |
 | |
|           resolvedRef="${{ inputs.ref }}"
 | |
|           if [ -z "$resolvedRef" ]
 | |
|           then
 | |
|             resolvedRef="${{ github.ref }}"
 | |
|           fi
 | |
|           echo "INFO: Resolving short SHA for $resolvedRef"
 | |
|           echo "short_sha=$(git rev-parse --short $resolvedRef)" >> $GITHUB_OUTPUT
 | |
|           echo "INFO: Normalizing repository name (lowercase)"
 | |
|           echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT          
 | |
| 
 | |
|       - name: Set up Helm
 | |
|         # Using https://github.com/Azure/setup-helm/releases/tag/v4.2.0
 | |
|         uses: azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814
 | |
|         with:
 | |
|           version: ${{ env.HELM_VERSION }}
 | |
| 
 | |
|       - name: Publish new helm chart for gha-runner-scale-set-controller
 | |
|         run: |
 | |
|           echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin
 | |
|           GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG=$(cat charts/gha-runner-scale-set-controller/Chart.yaml | grep version: | cut -d " " -f 2)
 | |
|           echo "GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG=${GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG}" >> $GITHUB_ENV
 | |
|           helm package charts/gha-runner-scale-set-controller/ --version="${GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG}"
 | |
|           helm push gha-runner-scale-set-controller-"${GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG}".tgz oci://ghcr.io/${{ steps.resolve_parameters.outputs.repository_owner }}/actions-runner-controller-charts          
 | |
| 
 | |
|       - name: Job summary
 | |
|         run: |
 | |
|           echo "New helm chart for gha-runner-scale-set-controller published successfully!" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "**Parameters:**" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Ref: ${{ steps.resolve_parameters.outputs.resolvedRef }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Short SHA: ${{ steps.resolve_parameters.outputs.short_sha }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- gha-runner-scale-set-controller Chart version: ${{ env.GHA_RUNNER_SCALE_SET_CONTROLLER_CHART_VERSION_TAG }}" >> $GITHUB_STEP_SUMMARY          
 | |
| 
 | |
|   publish-helm-chart-gha-runner-scale-set:
 | |
|     if: ${{ inputs.publish_gha_runner_scale_set_chart == true }}
 | |
|     needs: build-push-image
 | |
|     name: Publish Helm chart for gha-runner-scale-set
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|         with:
 | |
|           # If inputs.ref is empty, it'll resolve to the default branch
 | |
|           ref: ${{ inputs.ref }}
 | |
| 
 | |
|       - name: Resolve parameters
 | |
|         id: resolve_parameters
 | |
|         run: |
 | |
|           resolvedRef="${{ inputs.ref }}"
 | |
|           if [ -z "$resolvedRef" ]
 | |
|           then
 | |
|             resolvedRef="${{ github.ref }}"
 | |
|           fi
 | |
|           echo "INFO: Resolving short SHA for $resolvedRef"
 | |
|           echo "short_sha=$(git rev-parse --short $resolvedRef)" >> $GITHUB_OUTPUT
 | |
|           echo "INFO: Normalizing repository name (lowercase)"
 | |
|           echo "repository_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT          
 | |
| 
 | |
|       - name: Set up Helm
 | |
|         # Using https://github.com/Azure/setup-helm/releases/tag/v4.2.0
 | |
|         uses: azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814
 | |
|         with:
 | |
|           version: ${{ env.HELM_VERSION }}
 | |
| 
 | |
|       - name: Publish new helm chart for gha-runner-scale-set
 | |
|         run: |
 | |
|           echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin
 | |
| 
 | |
|           GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG=$(cat charts/gha-runner-scale-set/Chart.yaml | grep version: | cut -d " " -f 2)
 | |
|           echo "GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG=${GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG}" >> $GITHUB_ENV
 | |
|           helm package charts/gha-runner-scale-set/ --version="${GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG}"
 | |
|           helm push gha-runner-scale-set-"${GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG}".tgz oci://ghcr.io/${{ steps.resolve_parameters.outputs.repository_owner }}/actions-runner-controller-charts          
 | |
| 
 | |
|       - name: Job summary
 | |
|         run: |
 | |
|           echo "New helm chart for gha-runner-scale-set published successfully!" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "**Parameters:**" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Ref: ${{ steps.resolve_parameters.outputs.resolvedRef }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- Short SHA: ${{ steps.resolve_parameters.outputs.short_sha }}" >> $GITHUB_STEP_SUMMARY
 | |
|           echo "- gha-runner-scale-set Chart version: ${{ env.GHA_RUNNER_SCALE_SET_CHART_VERSION_TAG }}" >> $GITHUB_STEP_SUMMARY          
 |