|
48 | 48 | GO_VERSION: '1.21'
|
49 | 49 | # See: https://.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 [ 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 [ 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 [ 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 [ 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._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: ${{ .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