diff --git a/.github/workflows/build-tool-packages.yml b/.github/workflows/build-tool-packages.yml index 197fe8d..c10e56b 100644 --- a/.github/workflows/build-tool-packages.yml +++ b/.github/workflows/build-tool-packages.yml @@ -1,4 +1,3 @@ - # This reusable workflow is used by actions/*-versions repositories # It is designed to # - build and test new versions of a tool (Go, Node) @@ -28,63 +27,70 @@ defaults: jobs: + build: name: Build ${{ inputs.tool-name }} ${{ inputs.tool-version }} [${{ matrix.platform }}] [${{ matrix.architecture }}] runs-on: ubuntu-latest env: ARTIFACT_NAME: ${{ inputs.tool-name }}-${{ inputs.tool-version }}-${{ matrix.platform }}-${{ matrix.architecture }} + excludewinarm: ${{ !(inputs.tool-name == 'node' && inputs['tool-version'] < '20.0.0' && matrix.architecture == 'arm64' && matrix.platform == 'win32') }} strategy: fail-fast: false matrix: - platform: [linux, darwin, win32] - architecture: [x64, arm64] + platform: [linux, darwin, win32] + architecture: [x64, arm64] steps: - - uses: actions/checkout@v4 + - name: checkout + if: env.excludewinarm == 'true' + uses: actions/checkout@v4 with: submodules: true - name: Build ${{ inputs.tool-name }} ${{ inputs.tool-version }} + if: env.excludewinarm == 'true' run: | ./builders/build-${{ inputs.tool-name }}.ps1 -Version ${{ inputs.tool-version }} ` -Platform ${{ matrix.platform }} ` -Architecture ${{ matrix.architecture }} - name: Publish artifact + if: env.excludewinarm == 'true' uses: actions/upload-artifact@v4 with: name: ${{ env.ARTIFACT_NAME }} path: ${{ runner.temp }}/artifact test: - name: Test ${{ inputs.tool-name }} ${{ inputs.tool-version }} [${{ matrix.platform }}] [${{ matrix.arch }}] + name: Test ${{ inputs.tool-name }} ${{ inputs.tool-version }} [${{ matrix.platform }}] [${{ matrix.architecture }}] needs: build runs-on: ${{ matrix.os }} env: - ARTIFACT_NAME: ${{ inputs.tool-name }}-${{ inputs.tool-version }}-${{ matrix.platform }}-${{ matrix.arch }} + ARTIFACT_NAME: ${{ inputs.tool-name }}-${{ inputs.tool-version }}-${{ matrix.platform }}-${{ matrix.architecture }} + excludewinarm: ${{ !(inputs.tool-name == 'node' && inputs['tool-version'] < '20.0.0' && matrix.architecture == 'arm64' && matrix.platform == 'win32') }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest platform: linux - arch: x64 + architecture: x64 + - os: macos-13 + platform: darwin + architecture: x64 + - os: windows-latest + platform: win32 + architecture: x64 - os: setup-actions-ubuntu-arm64-2-core platform: linux - arch: arm64 + architecture: arm64 runner_type: self-hosted - - os: macos-13 - platform: darwin - arch: x64 - os: macos-latest platform: darwin - arch: arm64 - - os: windows-latest - platform: win32 - arch: x64 + architecture: arm64 - os: setup-actions-windows-arm64-4-core platform: win32 - arch: arm64 + architecture: arm64 runner_type: self-hosted steps: @@ -110,19 +116,25 @@ jobs: # Install 7-Zip choco install 7zip -y echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 - - uses: actions/checkout@v4 + - name: checkout + if: env.excludewinarm == 'true' + uses: actions/checkout@v4 with: submodules: true - name: Fully cleanup the toolcache directory before testing + if: env.excludewinarm == 'true' run: ./helpers/clean-toolcache.ps1 -ToolName "${{ inputs.tool-name }}" - name: Download artifact + if: env.excludewinarm == 'true' uses: actions/download-artifact@v4 with: - path: ${{ runner.temp }} + name: ${{ env.ARTIFACT_NAME }} + path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} - name: Extract files + if: env.excludewinarm == 'true' run: | if ('${{ matrix.platform }}' -eq 'win32') { if ('${{ inputs.tool-name }}' -eq 'node') { @@ -142,12 +154,16 @@ jobs: working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} - name: Apply build artifact to the local machine + if: env.excludewinarm == 'true' run: | - if ('${{ matrix.platform }}' -eq 'win32') { powershell ./setup.ps1 } else { sh ./setup.sh } + if ('${{ matrix.platform }}' -eq 'win32') { powershell ./setup.ps1 } + else { + sh ./setup.sh + } working-directory: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} - name: Setup Node.js ${{ inputs.tool-version }} - if: inputs.tool-name == 'node' + if: env.excludewinarm == 'true' && inputs.tool-name == 'node' uses: actions/setup-node@v4 with: node-version: ${{ inputs.tool-version }} @@ -159,6 +175,7 @@ jobs: go-version: ${{ inputs.tool-version }} - name: Wait for the logs + if: env.excludewinarm == 'true' run: | Write-Host "Fake step that does nothing" Write-Host "We need it because log from the previous step 'Setup ${{ inputs.tool-name }}' is not available here yet." @@ -167,6 +184,7 @@ jobs: for ($i = 0; $i -lt 200; $i++) { Get-Random } - name: Run tests + if: env.excludewinarm == 'true' env: VERSION: ${{ inputs.tool-version }} run: |