@@ -190,18 +190,22 @@ jobs:
190190 runs-on : ubuntu-22.04
191191 needs : [setup, validate-submission]
192192
193- if : ${{ always() }}
194-
195193 outputs :
196194 report_content : ${{ steps.check_report.outputs.report_content }}
197195 redhat_to_community : ${{ steps.check_report.outputs.redhat_to_community }}
198- message_file : ${{ steps.pr_comment.outputs.message-file }}
199- message_text_base64 : ${{ steps.encode_pr_comment.outputs.message-text-base64 }}
196+ # message_file: ${{ steps.pr_comment.outputs.message-file }}
197+ # message_text_base64: ${{ steps.encode_pr_comment.outputs.message-text-base64 }}
200198 # web_catalog_only: ${{ steps.check_pr_content.outputs.web_catalog_only }}
201199 # chart_entry_name: ${{ steps.check_pr_content.outputs.chart-entry-name }}
202200 # release_tag: ${{ steps.check_pr_content.outputs.release_tag }}
203201 # ocp-version-range: ${{ steps.get-ocp-range.outputs.ocp-version-range }}
204202
203+ community_manual_review_required : ${{ steps.check_report.outputs.community_manual_review_required }}
204+ install-oc-outcome : ${{ steps.install-oc.outcome }}
205+ verifier_error_message : ${{ steps.check-verifier-result.outputs.verifier_error_message }}
206+ run-verifier-outcome : ${{ steps.run-verifier.outcome }}
207+ check_report-outcome : ${{ steps.check_report.outcome }}
208+ ocp-version-range : ${{ steps.get-ocp-range.outputs.ocp-version-range }}
205209
206210 steps :
207211 - name : Checkout
@@ -231,13 +235,12 @@ jobs:
231235
232236 - name : Download submission information
233237 uses : actions/download-artifact@v4
234- if : ${{ ! contains(join(needs.*.result, ','), 'failure') }}
235238 with :
236239 name : submission
237240
238241 - name : Remove 'authorized-request' label from PR
239242 uses : actions/github-script@v7
240- if : ${{ needs.setup.outputs.run_build == 'true' && contains( github.event.pull_request.labels.*.name, 'authorized-request') && ! contains(join(needs.*.result, ','), 'failure') }}
243+ if : ${{ needs.setup.outputs.run_build == 'true' && contains( github.event.pull_request.labels.*.name, 'authorized-request') }}
241244 continue-on-error : true
242245 with :
243246 github-token : ${{ secrets.GITHUB_TOKEN }}
@@ -252,15 +255,14 @@ jobs:
252255
253256 - name : install chart verifier for action
254257 uses : redhat-actions/openshift-tools-installer@v1
255- if : ${{ ! contains(join(needs.*.result, ','), 'failure') }}
256258 with :
257259 source : github
258260 skip_cache : true
259261 chart-verifier : " ${{ needs.setup.outputs.verifier-action-image }}"
260262
261263 # TODO: check what needs to stay here vs what could go to validate-submission
262264 - name : determine verify requirements
263- if : ${{ needs.setup.outputs.run_build == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
265+ if : ${{ needs.setup.outputs.run_build == 'true' }}
264266 id : verify_requires
265267 env :
266268 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
@@ -270,30 +272,30 @@ jobs:
270272
271273 - name : Install oc
272274 id : install-oc
273- if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
275+ if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' }}
274276 uses : redhat-actions/openshift-tools-installer@v1
275277 with :
276278 oc : latest
277279
278280 - name : Set cluster login params
279281 id : login-params
280- if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
282+ if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' }}
281283 run : |
282284 #calculate cluster params
283285 API_SERVER=$( echo -n ${{ secrets.API_SERVER }} | base64 -d)
284286 echo "API_SERVER=${API_SERVER}" >> $GITHUB_OUTPUT
285287
286288 - uses : redhat-actions/oc-login@v1
287289 id : oc_login
288- if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
290+ if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' }}
289291 with :
290292 openshift_server_url : ${{ steps.login-params.outputs.API_SERVER }}
291293 openshift_token : ${{ secrets.CLUSTER_TOKEN }}
292294 insecure_skip_tls_verify : ${{ needs.setup.outputs.insecure_skip_tls_verify }}
293295
294296 - name : create service account
295297 id : create_service_account
296- if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
298+ if : ${{ steps.verify_requires.outputs.cluster_needed == 'true' }}
297299 env :
298300 API_SERVER : ${{ steps.login-params.outputs.API_SERVER }}
299301 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
@@ -304,7 +306,7 @@ jobs:
304306
305307 - uses : redhat-actions/chart-verifier@v1
306308 id : run-verifier
307- if : ${{ steps.verify_requires.outputs.report_needed == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
309+ if : ${{ steps.verify_requires.outputs.report_needed == 'true' }}
308310 with :
309311 chart_uri : ${{ steps.verify_requires.outputs.verify_uri }}
310312 verify_args : ${{ steps.verify_requires.outputs.verify_args }}
@@ -313,43 +315,44 @@ jobs:
313315
314316 - name : check-verifier-result
315317 id : check-verifier-result
316- if : ${{ always() && steps.run-verifier.outcome == 'failure' && ! contains(join(needs.*.result, ','), 'failure') }}
318+ if : ${{ always() && steps.run-verifier.outcome == 'failure' }}
317319 run : |
318320 error_message="The chart verifier returned an error when trying to obtain a verification report for the chart."
319321 echo "verifier_error_message=$error_message" >> $GITHUB_OUTPUT
320322
321323 - name : Get profile version set in report provided by the user
322324 id : get-profile-version
323- if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
325+ if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' }}
324326 uses : mikefarah/yq@master
325327 with :
326328 cmd : yq '.metadata.tool.profile.version' ${{ format('./pr-branch/{0}', steps.verify_requires.outputs.provided_report_relative_path) }}
327329
328330 - name : Get the range of Kubernetes versions set in the report provided by the user
329331 id : get-kube-range
330- if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
332+ if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' }}
331333 continue-on-error : true
332334 uses : mikefarah/yq@master
333335 with :
334336 cmd : yq '.metadata.chart.kubeversion' ${{ format('./pr-branch/{0}', steps.verify_requires.outputs.provided_report_relative_path) }}
335337
336338 - name : Get the corresponding range of OCP versions
337339 id : get-ocp-range
338- if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
340+ if : ${{ needs.setup.outputs.run_build == 'true' && steps.verify_requires.outputs.report_provided == 'true' }}
339341 continue-on-error : true
340342 uses : ./.github/actions/get-ocp-range
341343 with :
342344 kube-version-range : ${{ steps.get-kube-range.outputs.result }}
343345
344346 - name : Only ignore errors in get-ocp-range for profile in version v1.0
345- if : ${{ (steps.get-kube-range.outcome == 'failure' || steps.get-ocp-range.outcome == 'failure') && steps.get-profile-version.outputs.result != 'v1.0' && ! contains(join(needs.*.result, ','), 'failure') }}
347+ if : ${{ (steps.get-kube-range.outcome == 'failure' || steps.get-ocp-range.outcome == 'failure') && steps.get-profile-version.outputs.result != 'v1.0' }}
346348 run : |
347349 echo "::error file=.github/workflows/build.yaml::Failure in get-ocp-range, mandatory for profile version ${{ steps.get-profile-version.outputs.result }}"
348350 exit 1
349351
352+ # check the report that was generated when running chart-verifier / or provided by PR ??
350353 - name : Check Report
351354 id : check_report
352- if : ${{ needs.setup.outputs.run_build == 'true' && ! contains(join(needs.*.result, ','), 'failure') }}
355+ if : ${{ needs.setup.outputs.run_build == 'true' }}
353356 env :
354357 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
355358 VENDOR_TYPE : ${{ needs.validate-submission.outputs.category }}
@@ -370,55 +373,91 @@ jobs:
370373 cd ..
371374
372375 - name : Delete Namespace
373- if : ${{ always() && steps.oc_login.conclusion == 'success' && ! contains(join(needs.*.result, ','), 'failure') }}
376+ if : ${{ always() && steps.oc_login.conclusion == 'success' }}
374377 env :
375378 KUBECONFIG : /tmp/ci-kubeconfig
376379 run : |
377380 API_SERVER=$( echo -n ${{ secrets.API_SERVER }} | base64 -d)
378381 oc login --token=${{ secrets.CLUSTER_TOKEN }} --server=${API_SERVER} --insecure-skip-tls-verify=${{ needs.setup.outputs.insecure_skip_tls_verify }}
379382 ve1/bin/sa-for-chart-testing --delete charts-${{ github.event.number }}
380383
381- # TODO
384+ # TODO: test remove altogether: rght now only ensure report.yaml file exists
382385 - name : Save PR artifact
383386 env :
384387 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
385388 if : ${{ always() && needs.setup.outputs.run_build == 'true' }}
386389 run : |
387390 ve1/bin/pr-artifact --directory=./pr --pr-number=${{ github.event.number }} --api-url=${{ github.event.pull_request._links.self.href }}
388391
389- # manage-gh-pr:
390- # name: Comment and merge PR
391- # runs-on: ubuntu-22.04
392- # needs: [setup, validate-submission, chart-verifier]
392+ manage-gh-pr :
393+ name : Comment and merge PR
394+ runs-on : ubuntu-22.04
395+ needs : [setup, validate-submission, chart-verifier]
396+
397+ outputs :
398+ message_file : ${{ steps.pr_comment.outputs.message-file }}
399+ message_text_base64 : ${{ steps.encode_pr_comment.outputs.message-text-base64 }}
400+
401+ # Run manage-pr as long as setup was successfull, independently from potential errors in validate-submission or chart-verifier
402+ if : ${{ always() && needs.setup.result == 'success' }}
403+
404+ steps :
405+ - name : Checkout
406+ uses : actions/checkout@v4
407+
408+ - name : Checkout PR Branch
409+ if : ${{ needs.setup.outputs.run_build == 'true' }}
410+ uses : actions/checkout@v4
411+ with :
412+ ref : ${{ github.event.pull_request.head.ref }}
413+ repository : ${{ github.event.pull_request.head.repo.full_name }}
414+ path : " pr-branch"
415+
416+ - name : Set up Python 3.x Part 1
417+ uses : actions/setup-python@v5
418+ with :
419+ python-version : " 3.10"
393420
394- # # outputs:
395- # # if: ${{ always() && contains(join(needs.*.result, ','), 'success') }}
421+ - name : Set up Python 3.x Part 2
422+ run : |
423+ # set up python
424+ python3 -m venv ve1
425+ cd scripts
426+ ../ve1/bin/pip3 install -r requirements.txt
427+ ../ve1/bin/pip3 install .
428+ cd ..
429+
430+ - name : Download submission information
431+ uses : actions/download-artifact@v4
432+ with :
433+ name : submission
396434
397- # steps:
398435 - name : Prepare PR comment
399436 id : pr_comment
400- if : ${{ always() && needs.setup.outputs.run_build == 'true' }}
437+ if : ${{ needs.setup.outputs.run_build == 'true' }}
401438 env :
402439 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
403440 PR_CONTENT_ERROR_MESSAGE : ${{ needs.validate-submission.outputs.pr-content-error-message }}
404441 OWNERS_ERROR_MESSAGE : ${{ needs.validate-submission.outputs.owners-error-message }}
405- COMMUNITY_MANUAL_REVIEW : ${{ steps.check_report .outputs.community_manual_review_required }}
406- OC_INSTALL_RESULT : ${{ steps. install-oc. outcome }}
407- VERIFIER_ERROR_MESSAGE : ${{ steps.check -verifier-result .outputs.verifier_error_message }}
442+ COMMUNITY_MANUAL_REVIEW : ${{ needs.chart-verifier .outputs.community_manual_review_required }}
443+ OC_INSTALL_RESULT : ${{ needs.chart-verifier.outputs. install-oc- outcome || 'skipped' }}
444+ VERIFIER_ERROR_MESSAGE : ${{ needs.chart -verifier.outputs.verifier_error_message }}
408445 run : |
409- ve1/bin/pr-comment ${{ needs.validate-submission.outputs.validate-submission-outcome }} ${{ steps.run-verifier.outcome }} ${{ steps.check_report.conclusion }}
446+ ve1/bin/pr-comment ${{ needs.validate-submission.outputs.validate-submission-outcome }} \
447+ ${{ needs.chart-verifier.outputs.run-verifier-outcome || 'skipped' }} \
448+ ${{ needs.chart-verifier.outputs.check_report-outcome || 'skipped'}}
410449
411450 # Note(komish): This step is a temporary fix for the metrics step in the next job
412451 # which expects the PR comment to exist at the specified filesystem location.
413452 - name : Encode PR Comment for Metrics
414453 id : encode_pr_comment
415- if : ${{ always() && needs.setup.outputs.run_build == 'true' }}
454+ if : ${{ needs.setup.outputs.run_build == 'true' }}
416455 run : |
417456 commentBase64=$(base64 --wrap=0 ${{ steps.pr_comment.outputs.message-file }})
418457 echo "message-text-base64=${commentBase64}" | tee -a $GITHUB_OUTPUT
419458
420459 - name : Comment on PR
421- if : ${{ always() && needs.setup.outputs.run_build == 'true' }}
460+ if : ${{ needs.setup.outputs.run_build == 'true' }}
422461 uses : actions/github-script@v7
423462 with :
424463 github-token : ${{ secrets.GITHUB_TOKEN }}
@@ -434,7 +473,8 @@ jobs:
434473 });
435474
436475 - name : Add 'authorized-request' label to PR
437- if : ${{ always() && needs.validate-submission.outputs.validate-submission-outcome == 'success' && steps.run-verifier.outcome != 'failure' && needs.setup.outputs.run_build == 'true' }}
476+ if : ${{ needs.validate-submission.outputs.validate-submission-outcome == 'success' && needs.chart-verifier.outputs.run-verifier-outcome != 'failure' && needs.setup.outputs.run_build == 'true' }}
477+ # if: ${{ needs.validate-submission.outputs.validate-submission-outcome == 'success' && needs.chart-verifier.outputs.run-verifier-outcome || 'skipped' == 'success' && needs.setup.outputs.run_build == 'true' }}
438478 uses : actions/github-script@v7
439479 with :
440480 github-token : ${{ secrets.GITHUB_TOKEN }}
@@ -453,7 +493,8 @@ jobs:
453493
454494 - name : Approve PR
455495 id : approve_pr
456- if : ${{ steps.check_report.conclusion == 'success' }}
496+ if : ${{ needs.chart-verifier.outputs.check_report-outcome == 'success' }}
497+ # if: ${{ needs.chart-verifier.outputs.check_report-outcome || 'skipped' == 'success' }}
457498 uses : hmarr/auto-approve-action@v3
458499 with :
459500 # The token we use for this changes for the Sandbox repository because the sandbox repository
@@ -463,15 +504,15 @@ jobs:
463504
464505 - name : Merge PR
465506 id : merge_pr
466- if : ${{ steps.approve_pr.conclusion == 'success' }}
507+ if : ${{ steps.approve_pr.outcome == 'success' }}
467508468509 env :
469510 GITHUB_TOKEN : ${{ secrets.BOT_TOKEN }}
470511 MERGE_METHOD : squash
471512 MERGE_LABELS : " "
472513
473514 - name : Check for PR merge
474- if : ${{ steps.merge_pr.conclusion == 'success' }}
515+ if : ${{ steps.merge_pr.outcome == 'success' }}
475516 env :
476517 BOT_TOKEN : ${{ secrets.BOT_TOKEN }}
477518 run : |
@@ -481,7 +522,7 @@ jobs:
481522 release :
482523 name : Release Chart
483524 runs-on : ubuntu-22.04
484- needs : [setup, validate-submission, chart-verifier]
525+ needs : [setup, validate-submission, chart-verifier, manage-gh-pr ]
485526
486527 steps :
487528 - name : Checkout
@@ -535,7 +576,7 @@ jobs:
535576 REPORT_CONTENT : ${{ needs.chart-verifier.outputs.report_content }}
536577 REDHAT_TO_COMMUNITY : ${{ needs.chart-verifier.outputs.redhat_to_community }}
537578 WEB_CATALOG_ONLY : ${{ needs.validate-submission.outputs.web_catalog_only }}
538- OCP_VERSION_RANGE : ${{ steps.get-ocp-range .outputs.ocp-version-range }}
579+ OCP_VERSION_RANGE : ${{ needs.chart-verifier .outputs.ocp-version-range }}
539580 id : prepare-chart-release
540581 run : |
541582 # export WEB_CATALOG_ONLY=`jq .is_web_catalog_only ${{ github.env.SUBMISSION_PATH }}`
@@ -628,8 +669,8 @@ jobs:
628669 - name : Retrieve PR comment for metrics
629670 if : ${{ always() && needs.setup.outputs.run_build == 'true' && github.repository != 'openshift-helm-charts/sandbox' }}
630671 run : |
631- mkdir -p $(dirname ${{ needs.chart-verifier .outputs.message_file }})
632- echo ${{ needs.chart-verifier .outputs.message_text_base64 }} | base64 -d | tee ${{ needs.chart-verifier .outputs.message_file }}
672+ mkdir -p $(dirname ${{ needs.manage-gh-pr .outputs.message_file }})
673+ echo ${{ needs.manage-gh-pr .outputs.message_text_base64 }} | base64 -d | tee ${{ needs.manage-gh-pr .outputs.message_file }}
633674
634675 - name : Add metrics
635676 id : add_metrics
@@ -652,7 +693,7 @@ jobs:
652693 echo "add PR run metric"
653694 ve1/bin/metrics --write-key="${WRITE_KEY}" \
654695 --metric-type="pull_request" \
655- --message-file="${{ needs.chart-verifier .outputs.message_file }}" \
696+ --message-file="${{ needs.manage-gh-pr .outputs.message_file }}" \
656697 --pr-number="${{ github.event.number }}" \
657698 --pr-action="${{ github.event.action }}" \
658699 --repository="${GITHUB_REPOSITORY}" \
0 commit comments