From 4c4e950d3d5151b664468cd112f504dbcbc7764f Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Thu, 27 Mar 2025 00:34:05 -0500 Subject: [PATCH 1/9] Update build.yml Add linux arm 64 builds --- .github/workflows/build.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5bb25811a..b6e51a66a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ on: - 'static/**' - '*.md' tags: - - '[0-9]+.[0-9]+.[0-9]+*' + - '[0-9]+.[0-9]+.[0-9]+*' workflow_dispatch: inputs: paid-runners: @@ -133,6 +133,16 @@ env: name: macOS_arm64_dmg - path: '*macOS_arm64.zip' name: macOS_arm64_zip + - config: + name: ARM Ubuntu 22.04 + runs-on: ubuntu-22.04-arm + container: | + null + job-transfer-artifact-suffix: ARM_64bit + mergeable-channel-file: 'false' + artifacts: + - path: '*ARM_64bit.tar.gz' + name: ARM_64bit_tarball PAID_RUNNER_BUILD_DATA: | # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to @@ -289,7 +299,7 @@ jobs: # to skip passing signing credentials to electron-builder IS_WINDOWS_CONFIG: ${{ matrix.config.name == 'Windows' }} INSTALLER_CERT_WINDOWS_CER: "/tmp/cert.cer" - # We are hardcoding the path for signtool because is not present on the windows PATH env var by default. + # We are hardcoding the path for signtool because it is not present on the Windows PATH env var by default. # Keep in mind that this path could change when upgrading to a new runner version SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86/signtool.exe" WIN_CERT_PASSWORD: ${{ secrets[matrix.config.certificate-password-secret] }} @@ -308,6 +318,10 @@ jobs: timeout-minutes: 90 steps: + - name: Install Chromium (ARM only) + if: matrix.config.name == 'ARM Ubuntu 22.04' + run: sudo apt-get update && sudo apt-get install -y chromium-browser + - name: Symlink custom working directory shell: cmd if: runner.os == 'Windows' && matrix.config.working-directory @@ -317,7 +331,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Node.js if: runner.name != 'WINDOWS-SIGN-PC' uses: actions/setup-node@v4 From 937c2746fcdd8f29778b9872e94fc6f841dd6935 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Wed, 16 Apr 2025 18:46:10 -0500 Subject: [PATCH 2/9] Update build.yml --- .github/workflows/build.yml | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 957e75d70..8d8fb2557 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ on: - 'static/**' - '*.md' tags: - - '[0-9]+.[0-9]+.[0-9]+*' + - '[0-9]+.[0-9]+.[0-9]+*' workflow_dispatch: inputs: paid-runners: @@ -133,16 +133,6 @@ env: name: macOS_arm64_dmg - path: '*macOS_arm64.zip' name: macOS_arm64_zip - - config: - name: ARM Ubuntu 22.04 - runs-on: ubuntu-22.04-arm - container: | - null - job-transfer-artifact-suffix: ARM_64bit - mergeable-channel-file: 'false' - artifacts: - - path: '*ARM_64bit.tar.gz' - name: ARM_64bit_tarball PAID_RUNNER_BUILD_DATA: | # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to @@ -300,7 +290,7 @@ jobs: # to skip passing signing credentials to electron-builder IS_WINDOWS_CONFIG: ${{ matrix.config.name == 'Windows' }} INSTALLER_CERT_WINDOWS_CER: "/tmp/cert.cer" - # We are hardcoding the path for signtool because it is not present on the Windows PATH env var by default. + # We are hardcoding the path for signtool because is not present on the windows PATH env var by default. # Keep in mind that this path could change when upgrading to a new runner version SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86/signtool.exe" WIN_CERT_PASSWORD: ${{ secrets[matrix.config.certificate-password-secret] }} @@ -320,10 +310,6 @@ jobs: timeout-minutes: 90 steps: - - name: Install Chromium (ARM only) - if: matrix.config.name == 'ARM Ubuntu 22.04' - run: sudo apt-get update && sudo apt-get install -y chromium-browser - - name: Symlink custom working directory shell: cmd if: runner.os == 'Windows' && matrix.config.working-directory @@ -333,6 +319,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Install Node.js if: runner.name != 'WINDOWS-SIGN-PC' uses: actions/setup-node@v4 From d99e577c9325f20e744f12ee0875098cfb504c77 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Wed, 16 Apr 2025 19:02:05 -0500 Subject: [PATCH 3/9] Update build.yml From c5af77de9c2acec90f073ab64afbbdb626865e03 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Wed, 16 Apr 2025 19:03:29 -0500 Subject: [PATCH 4/9] Update build.yml --- .github/workflows/build.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8d8fb2557..939bf3fbc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ on: - 'static/**' - '*.md' tags: - - '[0-9]+.[0-9]+.[0-9]+*' + - '[0-9]+.[0-9]+.[0-9]+*' workflow_dispatch: inputs: paid-runners: @@ -133,6 +133,18 @@ env: name: macOS_arm64_dmg - path: '*macOS_arm64.zip' name: macOS_arm64_zip + - config: + name: ARM Ubuntu 22.04 + runs-on: ubuntu-22.04-arm + container: | + null + job-transfer-artifact-suffix: ARM_64bit + mergeable-channel-file: 'true' + artifacts: + - path: '*Linux_arm64.zip' + name: Linux_arm64_zip + - path: '*Linux_arm64.AppImage' + name: Linux_arm64_app_image PAID_RUNNER_BUILD_DATA: | # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to @@ -290,7 +302,7 @@ jobs: # to skip passing signing credentials to electron-builder IS_WINDOWS_CONFIG: ${{ matrix.config.name == 'Windows' }} INSTALLER_CERT_WINDOWS_CER: "/tmp/cert.cer" - # We are hardcoding the path for signtool because is not present on the windows PATH env var by default. + # We are hardcoding the path for signtool because it is not present on the Windows PATH env var by default. # Keep in mind that this path could change when upgrading to a new runner version SIGNTOOL_PATH: "C:/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x86/signtool.exe" WIN_CERT_PASSWORD: ${{ secrets[matrix.config.certificate-password-secret] }} @@ -310,6 +322,10 @@ jobs: timeout-minutes: 90 steps: + - name: Install Chromium (ARM only) + if: matrix.config.name == 'ARM Ubuntu 22.04' + run: sudo apt-get update && sudo apt-get install -y chromium-browser + - name: Symlink custom working directory shell: cmd if: runner.os == 'Windows' && matrix.config.working-directory @@ -319,7 +335,6 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Install Node.js if: runner.name != 'WINDOWS-SIGN-PC' uses: actions/setup-node@v4 From 27b1cb528e107609467431705a42fb53ddc780ee Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Wed, 16 Apr 2025 21:26:14 -0500 Subject: [PATCH 5/9] Update build.yml --- .github/workflows/build.yml | 39 +++---------------------------------- 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 939bf3fbc..6a171e6b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -139,17 +139,14 @@ env: container: | null job-transfer-artifact-suffix: ARM_64bit - mergeable-channel-file: 'true' + mergeable-channel-file: 'false' artifacts: - - path: '*Linux_arm64.zip' - name: Linux_arm64_zip - - path: '*Linux_arm64.AppImage' - name: Linux_arm64_app_image + - path: '*ARM_64bit.tar.gz' + name: ARM_64bit_tarball PAID_RUNNER_BUILD_DATA: | # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to # `BASE_BUILD_DATA`, but the system was left in place for future use. - jobs: run-determination: runs-on: ubuntu-latest @@ -172,9 +169,7 @@ jobs: # There is no need to run the other jobs. RESULT="false" fi - echo "result=$RESULT" >> $GITHUB_OUTPUT - build-type-determination: needs: run-determination if: needs.run-determination.outputs.result == 'true' @@ -211,13 +206,11 @@ jobs: is_nightly="false" channel_name="nightly" fi - echo "is-release=$is_release" >> $GITHUB_OUTPUT echo "is-nightly=$is_nightly" >> $GITHUB_OUTPUT echo "channel-name=$channel_name" >> $GITHUB_OUTPUT # Only attempt upload to Amazon S3 if the credentials are available. echo "publish-to-s3=${{ secrets.AWS_ROLE_ARN != '' }}" >> $GITHUB_OUTPUT - select-targets: needs: build-type-determination runs-on: ubuntu-latest @@ -244,7 +237,6 @@ jobs: --output-format json \ '[.[].config]' )" - artifact_matrix="$( ( echo "${{ env.BASE_BUILD_DATA }}"; @@ -254,11 +246,9 @@ jobs: --output-format json \ 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))' )" - # The build matrix produces two macOS jobs (x86 and ARM) so the "channel update info files" # generated by each must be merged. merge_channel_files="true" - else build_matrix="$( echo "${{ env.BASE_BUILD_DATA }}" | \ @@ -266,31 +256,25 @@ jobs: --output-format json \ '[.[].config]' )" - artifact_matrix="$( echo "${{ env.BASE_BUILD_DATA }}" | \ yq \ --output-format json \ 'map(.artifacts[] + (.config | pick(["job-transfer-artifact-suffix"])))' )" - merge_channel_files="false" fi - # Set workflow step outputs. # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings delimiter="$RANDOM" echo "build-matrix<<$delimiter" >> $GITHUB_OUTPUT echo "$build_matrix" >> $GITHUB_OUTPUT echo "$delimiter" >> $GITHUB_OUTPUT - delimiter="$RANDOM" echo "artifact-matrix<<$delimiter" >> $GITHUB_OUTPUT echo "$artifact_matrix" >> $GITHUB_OUTPUT echo "$delimiter" >> $GITHUB_OUTPUT - echo "merge-channel-files=$merge_channel_files" >> $GITHUB_OUTPUT - build: name: build (${{ matrix.config.name }}) needs: @@ -331,7 +315,6 @@ jobs: if: runner.os == 'Windows' && matrix.config.working-directory run: | if not exist "${{ matrix.config.working-directory }}" mklink /d "${{ matrix.config.working-directory }}" "C:\actions-runner\_work\arduino-ide\arduino-ide" - - name: Checkout uses: actions/checkout@v4 @@ -352,7 +335,6 @@ jobs: install \ --global \ "yarn@${{ env.YARN_VERSION }}" - - name: Install Python 3.x if: fromJSON(matrix.config.container) == null && runner.name != 'WINDOWS-SIGN-PC' uses: actions/setup-python@v5 @@ -392,15 +374,12 @@ jobs: export CSC_KEY_PASSWORD="${{ secrets[matrix.config.certificate-password-secret] }}" export CSC_FOR_PULL_REQUEST=true fi - npx node-gyp install yarn install - yarn --cwd arduino-ide-extension build yarn --cwd electron-app rebuild yarn --cwd electron-app build yarn --cwd electron-app package - # Both macOS jobs generate a "channel update info file" with same path and name. The second job to complete would # overwrite the file generated by the first in the workflow artifact. - name: Stage channel file for merge @@ -414,11 +393,9 @@ jobs: mv \ "${{ env.BUILD_ARTIFACTS_PATH }}/${{ needs.build-type-determination.outputs.channel-name }}-mac.yml" \ "${staged_channel_files_path}/${{ needs.build-type-determination.outputs.channel-name }}-mac-${{ runner.arch }}.yml" - # Set workflow environment variable for use in other steps. # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable echo "STAGED_CHANNEL_FILES_PATH=$staged_channel_files_path" >> "$GITHUB_ENV" - - name: Upload staged-for-merge channel file artifact uses: actions/upload-artifact@v4 if: > @@ -440,7 +417,6 @@ jobs: shell: cmd run: | rmdir /s /q "${{ matrix.config.working-directory }}\${{ env.BUILD_ARTIFACTS_PATH }}" - merge-channel-files: needs: - build-type-determination @@ -454,7 +430,6 @@ jobs: run: | # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable echo "CHANNEL_FILES_PATH=${{ runner.temp }}/channel-files" >> "$GITHUB_ENV" - - name: Checkout uses: actions/checkout@v4 @@ -493,7 +468,6 @@ jobs: run: | sudo apt-get update sudo apt-get install -y libx11-dev libxkbfile-dev libsecret-1-dev - - name: Install dependencies run: yarn @@ -503,7 +477,6 @@ jobs: ./scripts/merge-channel-files.js \ --channel "${{ needs.build-type-determination.outputs.channel-name }}" \ --input "${{ env.CHANNEL_FILES_PATH }}" - - name: Upload merged channel files job transfer artifact uses: actions/upload-artifact@v4 with: @@ -570,16 +543,13 @@ jobs: fi fi echo -e "$BODY" - # Set workflow step output # See: https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings DELIMITER="$RANDOM" echo "BODY<<$DELIMITER" >> $GITHUB_OUTPUT echo "$BODY" >> $GITHUB_OUTPUT echo "$DELIMITER" >> $GITHUB_OUTPUT - echo "$BODY" > CHANGELOG.txt - - name: Upload changelog job transfer artifact if: needs.build-type-determination.outputs.is-nightly == 'true' uses: actions/upload-artifact@v4 @@ -630,7 +600,6 @@ jobs: - name: Publish Nightly [S3] run: | aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide/nightly - release: needs: - build-type-determination @@ -668,7 +637,6 @@ jobs: id: tag_name run: | echo "TAG_NAME=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Publish Release [GitHub] uses: svenstaro/upload-release-action@2.9.0 with: @@ -690,7 +658,6 @@ jobs: if: needs.build-type-determination.outputs.publish-to-s3 == 'true' run: | aws s3 sync ${{ env.ARTIFACTS_FOLDER }} s3://${{ secrets.DOWNLOADS_BUCKET }}/arduino-ide - clean: # This job must run after all jobs that use the transfer artifact. needs: From 2c0bcba812f123a15c54db7a476627595e91b366 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Wed, 16 Apr 2025 22:36:50 -0500 Subject: [PATCH 6/9] Update build.yml --- .github/workflows/build.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6a171e6b8..668722065 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -139,10 +139,12 @@ env: container: | null job-transfer-artifact-suffix: ARM_64bit - mergeable-channel-file: 'false' + mergeable-channel-file: 'true' artifacts: - - path: '*ARM_64bit.tar.gz' - name: ARM_64bit_tarball + - path: '*Linux_arm64.zip' + name: Linux_arm64_zip + - path: '*Linux_arm64.AppImage' + name: Linux_arm64_app_image PAID_RUNNER_BUILD_DATA: | # This system was implemented to allow selective use of paid GitHub-hosted runners, due to the Apple Silicon runner # incurring a charge at that time. Free Apple Silicon runners are now available so the configuration was moved to From c30be536b2bb35a44286c42fb98d1b10598ef243 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Thu, 17 Apr 2025 02:42:13 -0500 Subject: [PATCH 7/9] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 668722065..47d54ddd1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -133,7 +133,7 @@ env: name: macOS_arm64_dmg - path: '*macOS_arm64.zip' name: macOS_arm64_zip - - config: + - config: name: ARM Ubuntu 22.04 runs-on: ubuntu-22.04-arm container: | From 10da5e852fb9a8aabed7d4a1d41c182741a635a2 Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Thu, 17 Apr 2025 02:45:50 -0500 Subject: [PATCH 8/9] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 47d54ddd1..668722065 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -133,7 +133,7 @@ env: name: macOS_arm64_dmg - path: '*macOS_arm64.zip' name: macOS_arm64_zip - - config: + - config: name: ARM Ubuntu 22.04 runs-on: ubuntu-22.04-arm container: | From 2d76e761932d29601911089668c31aea3994d00b Mon Sep 17 00:00:00 2001 From: neochaos42 <125705606+neochaos42@users.noreply.github.com> Date: Sat, 19 Apr 2025 14:42:23 -0500 Subject: [PATCH 9/9] Update test-javascript.yml --- .github/workflows/test-javascript.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-javascript.yml b/.github/workflows/test-javascript.yml index a1665f4f5..04ff2e861 100644 --- a/.github/workflows/test-javascript.yml +++ b/.github/workflows/test-javascript.yml @@ -79,6 +79,7 @@ jobs: - macos-latest - ubuntu-latest - windows-latest + - ubuntu-22.04-arm steps: - name: Checkout