Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Extract windows-11-arm job from windows.yml #13174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 174 additions & 0 deletions .github/workflows/windows-arm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
name: Windows Arm
on:
push:
paths-ignore:
- 'doc/**'
- '**/man/*'
- '**.md'
- '**.rdoc'
- '**/.document'
- '.*.yml'
pull_request:
# Do not use paths-ignore for required status checks
# https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
merge_group:

concurrency:
group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}

permissions:
contents: read

jobs:
make:
strategy:
matrix:
include:
- os: 11-arm
test_task: 'btest test-basic test-tool' # check and test-spec are broken yet.
fail-fast: false

runs-on: windows-${{ matrix.os }}

if: >-
${{!(false
|| contains(github.event.head_commit.message, '[DOC]')
|| contains(github.event.head_commit.message, 'Document')
|| contains(github.event.pull_request.title, '[DOC]')
|| contains(github.event.pull_request.title, 'Document')
|| contains(github.event.pull_request.labels.*.name, 'Documentation')
|| (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
)}}

name: Windows ${{ matrix.os }}/Visual C++ ${{ matrix.vc }} (${{ matrix.test_task }})

env:
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
OS_VER: windows-${{ matrix.os }}
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_DEFAULT_TRIPLET: arm64-windows
RUBY_OPT_DIR: C:/a/ruby/ruby/src/vcpkg_installed/%VCPKG_DEFAULT_TRIPLET%

steps:
- run: md build
working-directory:

- name: Install libraries with scoop
run: |
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
iwr -useb get.scoop.sh | iex
Join-Path (Resolve-Path ~).Path "scoop\shims" >> $Env:GITHUB_PATH
scoop install vcpkg uutils-coreutils [email protected]
shell: pwsh

- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
sparse-checkout-cone-mode: false
sparse-checkout: /.github

- uses: ./.github/actions/setup/directories
with:
srcdir: src
builddir: build

- name: setup env
# Available Ruby versions: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md#ruby
# %TEMP% is inconsistent with %TMP% and test-all expects they are consistent.
# https://github.com/actions/virtual-environments/issues/712#issuecomment-613004302
run: |
::- Set up VC ${{ matrix.vc }}
set VCVARS="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat"
set VCVARS
set | uutils sort > old.env
call %VCVARS% ${{ matrix.vcvars || '' }}
nmake -f nul
set TMP=%USERPROFILE%\AppData\Local\Temp
set TEMP=%USERPROFILE%\AppData\Local\Temp
set MAKEFLAGS=l
set /a TEST_JOBS=(15 * %NUMBER_OF_PROCESSORS% / 10) > nul
set | uutils sort > new.env
uutils comm -13 old.env new.env >> %GITHUB_ENV%
del *.env

- name: baseruby version
run: ruby -v

- name: compiler version
run: cl

- name: volume info
run: Get-Volume
shell: pwsh

- name: Install libraries with vcpkg
run: |
vcpkg install --vcpkg-root=C:\Users\runneradmin\scoop\apps\vcpkg\current
working-directory: src

# TODO: We should use `../src` instead of `D:/a/ruby/ruby/src`
- name: Configure
run: >-
../src/win32/configure.bat --disable-install-doc
--with-opt-dir=%RUBY_OPT_DIR%
--with-gmp

- run: nmake prepare-vcpkg

- run: nmake incs

- run: nmake extract-extlibs

# On all other platforms, test-spec depending on extract-gems (in common.mk) is enough.
# But not for this Visual Studio workflow. So here we extract gems before building.
- run: nmake extract-gems

# windows-11-arm runner cannot run `ruby tool/file2lastrev.rb --revision.h --output=revision.h`
- run: |
Set-Content -Path "revision.h" -Value @"
#define RUBY_REVISION "8aedb979da"
#define RUBY_FULL_REVISION "8aedb979da4090116f4fc5a6497f139fd0038881"
#define RUBY_BRANCH_NAME "win-arm"
#define RUBY_RELEASE_DATETIME "2025-04-16T23:18:54Z"
#define RUBY_RELEASE_YEAR 2025
#define RUBY_RELEASE_MONTH 4
#define RUBY_RELEASE_DAY 17
"@
shell: pwsh
if: ${{ matrix.os == '11-arm' }}

- run: nmake

- name: Set up Launchable
uses: ./.github/actions/launchable/setup
with:
os: windows-${{ matrix.os < 2022 && '2019' || matrix.os }}
launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }}
builddir: build
srcdir: src
test-task: ${{ matrix.test_task || 'check' }}
continue-on-error: true
if: ${{ matrix.test_task != 'test-bundled-gems' }}

