mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	[QT-517] Skip builds for docs PRs (#20036)
* [QT-517] Skip builds for docs changes Signed-off-by: Jaymala Sinha <jaymala@hashicorp.com> * [QT-545] Enable Enos tests to also run on forked PRs Signed-off-by: Jaymala Sinha <jaymala@hashicorp.com> * Add comments and fix CI errors Signed-off-by: Jaymala Sinha <jaymala@hashicorp.com> --------- Signed-off-by: Jaymala Sinha <jaymala@hashicorp.com>
This commit is contained in:
		
							
								
								
									
										32
									
								
								.github/scripts/verify_changes.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								.github/scripts/verify_changes.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | #  This script validates if the git diff contains on docs changes | ||||||
|  |  | ||||||
|  | event_type=$1 # GH event type (pull_request) | ||||||
|  | ref_name=$2 # branch reference that triggered the workflow | ||||||
|  | head_ref=$3 # PR branch head ref | ||||||
|  | base_ref=$4 # PR branch base ref | ||||||
|  |  | ||||||
|  | changed_dir="" | ||||||
|  |  | ||||||
|  | if [[ "$event_type" == "pull_request" ]]; then | ||||||
|  |   git fetch --no-tags --prune origin $head_ref | ||||||
|  |   git fetch --no-tags --prune origin $base_ref | ||||||
|  |   head_commit="origin/$head_ref" | ||||||
|  |   prev_commit="origin/$base_ref" | ||||||
|  | else | ||||||
|  |   git fetch --no-tags --prune origin $ref_name | ||||||
|  |   head_commit=$(git log origin/$ref_name --oneline | head -1 | awk '{print $1}') | ||||||
|  |   prev_commit=$(git log origin/$ref_name --oneline | head -2 | awk 'NR==2 {print $1}') | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | change_count=$(git diff $head_commit..$prev_commit --name-only | awk -F"/" '{ print $1}' | uniq | wc -l) | ||||||
|  |  | ||||||
|  | if [[ $change_count -eq 1 ]]; then | ||||||
|  |   changed_dir=$(git diff $head_commit..$prev_commit --name-only | awk -F"/" '{ print $1}' | uniq) | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [[ "$changed_dir" == "website" ]]; then | ||||||
|  |   echo "is_docs_change=true" >> "$GITHUB_OUTPUT" | ||||||
|  | else | ||||||
|  |   echo "is_docs_change=false" >> "$GITHUB_OUTPUT" | ||||||
|  | fi | ||||||
							
								
								
									
										37
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -10,8 +10,29 @@ on: | |||||||
|       - release/** |       - release/** | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   product-metadata: |   # verify-changes determines if the changes are only for docs (website) | ||||||
|  |   verify-changes: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |     outputs: | ||||||
|  |       is_docs_change: ${{ steps.get-changeddir.outputs.is_docs_change }} | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v3 | ||||||
|  |       - name: Get changed directories | ||||||
|  |         id: get-changeddir | ||||||
|  |         env: | ||||||
|  |           TYPE: ${{ github.event_name }} | ||||||
|  |           REF_NAME: ${{ github.ref_name }} | ||||||
|  |           HEAD_REF: ${{ github.head_ref }} | ||||||
|  |           BASE: ${{ github.base_ref }} | ||||||
|  |         run: ./.github/scripts/verify_changes.sh ${{ env.TYPE }} ${{ env.REF_NAME }} ${{ env.HEAD_REF }} ${{ env.BASE }} | ||||||
|  |  | ||||||
|  |   product-metadata: | ||||||
|  |     # do not run build and test steps for docs changes | ||||||
|  |     # Following https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/troubleshooting-required-status-checks#handling-skipped-but-required-checks | ||||||
|  |     # we conditionally skip the build and tests for docs(website) changes | ||||||
|  |     if: ${{ needs.verify-changes.outputs.is_docs_change == 'false' }} | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     needs: verify-changes | ||||||
|     outputs: |     outputs: | ||||||
|       build-date: ${{ steps.get-metadata.outputs.build-date }} |       build-date: ${{ steps.get-metadata.outputs.build-date }} | ||||||
|       filepath: ${{ steps.generate-metadata-file.outputs.filepath }} |       filepath: ${{ steps.generate-metadata-file.outputs.filepath }} | ||||||
| @@ -155,13 +176,6 @@ jobs: | |||||||
|  |  | ||||||
|   test: |   test: | ||||||
|     name: Test ${{ matrix.build-artifact-name }} |     name: Test ${{ matrix.build-artifact-name }} | ||||||
|     # Only run the Enos workflow against branches that are created from the |  | ||||||
|     # hashicorp/vault repository. This has the effect of limiting execution of |  | ||||||
|     # Enos scenarios to branches that originate from authors that have write |  | ||||||
|     # access to hashicorp/vault repository. This is required as Github Actions |  | ||||||
|     # will not populate the required secrets for branches created by outside |  | ||||||
|     # contributors in order to protect the secrets integrity. |  | ||||||
|     if: "! github.event.pull_request.head.repo.fork" |  | ||||||
|     needs: |     needs: | ||||||
|       - product-metadata |       - product-metadata | ||||||
|       - build-linux |       - build-linux | ||||||
| @@ -185,13 +199,6 @@ jobs: | |||||||
|  |  | ||||||
|   test-docker-k8s: |   test-docker-k8s: | ||||||
|     name: Test Docker K8s |     name: Test Docker K8s | ||||||
|     # Only run the Enos workflow against branches that are created from the |  | ||||||
|     # hashicorp/vault repository. This has the effect of limiting execution of |  | ||||||
|     # Enos scenarios to branches that originate from authors that have write |  | ||||||
|     # access to hashicorp/vault repository. This is required as Github Actions |  | ||||||
|     # will not populate the required secrets for branches created by outside |  | ||||||
|     # contributors in order to protect the secrets integrity. |  | ||||||
|     if: "! github.event.pull_request.head.repo.fork" |  | ||||||
|     needs: |     needs: | ||||||
|       - product-metadata |       - product-metadata | ||||||
|       - build-docker |       - build-docker | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaymala
					Jaymala