1010 branches :
1111 - main
1212 - master
13+ # TODO remove these need to be added to individual repositories
14+ - ' \d+.\d+.\d+'
15+ - ' \d+.\d+'
16+ - ' \d+.x'
17+ tags :
18+ - ' v?\d+.\d+.\d+'
19+ - ' v?\d+.\d+'
1320 workflow_call :
1421 inputs :
1522 strict :
@@ -44,6 +51,44 @@ permissions:
4451 pull-requests : read
4552
4653jobs :
54+ match :
55+ if : github.event.repository.fork == false # Skip running the job on the fork itself (It still runs on PRs on the upstream from forks)
56+ concurrency :
57+ group : ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref }}
58+ cancel-in-progress : ${{ startsWith(github.event_name, 'pull_request') }}
59+ runs-on : ubuntu-latest
60+ outputs :
61+ content-source-match : ${{ steps.event-check.outputs.content-source-match != '' && steps.event-check.outputs.content-source-match || steps.match.outputs.content-source-match }}
62+ content-source-next : ${{ steps.event-check.outputs.content-source-next != '' && steps.event-check.outputs.content-source-next || steps.match.outputs.content-source-next }}
63+ content-source-current : ${{ steps.event-check.outputs.content-source-current != '' && steps.event-check.outputs.content-source-current || steps.match.outputs.content-source-current }}
64+ content-source-speculative : ${{ steps.event-check.outputs.content-source-speculative != '' && steps.event-check.outputs.content-source-speculative || steps.match.outputs.content-source-speculative }}
65+ steps :
66+ - name : Not a push event
67+ id : event-check
68+ if : contains(fromJSON('["merge_group", "pull_request", "pull_request_target"]'), github.event_name)
69+ # we always want to run for pull requests, but we do not want to indicate its either content source
70+ run : |
71+ echo "content-source-match=true" >> $GITHUB_OUTPUT
72+ echo "content-source-next=false" >> $GITHUB_OUTPUT
73+ echo "content-source-current=false" >> $GITHUB_OUTPUT
74+ echo "content-source-speculative=false" >> $GITHUB_OUTPUT
75+ - name : Match for push events
76+ id : match
77+ if : contains(fromJSON('["push"]'), github.event_name)
78+ uses : elastic/docs-builder/actions/assembler-match@main
79+ with :
80+ ref_name : ${{ github.ref_name }}
81+ repository : ${{ github.repository }}
82+ - name : Debug
83+ run : |
84+ echo "Non sensitive data, echo'ing here temporarily to validate this job before connecting it further into the build job"
85+ echo "content-source-match=${{ steps.event-check.outputs.content-source-match != '' && steps.event-check.outputs.content-source-match || steps.match.outputs.content-source-match }}"
86+ echo "content-source-next=${{ steps.event-check.outputs.content-source-next != '' && steps.event-check.outputs.content-source-next || steps.match.outputs.content-source-next }}"
87+ echo "content-source-current=${{ steps.event-check.outputs.content-source-current != '' && steps.event-check.outputs.content-source-current || steps.match.outputs.content-source-current }}"
88+ echo "content-source-speculative=${{ steps.event-check.outputs.content-source-speculative != '' && steps.event-check.outputs.content-source-speculative || steps.match.outputs.content-source-speculative }}"
89+ echo "ref=${{ github.ref_name }}"
90+ echo "repo=${{ github.repository }}"
91+
4792 build :
4893 if : github.event.repository.fork == false # Skip running the job on the fork itself (It still runs on PRs on the upstream from forks)
4994 concurrency :
@@ -52,30 +97,36 @@ jobs:
5297 runs-on : ubuntu-latest
5398 env :
5499 GITHUB_PR_REF_NAME : ${{ github.event.pull_request.head.ref }}
100+ MATCH : ${{ needs.match.outputs.content-source-match }}
101+ needs : [ match ]
55102 steps :
56103
57104 - name : Checkout
58- if : contains(fromJSON('["push", "merge_group", "workflow_dispatch"]'), github.event_name)
105+ if : env.MATCH == 'true' && ( contains(fromJSON('["push", "merge_group", "workflow_dispatch"]'), github.event_name) )
59106 uses : actions/checkout@v4
60107 with :
61108 ref : ${{ github.event.pull_request.head.sha || github.ref }}
62109
63110 - name : Get changed files
64- if : contains(fromJSON('["merge_group", "pull_request", "pull_request_target"]'), github.event_name)
111+ if : env.MATCH == 'true' && ( contains(fromJSON('["merge_group", "pull_request", "pull_request_target"]'), github.event_name) )
65112 id : check-files
66113 uses : tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32 # v46.0.1
67114 with :
68115 files : ${{ inputs.path-pattern != '' && inputs.path-pattern || '**' }}
69116
70117 - name : Checkout
71- if : startsWith(github.event_name, 'pull_request') && steps.check-files.outputs.any_modified == 'true'
118+ if : env.MATCH == 'true' && ( startsWith(github.event_name, 'pull_request') && steps.check-files.outputs.any_modified == 'true')
72119 uses : actions/checkout@v4
73120 with :
74121 ref : ${{ github.event.pull_request.head.sha || github.ref }}
75122 persist-credentials : false
76123
77124 - name : Create Deployment
78- if : contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name) || (steps.check-files.outputs.any_modified == 'true' && startsWith(github.event_name, 'pull_request'))
125+ if : |
126+ env.MATCH == 'true' &&
127+ (contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name)
128+ || (steps.check-files.outputs.any_modified == 'true' && startsWith(github.event_name, 'pull_request'))
129+ )
79130 uses : actions/github-script@v7
80131 id : deployment
81132 env :
@@ -108,7 +159,7 @@ jobs:
108159 return deployment.data.id
109160
110161 - name : Generate env.PATH_PREFIX
111- if : steps.deployment.outputs.result
162+ if : env.MATCH == 'true' && ( steps.deployment.outputs.result)
112163 env :
113164 PR_NUMBER : ${{ github.event.pull_request.number }}
114165 GITHUB_REF_NAME : ${{ github.ref_name }}
@@ -119,10 +170,6 @@ jobs:
119170 ;;
120171 "push" | "workflow_dispatch")
121172 echo "PATH_PREFIX=/${GITHUB_REPOSITORY}/tree/${GITHUB_REF_NAME}" >> $GITHUB_ENV
122- if [[ ! "${GITHUB_REF_NAME}" =~ ^(main|master|16\.x)$ ]]; then
123- echo "Unsupported ref name: '${GITHUB_REF_NAME}'";
124- exit 1;
125- fi
126173 ;;
127174 *)
128175 echo "Unsupported event: '${GITHUB_EVENT_NAME}'";
@@ -131,18 +178,22 @@ jobs:
131178 esac
132179
133180 - name : Bootstrap Action Workspace
134- if : github.repository == 'elastic/docs-builder' && steps.deployment.outputs.result
181+ if : env.MATCH == 'true' && ( github.repository == 'elastic/docs-builder' && steps.deployment.outputs.result)
135182 uses : elastic/docs-builder/.github/actions/bootstrap@main
136183
137- # we run our artifact directly please use the prebuild
184+ # we run our artifact directly, please use the prebuild
138185 # elastic/docs-builder@main GitHub Action for all other repositories!
139186 - name : Build documentation
140- if : github.repository == 'elastic/docs-builder' && steps.deployment.outputs.result
187+ if : env.MATCH == 'true' && ( github.repository == 'elastic/docs-builder' && steps.deployment.outputs.result)
141188 run : |
142- dotnet run --project src/docs-builder -- --strict --path-prefix "${PATH_PREFIX}"
189+ dotnet run --project src/tooling/ docs-builder -- --strict --path-prefix "${PATH_PREFIX}"
143190
144191 - name : Build documentation
145- if : github.repository != 'elastic/docs-builder' && (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group'))
192+ if : |
193+ env.MATCH == 'true' &&
194+ (github.repository != 'elastic/docs-builder' &&
195+ (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group'))
196+ )
146197 uses : elastic/docs-builder@main
147198 id : docs-build
148199 continue-on-error : ${{ fromJSON(inputs.continue-on-error != '' && inputs.continue-on-error || 'false') }}
@@ -152,36 +203,50 @@ jobs:
152203 metadata-only : ${{ fromJSON(inputs.metadata-only != '' && inputs.metadata-only || 'true') }}
153204
154205 - name : ' Validate inbound links'
155- if : ${{ !cancelled() && steps.docs-build.outputs.skip != 'true' && (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group')) }}
206+ if : |
207+ env.MATCH == 'true' &&
208+ (!cancelled() && steps.docs-build.outputs.skip != 'true'
209+ && (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group'))
210+ )
156211 uses : elastic/docs-builder/actions/validate-inbound-local@main
157212
158213 - name : ' Validate local path prefixes against those claimed by global navigation.yml'
159- if : ${{ !cancelled() && steps.docs-build.outputs.skip != 'true' && (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group')) }}
214+ if : |
215+ env.MATCH == 'true' &&
216+ (!cancelled() && steps.docs-build.outputs.skip != 'true' &&
217+ (steps.deployment.outputs.result || (steps.check-files.outputs.any_modified == 'true' && github.event_name == 'merge_group'))
218+ )
160219 uses : elastic/docs-builder/actions/validate-path-prefixes-local@main
161220
162221 - uses : elastic/docs-builder/.github/actions/aws-auth@main
163222 if : ${{ !cancelled() && steps.docs-build.outputs.skip != 'true' && steps.deployment.outputs.result }}
164223
165224 - name : Upload to S3
166225 id : s3-upload
167- if : ${{ !cancelled() && steps.docs-build.outputs.skip != 'true' && steps.deployment.outputs.result }}
226+ if : |
227+ env.MATCH == 'true' &&
228+ (!cancelled() && steps.docs-build.outputs.skip != 'true' && steps.deployment.outputs.result)
168229 run : |
169230 aws s3 sync .artifacts/docs/html "s3://elastic-docs-v3-website-preview${PATH_PREFIX}" --delete --no-follow-symlinks
170231 aws cloudfront create-invalidation \
171232 --distribution-id EKT7LT5PM8RKS \
172233 --paths "${PATH_PREFIX}" "${PATH_PREFIX}/*"
173234
174235 - name : Update Link Index
175- if : contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name) && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && steps.s3-upload.outcome == 'success'
236+ if : |
237+ env.MATCH == 'true' &&
238+ (contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name)
239+ && (
240+ needs.match.outputs.content-source-current == 'true'
241+ || needs.match.outputs.content-source-next == 'true'
242+ || needs.match.outputs.content-source-speculative == 'true'
243+ )
244+ && steps.s3-upload.outcome == 'success')
176245 uses : elastic/docs-builder/actions/update-link-index@main
177246
178- - name : Update Reference Index
179- if : contains(fromJSON('["push", "workflow_dispatch"]'), github.event_name) && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && steps.s3-upload.outcome == 'success'
180- uses : elastic/docs-builder/actions/update-reference-index@main
181-
182247 - name : Update deployment status
183248 uses : actions/github-script@v7
184- if : always() && steps.deployment.outputs.result
249+ if : env.MATCH == 'true' && ( always() && steps.deployment.outputs.result)
185250 env :
186251 PR_NUMBER : ${{ github.event.pull_request.number }}
187252 LANDING_PAGE_PATH : ${{ steps.docs-build.outputs.landing-page-path || env.PATH_PREFIX }}
0 commit comments