- run: nmake ${{ matrix.test_task || 'check' }}
env:
RUBY_TESTOPTS: -j${{ env.TEST_JOBS || 4 }}
timeout-minutes: 70

- uses: ./.github/actions/slack
with:
label: Windows ${{ matrix.os }} / VC ${{ matrix.vc }} / ${{ matrix.test_task || 'check' }}
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
if: ${{ failure() }}

defaults:
run:
working-directory: build
shell: cmd
25 changes: 2 additions & 23 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@ jobs:
vc: 2019
vcvars: '10.0.22621.0 -vcvars_ver=14.2'
test_task: check
- os: 11-arm
test_task: 'btest test-basic test-tool' # check and test-spec are broken yet.
target: arm64
- os: 2022
vc: 2019
vcvars: '10.0.22621.0 -vcvars_ver=14.2'
Expand All @@ -67,8 +64,8 @@ jobs:
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
OS_VER: windows-${{ matrix.os < 2022 && '2019' || matrix.os }}
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_DEFAULT_TRIPLET: ${{ matrix.target || 'x64' }}-windows
RUBY_OPT_DIR: ${{ matrix.os == '11-arm' && 'C' || 'D' }}:/a/ruby/ruby/src/vcpkg_installed/%VCPKG_DEFAULT_TRIPLET%
VCPKG_DEFAULT_TRIPLET: x64-windows
RUBY_OPT_DIR: D:/a/ruby/ruby/src/vcpkg_installed/%VCPKG_DEFAULT_TRIPLET%

steps:
- run: md build
Expand All @@ -79,7 +76,6 @@ jobs:
ruby-version: '3.0'
bundler: none
windows-toolchain: none
if: ${{ matrix.os != '11-arm' }}

- name: Install libraries with scoop
run: |
Expand Down Expand Up @@ -116,9 +112,6 @@ jobs:
for /f "delims=;" %%I in ('%vswhere% -latest -property installationPath') do (
set VCVARS="%%I\VC\Auxiliary\Build\vcvars64.bat"
)
if "${{ matrix.os }}" == "11-arm" (
set VCVARS="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsarm64.bat"
)
set VCVARS
set | uutils sort > old.env
call %VCVARS% ${{ matrix.vcvars || '' }}
Expand Down Expand Up @@ -163,20 +156,6 @@ jobs:
# But not for this Visual Studio workflow. So here we extract gems before building.
- run: nmake extract-gems

# windows-11-arm runner cannot run `ruby tool/file2lastrev.rb --revision.h --output=revision.h`
- run: |
Set-Content -Path "revision.h" -Value @"
#define RUBY_REVISION "8aedb979da"
#define RUBY_FULL_REVISION "8aedb979da4090116f4fc5a6497f139fd0038881"
#define RUBY_BRANCH_NAME "win-arm"
#define RUBY_RELEASE_DATETIME "2025-04-16T23:18:54Z"
#define RUBY_RELEASE_YEAR 2025
#define RUBY_RELEASE_MONTH 4
#define RUBY_RELEASE_DAY 17
"@
shell: pwsh
if: ${{ matrix.os == '11-arm' }}

- run: nmake

- name: Set up Launchable
Expand Down
Loading