4848  GO_VERSION : ' 1.21' 
4949  #  See: https://github.com/actions/setup-node/#readme
5050  NODE_VERSION : ' 18.17' 
51-   JOB_TRANSFER_ARTIFACT : build-artifacts 
51+   JOB_TRANSFER_ARTIFACT_PREFIX : build-artifacts-  
5252  CHANGELOG_ARTIFACTS : changelog 
53-   STAGED_CHANNEL_FILES_ARTIFACT : staged-channel-files  
53+   STAGED_CHANNEL_FILE_ARTIFACT_PREFIX : staged-channel-file-  
5454  BASE_BUILD_DATA : | 
5555    - config: 
5656        # Human identifier for the job. 
6868        certificate-extension: pfx 
6969        # Container for windows cert signing 
7070        certificate-container: INSTALLER_CERT_WINDOWS_CONTAINER 
71+         # Arbitrary identifier used to give the workflow artifact uploaded by each "build" matrix job a unique name. 
72+         job-transfer-artifact-suffix: Windows_64bit 
7173        # Quoting on the value is required here to allow the same comparison expression syntax to be used for this 
7274        # and the companion needs.select-targets.outputs.merge-channel-files property (output values always have string 
7375        # type). 
9193          { 
9294            \"image\": \"ghcr.io/arduino/arduino-ide/linux:main\" 
9395          } 
96+         job-transfer-artifact-suffix: Linux_64bit 
9497        mergeable-channel-file: 'false' 
9598      artifacts: 
9699        - path: '*Linux_64bit.zip' 
107110        certificate-secret: APPLE_SIGNING_CERTIFICATE_P12 
108111        certificate-password-secret: KEYCHAIN_PASSWORD 
109112        certificate-extension: p12 
113+         job-transfer-artifact-suffix: macOS_64bit 
110114        mergeable-channel-file: 'true' 
111115      artifacts: 
112116        - path: '*macOS_64bit.dmg' 
121125        certificate-secret: APPLE_SIGNING_CERTIFICATE_P12 
122126        certificate-password-secret: KEYCHAIN_PASSWORD 
123127        certificate-extension: p12 
128+         job-transfer-artifact-suffix: macOS_arm64 
124129        mergeable-channel-file: 'true' 
125130      artifacts: 
126131        - path: '*macOS_arm64.dmg' 
@@ -233,7 +238,7 @@ jobs:
233238              ) | \ 
234239              yq \ 
235240                --output-format json \ 
236-                 '[.[].artifacts.[]] ' 
241+                 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"]))) ' 
237242            )" 
238243
239244            # The build matrix produces two macOS jobs (x86 and ARM) so the "channel update info files" 
@@ -252,7 +257,7 @@ jobs:
252257              echo "${{ env.BASE_BUILD_DATA }}" | \ 
253258              yq \ 
254259                --output-format json \ 
255-                 '[.[].artifacts.[]] ' 
260+                 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"]))) ' 
256261            )" 
257262
258263            merge_channel_files="false" 
@@ -417,13 +422,13 @@ jobs:
417422          matrix.config.mergeable-channel-file == 'true' 
418423with :
419424          if-no-files-found : error 
420-           name : ${{ env.STAGED_CHANNEL_FILES_ARTIFACT  }} 
425+           name : ${{ env.STAGED_CHANNEL_FILE_ARTIFACT_PREFIX }}${{ matrix.config.job-transfer-artifact-suffix  }} 
421426          path : ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.STAGED_CHANNEL_FILES_PATH) || env.STAGED_CHANNEL_FILES_PATH }} 
422427
423-       - name : Upload [GitHub Actions]  
428+       - name : Upload builds to job transfer artifact  
424429        uses : actions/upload-artifact@v4 
425430        with :
426-           name : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
431+           name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}${{ matrix.config.job-transfer-artifact-suffix  }} 
427432          path : ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.BUILD_ARTIFACTS_PATH) || env.BUILD_ARTIFACTS_PATH }} 
428433
429434      - name : Manual Clean up for self-hosted runners 
@@ -449,16 +454,17 @@ jobs:
449454name : Checkout 
450455        uses : actions/checkout@v4 
451456
452-       - name : Download staged-for-merge channel files artifact  
457+       - name : Download staged-for-merge channel file artifacts  
453458        uses : actions/download-artifact@v4 
454459        with :
455-           name :  ${{ env.STAGED_CHANNEL_FILES_ARTIFACT }} 
460+           merge-multiple :  true 
456461          path : ${{ env.CHANNEL_FILES_PATH }} 
462+           pattern : ${{ env.STAGED_CHANNEL_FILE_ARTIFACT_PREFIX }}* 
457463
458-       - name : Remove no longer needed artifact  
464+       - name : Remove no longer needed artifacts  
459465        uses : geekyeggo/delete-artifact@v5 
460466        with :
461-           name : ${{ env.STAGED_CHANNEL_FILES_ARTIFACT  }} 
467+           name : ${{ env.STAGED_CHANNEL_FILE_ARTIFACT_PREFIX  }}*  
462468
463469      - name : Install Node.js 
464470        uses : actions/setup-node@v4 
@@ -488,11 +494,11 @@ jobs:
488494              --channel "${{ needs.build-type-determination.outputs.channel-name }}" \ 
489495              --input "${{ env.CHANNEL_FILES_PATH }}" 
490496
491- name : Upload merged channel files to  job transfer artifact 
497+ name : Upload merged channel files job transfer artifact 
492498        uses : actions/upload-artifact@v4 
493499        with :
494500          if-no-files-found : error 
495-           name : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
501+           name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX  }}channel-files  
496502          path : ${{ env.CHANNEL_FILES_PATH }} 
497503
498504  artifacts :
@@ -503,22 +509,25 @@ jobs:
503509    if : always() && needs.build.result != 'skipped' 
504510    runs-on : ubuntu-latest 
505511
512+     env :
513+       BUILD_ARTIFACTS_FOLDER : build-artifacts 
514+ 
506515    strategy :
507516      matrix :
508517        artifact : ${{ fromJson(needs.select-targets.outputs.artifact-matrix) }} 
509518
510519    steps :
511-       - name : Download job transfer artifact 
520+       - name : Download job transfer artifact that contains ${{ matrix.artifact.name }} tester build  
512521        uses : actions/download-artifact@v4 
513522        with :
514-           name : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
515-           path : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
523+           name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}${{ matrix.artifact.job-transfer-artifact-suffix  }} 
524+           path : ${{ env.BUILD_ARTIFACTS_FOLDER  }} 
516525
517526      - name : Upload tester build artifact 
518527        uses : actions/upload-artifact@v4 
519528        with :
520529          name : ${{ matrix.artifact.name }} 
521-           path : ${{ env.JOB_TRANSFER_ARTIFACT  }}/${{ matrix.artifact.path }} 
530+           path : ${{ env.BUILD_ARTIFACTS_FOLDER  }}/${{ matrix.artifact.path }} 
522531
523532  changelog :
524533    needs :
@@ -561,11 +570,11 @@ jobs:
561570
562571          echo "$BODY" > CHANGELOG.txt 
563572
564- name : Upload Changelog [GitHub Actions]  
573+ name : Upload changelog job transfer artifact  
565574        if : needs.build-type-determination.outputs.is-nightly == 'true' 
566575        uses : actions/upload-artifact@v4 
567576        with :
568-           name : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
577+           name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX  }}changelog  
569578          path : CHANGELOG.txt 
570579
571580  publish :
@@ -584,18 +593,23 @@ jobs:
584593      needs.build-type-determination.outputs.publish-to-s3 == 'true' && 
585594      needs.build-type-determination.outputs.is-nightly == 'true' 
586595runs-on : ubuntu-latest 
596+ 
597+     env :
598+       ARTIFACTS_FOLDER : build-artifacts 
599+ 
587600    steps :
588-       - name : Download [GitHub Actions]  
601+       - name : Download all job transfer artifacts  
589602        uses : actions/download-artifact@v4 
590603        with :
591-           name : ${{ env.JOB_TRANSFER_ARTIFACT }} 
592-           path : ${{ env.JOB_TRANSFER_ARTIFACT }} 
604+           merge-multiple : true 
605+           path : ${{ env.ARTIFACTS_FOLDER }} 
606+           pattern : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}* 
593607
594608      - name : Publish Nightly [S3] 
595609        uses : docker://plugins/s3 
596610        env :
597-           PLUGIN_SOURCE : ' ${{ env.JOB_TRANSFER_ARTIFACT  }}/*' 
598-           PLUGIN_STRIP_PREFIX : ' ${{ env.JOB_TRANSFER_ARTIFACT  }}/' 
611+           PLUGIN_SOURCE : ' ${{ env.ARTIFACTS_FOLDER  }}/*' 
612+           PLUGIN_STRIP_PREFIX : ' ${{ env.ARTIFACTS_FOLDER  }}/' 
599613          PLUGIN_TARGET : ' /arduino-ide/nightly' 
600614          PLUGIN_BUCKET : ${{ secrets.DOWNLOADS_BUCKET }} 
601615          AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }} 
@@ -616,12 +630,17 @@ jobs:
616630      needs.changelog.result == 'success' && 
617631      needs.build-type-determination.outputs.is-release == 'true' 
618632runs-on : ubuntu-latest 
633+ 
634+     env :
635+       ARTIFACTS_FOLDER : build-artifacts 
636+ 
619637    steps :
620-       - name : Download [GitHub Actions]  
638+       - name : Download all job transfer artifacts  
621639        uses : actions/download-artifact@v4 
622640        with :
623-           name : ${{ env.JOB_TRANSFER_ARTIFACT }} 
624-           path : ${{ env.JOB_TRANSFER_ARTIFACT }} 
641+           merge-multiple : true 
642+           path : ${{ env.ARTIFACTS_FOLDER }} 
643+           pattern : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}* 
625644
626645      - name : Get Tag 
627646        id : tag_name 
@@ -633,7 +652,7 @@ jobs:
633652        with :
634653          repo_token : ${{ secrets.GITHUB_TOKEN }} 
635654          release_name : ${{ steps.tag_name.outputs.TAG_NAME }} 
636-           file : ${{ env.JOB_TRANSFER_ARTIFACT  }}/* 
655+           file : ${{ env.ARTIFACTS_FOLDER  }}/* 
637656          tag : ${{ github.ref }} 
638657          file_glob : true 
639658          body : ${{ needs.changelog.outputs.BODY }} 
@@ -642,8 +661,8 @@ jobs:
642661        if : needs.build-type-determination.outputs.publish-to-s3 == 'true' 
643662        uses : docker://plugins/s3 
644663        env :
645-           PLUGIN_SOURCE : ' ${{ env.JOB_TRANSFER_ARTIFACT  }}/*' 
646-           PLUGIN_STRIP_PREFIX : ' ${{ env.JOB_TRANSFER_ARTIFACT  }}/' 
664+           PLUGIN_SOURCE : ' ${{ env.ARTIFACTS_FOLDER  }}/*' 
665+           PLUGIN_STRIP_PREFIX : ' ${{ env.ARTIFACTS_FOLDER  }}/' 
647666          PLUGIN_TARGET : ' /arduino-ide' 
648667          PLUGIN_BUCKET : ${{ secrets.DOWNLOADS_BUCKET }} 
649668          AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }} 
@@ -661,7 +680,7 @@ jobs:
661680    runs-on : ubuntu-latest 
662681
663682    steps :
664-       - name : Remove unneeded job transfer artifact  
683+       - name : Remove unneeded job transfer artifacts  
665684        uses : geekyeggo/delete-artifact@v5 
666685        with :
667-           name : ${{ env.JOB_TRANSFER_ARTIFACT  }} 
686+           name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX  }}*  
0 commit comments