48
48
GO_VERSION : ' 1.21'
49
49
# See: https://github.com/actions/setup-node/#readme
50
50
NODE_VERSION : ' 18.17'
51
- JOB_TRANSFER_ARTIFACT : build-artifacts
51
+ JOB_TRANSFER_ARTIFACT_PREFIX : build-artifacts-
52
52
CHANGELOG_ARTIFACTS : changelog
53
- STAGED_CHANNEL_FILES_ARTIFACT : staged-channel-files
53
+ STAGED_CHANNEL_FILE_ARTIFACT_PREFIX : staged-channel-file-
54
54
BASE_BUILD_DATA : |
55
55
- config:
56
56
# Human identifier for the job.
68
68
certificate-extension: pfx
69
69
# Container for windows cert signing
70
70
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
71
73
# Quoting on the value is required here to allow the same comparison expression syntax to be used for this
72
74
# and the companion needs.select-targets.outputs.merge-channel-files property (output values always have string
73
75
# type).
91
93
{
92
94
\"image\": \"ghcr.io/arduino/arduino-ide/linux:main\"
93
95
}
96
+ job-transfer-artifact-suffix: Linux_64bit
94
97
mergeable-channel-file: 'false'
95
98
artifacts:
96
99
- path: '*Linux_64bit.zip'
107
110
certificate-secret: APPLE_SIGNING_CERTIFICATE_P12
108
111
certificate-password-secret: KEYCHAIN_PASSWORD
109
112
certificate-extension: p12
113
+ job-transfer-artifact-suffix: macOS_64bit
110
114
mergeable-channel-file: 'true'
111
115
artifacts:
112
116
- path: '*macOS_64bit.dmg'
121
125
certificate-secret: APPLE_SIGNING_CERTIFICATE_P12
122
126
certificate-password-secret: KEYCHAIN_PASSWORD
123
127
certificate-extension: p12
128
+ job-transfer-artifact-suffix: macOS_arm64
124
129
mergeable-channel-file: 'true'
125
130
artifacts:
126
131
- path: '*macOS_arm64.dmg'
@@ -233,7 +238,7 @@ jobs:
233
238
) | \
234
239
yq \
235
240
--output-format json \
236
- '[.[].artifacts.[]] '
241
+ 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"]))) '
237
242
)"
238
243
239
244
# The build matrix produces two macOS jobs (x86 and ARM) so the "channel update info files"
@@ -252,7 +257,7 @@ jobs:
252
257
echo "${{ env.BASE_BUILD_DATA }}" | \
253
258
yq \
254
259
--output-format json \
255
- '[.[].artifacts.[]] '
260
+ 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"]))) '
256
261
)"
257
262
258
263
merge_channel_files="false"
@@ -417,13 +422,13 @@ jobs:
417
422
matrix.config.mergeable-channel-file == 'true'
418
423
with :
419
424
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 }}
421
426
path : ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.STAGED_CHANNEL_FILES_PATH) || env.STAGED_CHANNEL_FILES_PATH }}
422
427
423
- - name : Upload [GitHub Actions]
428
+ - name : Upload builds to job transfer artifact
424
429
uses : actions/upload-artifact@v4
425
430
with :
426
- name : ${{ env.JOB_TRANSFER_ARTIFACT }}
431
+ name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}${{ matrix.config.job-transfer-artifact-suffix }}
427
432
path : ${{ matrix.config.working-directory && format('{0}/{1}', matrix.config.working-directory, env.BUILD_ARTIFACTS_PATH) || env.BUILD_ARTIFACTS_PATH }}
428
433
429
434
- name : Manual Clean up for self-hosted runners
@@ -449,16 +454,17 @@ jobs:
449
454
- name : Checkout
450
455
uses : actions/checkout@v4
451
456
452
- - name : Download staged-for-merge channel files artifact
457
+ - name : Download staged-for-merge channel file artifacts
453
458
uses : actions/download-artifact@v4
454
459
with :
455
- name : ${{ env.STAGED_CHANNEL_FILES_ARTIFACT }}
460
+ merge-multiple : true
456
461
path : ${{ env.CHANNEL_FILES_PATH }}
462
+ pattern : ${{ env.STAGED_CHANNEL_FILE_ARTIFACT_PREFIX }}*
457
463
458
- - name : Remove no longer needed artifact
464
+ - name : Remove no longer needed artifacts
459
465
uses : geekyeggo/delete-artifact@v5
460
466
with :
461
- name : ${{ env.STAGED_CHANNEL_FILES_ARTIFACT }}
467
+ name : ${{ env.STAGED_CHANNEL_FILE_ARTIFACT_PREFIX }}*
462
468
463
469
- name : Install Node.js
464
470
uses : actions/setup-node@v4
@@ -488,11 +494,11 @@ jobs:
488
494
--channel "${{ needs.build-type-determination.outputs.channel-name }}" \
489
495
--input "${{ env.CHANNEL_FILES_PATH }}"
490
496
491
- - name : Upload merged channel files to job transfer artifact
497
+ - name : Upload merged channel files job transfer artifact
492
498
uses : actions/upload-artifact@v4
493
499
with :
494
500
if-no-files-found : error
495
- name : ${{ env.JOB_TRANSFER_ARTIFACT }}
501
+ name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}channel-files
496
502
path : ${{ env.CHANNEL_FILES_PATH }}
497
503
498
504
artifacts :
@@ -503,22 +509,25 @@ jobs:
503
509
if : always() && needs.build.result != 'skipped'
504
510
runs-on : ubuntu-latest
505
511
512
+ env :
513
+ BUILD_ARTIFACTS_FOLDER : build-artifacts
514
+
506
515
strategy :
507
516
matrix :
508
517
artifact : ${{ fromJson(needs.select-targets.outputs.artifact-matrix) }}
509
518
510
519
steps :
511
- - name : Download job transfer artifact
520
+ - name : Download job transfer artifact that contains ${{ matrix.artifact.name }} tester build
512
521
uses : actions/download-artifact@v4
513
522
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 }}
516
525
517
526
- name : Upload tester build artifact
518
527
uses : actions/upload-artifact@v4
519
528
with :
520
529
name : ${{ matrix.artifact.name }}
521
- path : ${{ env.JOB_TRANSFER_ARTIFACT }}/${{ matrix.artifact.path }}
530
+ path : ${{ env.BUILD_ARTIFACTS_FOLDER }}/${{ matrix.artifact.path }}
522
531
523
532
changelog :
524
533
needs :
@@ -561,11 +570,11 @@ jobs:
561
570
562
571
echo "$BODY" > CHANGELOG.txt
563
572
564
- - name : Upload Changelog [GitHub Actions]
573
+ - name : Upload changelog job transfer artifact
565
574
if : needs.build-type-determination.outputs.is-nightly == 'true'
566
575
uses : actions/upload-artifact@v4
567
576
with :
568
- name : ${{ env.JOB_TRANSFER_ARTIFACT }}
577
+ name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}changelog
569
578
path : CHANGELOG.txt
570
579
571
580
publish :
@@ -584,18 +593,23 @@ jobs:
584
593
needs.build-type-determination.outputs.publish-to-s3 == 'true' &&
585
594
needs.build-type-determination.outputs.is-nightly == 'true'
586
595
runs-on : ubuntu-latest
596
+
597
+ env :
598
+ ARTIFACTS_FOLDER : build-artifacts
599
+
587
600
steps :
588
- - name : Download [GitHub Actions]
601
+ - name : Download all job transfer artifacts
589
602
uses : actions/download-artifact@v4
590
603
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 }}*
593
607
594
608
- name : Publish Nightly [S3]
595
609
uses : docker://plugins/s3
596
610
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 }}/'
599
613
PLUGIN_TARGET : ' /arduino-ide/nightly'
600
614
PLUGIN_BUCKET : ${{ secrets.DOWNLOADS_BUCKET }}
601
615
AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -616,12 +630,17 @@ jobs:
616
630
needs.changelog.result == 'success' &&
617
631
needs.build-type-determination.outputs.is-release == 'true'
618
632
runs-on : ubuntu-latest
633
+
634
+ env :
635
+ ARTIFACTS_FOLDER : build-artifacts
636
+
619
637
steps :
620
- - name : Download [GitHub Actions]
638
+ - name : Download all job transfer artifacts
621
639
uses : actions/download-artifact@v4
622
640
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 }}*
625
644
626
645
- name : Get Tag
627
646
id : tag_name
@@ -633,7 +652,7 @@ jobs:
633
652
with :
634
653
repo_token : ${{ secrets.GITHUB_TOKEN }}
635
654
release_name : ${{ steps.tag_name.outputs.TAG_NAME }}
636
- file : ${{ env.JOB_TRANSFER_ARTIFACT }}/*
655
+ file : ${{ env.ARTIFACTS_FOLDER }}/*
637
656
tag : ${{ github.ref }}
638
657
file_glob : true
639
658
body : ${{ needs.changelog.outputs.BODY }}
@@ -642,8 +661,8 @@ jobs:
642
661
if : needs.build-type-determination.outputs.publish-to-s3 == 'true'
643
662
uses : docker://plugins/s3
644
663
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 }}/'
647
666
PLUGIN_TARGET : ' /arduino-ide'
648
667
PLUGIN_BUCKET : ${{ secrets.DOWNLOADS_BUCKET }}
649
668
AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -661,7 +680,7 @@ jobs:
661
680
runs-on : ubuntu-latest
662
681
663
682
steps :
664
- - name : Remove unneeded job transfer artifact
683
+ - name : Remove unneeded job transfer artifacts
665
684
uses : geekyeggo/delete-artifact@v5
666
685
with :
667
- name : ${{ env.JOB_TRANSFER_ARTIFACT }}
686
+ name : ${{ env.JOB_TRANSFER_ARTIFACT_PREFIX }}*
0 commit comments