mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Add Windows Arm64 Nightly Builds (#139760)
This PR creates 3 new worklflows for Windows Arm64 target. The workflows and outputs can be reviewed at the following links: https://github.com/pytorch/pytorch/actions/workflows/generated-windows-arm64-binary-libtorch-release-nightly.yml https://github.com/pytorch/pytorch/actions/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml https://github.com/pytorch/pytorch/actions/workflows/generated-windows-arm64-binary-wheel-nightly.yml Pull Request resolved: https://github.com/pytorch/pytorch/pull/139760 Approved by: https://github.com/malfet Co-authored-by: Ozan Aydin <148207261+ozanMSFT@users.noreply.github.com> Co-authored-by: Huy Do <huydhn@gmail.com>
This commit is contained in:
committed by
PyTorch MergeBot
parent
e839e4f5bd
commit
61c4074df7
@ -17,32 +17,24 @@ curl -L -o "%INSTALLER_FILE%" %DOWNLOAD_URL%
|
|||||||
:: Install the Visual Studio Build Tools with C++ components
|
:: Install the Visual Studio Build Tools with C++ components
|
||||||
echo Installing Visual Studio Build Tools with C++ components...
|
echo Installing Visual Studio Build Tools with C++ components...
|
||||||
echo Installing MSVC %MSVC_VERSION%
|
echo Installing MSVC %MSVC_VERSION%
|
||||||
if "%MSVC_VERSION%" == "latest" (
|
"%INSTALLER_FILE%" --norestart --quiet --wait --installPath "%DEPENDENCIES_DIR%\VSBuildTools" ^
|
||||||
"%INSTALLER_FILE%" --norestart --nocache --quiet --wait --installPath "%DEPENDENCIES_DIR%\VSBuildTools" ^
|
--add Microsoft.VisualStudio.Workload.VCTools ^
|
||||||
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
|
--add Microsoft.VisualStudio.Component.Windows10SDK ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.ASAN ^
|
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.CMake.Project ^
|
--add Microsoft.VisualStudio.Component.VC.ASAN ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
|
--add Microsoft.VisualStudio.Component.VC.CMake.Project ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64
|
--add Microsoft.VisualStudio.Component.VC.CoreBuildTools ^
|
||||||
) else if "%MSVC_VERSION%" == "14.40" (
|
--add Microsoft.VisualStudio.Component.VC.CoreIde ^
|
||||||
"%INSTALLER_FILE%" --norestart --nocache --quiet --wait --installPath "%DEPENDENCIES_DIR%\VSBuildTools" ^
|
--add Microsoft.VisualStudio.Component.VC.Redist.14.Latest ^
|
||||||
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
|
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64EC ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.ASAN ^
|
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
|
||||||
--add Microsoft.VisualStudio.Component.VC.CMake.Project ^
|
--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64
|
||||||
--add Microsoft.VisualStudio.Component.VC.14.40.17.10.ARM64 ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.14.40.17.10.x86.x64
|
echo exitcode = %errorlevel%
|
||||||
) else if "%MSVC_VERSION%" == "14.36" (
|
|
||||||
"%INSTALLER_FILE%" --norestart --nocache --quiet --wait --installPath "%DEPENDENCIES_DIR%\VSBuildTools" ^
|
|
||||||
--add Microsoft.VisualStudio.Component.Windows11SDK.22621 ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.ASAN ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.CMake.Project ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.14.36.17.6.ARM64 ^
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Check if installation was successful
|
:: Check if installation was successful
|
||||||
if %errorlevel% neq 0 (
|
if %errorlevel% neq 0 (
|
||||||
echo "Failed to install Visual Studio Build Tools with C++ components. (exitcode = %errorlevel%)"
|
echo Failed to install Visual Studio Build Tools with C++ components.
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -6,22 +6,25 @@ echo Dependency Python installation started.
|
|||||||
if not exist "%DOWNLOADS_DIR%" mkdir %DOWNLOADS_DIR%
|
if not exist "%DOWNLOADS_DIR%" mkdir %DOWNLOADS_DIR%
|
||||||
if not exist "%DEPENDENCIES_DIR%" mkdir %DEPENDENCIES_DIR%
|
if not exist "%DEPENDENCIES_DIR%" mkdir %DEPENDENCIES_DIR%
|
||||||
|
|
||||||
if "%PYTHON_VERSION%"=="Python312" (
|
if "%DESIRED_PYTHON%" == "3.13" (
|
||||||
echo Python version is set to Python312
|
echo Python version is set to 3.13
|
||||||
set DOWNLOAD_URL="https://www.python.org/ftp/python/3.12.7/python-3.12.7-arm64.exe"
|
set DOWNLOAD_URL=https://www.python.org/ftp/python/3.13.2/python-3.13.2-arm64.exe
|
||||||
) else if "%PYTHON_VERSION%"=="Python311" (
|
) else if "%DESIRED_PYTHON%" == "3.12" (
|
||||||
echo Python version is set to Python311
|
echo Python version is set to 3.12
|
||||||
set DOWNLOAD_URL="https://www.python.org/ftp/python/3.11.9/python-3.11.9-arm64.exe"
|
set DOWNLOAD_URL=https://www.python.org/ftp/python/3.12.7/python-3.12.7-arm64.exe
|
||||||
|
) else if "%DESIRED_PYTHON%" == "3.11" (
|
||||||
|
echo Python version is set to 3.11
|
||||||
|
set DOWNLOAD_URL=https://www.python.org/ftp/python/3.11.9/python-3.11.9-arm64.exe
|
||||||
) else (
|
) else (
|
||||||
echo PYTHON_VERSION not defined, Python version is set to Python312
|
echo DESIRED_PYTHON not defined, Python version is set to 3.12
|
||||||
set DOWNLOAD_URL="https://www.python.org/ftp/python/3.12.7/python-3.12.7-arm64.exe"
|
set DOWNLOAD_URL=https://www.python.org/ftp/python/3.12.7/python-3.12.7-arm64.exe
|
||||||
)
|
)
|
||||||
|
|
||||||
set INSTALLER_FILE=%DOWNLOADS_DIR%\python-installer.exe
|
set INSTALLER_FILE=%DOWNLOADS_DIR%\python-installer.exe
|
||||||
|
|
||||||
:: Download installer
|
:: Download installer
|
||||||
echo Downloading Python...
|
echo Downloading Python...
|
||||||
curl -L -o "%INSTALLER_FILE%" %DOWNLOAD_URL%
|
curl -L -o "%INSTALLER_FILE%" "%DOWNLOAD_URL%"
|
||||||
|
|
||||||
:: Install Python
|
:: Install Python
|
||||||
echo Installing Python...
|
echo Installing Python...
|
||||||
|
@ -14,7 +14,7 @@ where python
|
|||||||
:: install dependencies
|
:: install dependencies
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
pip install pytest numpy
|
pip install pytest numpy protobuf expecttest hypothesis
|
||||||
|
|
||||||
:: find file name for pytorch wheel
|
:: find file name for pytorch wheel
|
||||||
for /f "delims=" %%f in ('dir /b "%PYTORCH_FINAL_PACKAGE_DIR%" ^| findstr "torch-"') do set "TORCH_WHEEL_FILENAME=%PYTORCH_FINAL_PACKAGE_DIR%\%%f"
|
for /f "delims=" %%f in ('dir /b "%PYTORCH_FINAL_PACKAGE_DIR%" ^| findstr "torch-"') do set "TORCH_WHEEL_FILENAME=%PYTORCH_FINAL_PACKAGE_DIR%\%%f"
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
setlocal
|
setlocal
|
||||||
|
|
||||||
set "ORIG_PATH=%PATH%"
|
|
||||||
|
|
||||||
if "%PACKAGE_TYPE%" == "wheel" goto wheel
|
if "%PACKAGE_TYPE%" == "wheel" goto wheel
|
||||||
if "%PACKAGE_TYPE%" == "libtorch" goto libtorch
|
if "%PACKAGE_TYPE%" == "libtorch" goto libtorch
|
||||||
|
|
||||||
@ -10,21 +8,7 @@ echo "unknown package type"
|
|||||||
exit /b 1
|
exit /b 1
|
||||||
|
|
||||||
:wheel
|
:wheel
|
||||||
echo "install wheel package"
|
call %PYTORCH_ROOT%\.ci\pytorch\windows\arm64\bootstrap_tests.bat
|
||||||
|
|
||||||
echo Running pip install...
|
|
||||||
pip install -q --pre numpy protobuf
|
|
||||||
echo Error level after pip install: %ERRORLEVEL%
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
|
|
||||||
for /F "delims=" %%i in ('where /R "%PYTORCH_FINAL_PACKAGE_DIR:/=\%" *.whl') do pip install "%%i"
|
|
||||||
if errorlevel 1 exit /b 1
|
|
||||||
|
|
||||||
goto smoke_test
|
|
||||||
|
|
||||||
:smoke_test
|
|
||||||
python -c "import torch"
|
|
||||||
if ERRORLEVEL 1 exit /b 1
|
|
||||||
|
|
||||||
echo Running python rnn_smoke.py...
|
echo Running python rnn_smoke.py...
|
||||||
python %PYTORCH_ROOT%\.ci\pytorch\test_example_code\rnn_smoke_win_arm64.py
|
python %PYTORCH_ROOT%\.ci\pytorch\test_example_code\rnn_smoke_win_arm64.py
|
||||||
@ -39,10 +23,12 @@ goto end
|
|||||||
:libtorch
|
:libtorch
|
||||||
echo "install and test libtorch"
|
echo "install and test libtorch"
|
||||||
|
|
||||||
for /F "delims=" %%i in ('where /R "%PYTORCH_FINAL_PACKAGE_DIR:/=\%" *-latest.zip') do tar -xf "%%i" -C tmp
|
if not exist tmp mkdir tmp
|
||||||
|
|
||||||
|
for /F "delims=" %%i in ('where /R "%PYTORCH_FINAL_PACKAGE_DIR:/=\%" *-latest.zip') do C:\Windows\System32\tar.exe -xf "%%i" -C tmp
|
||||||
if ERRORLEVEL 1 exit /b 1
|
if ERRORLEVEL 1 exit /b 1
|
||||||
|
|
||||||
pushd tmp\libtorch
|
pushd tmp
|
||||||
|
|
||||||
set VC_VERSION_LOWER=14
|
set VC_VERSION_LOWER=14
|
||||||
set VC_VERSION_UPPER=36
|
set VC_VERSION_UPPER=36
|
||||||
@ -60,6 +46,4 @@ if ERRORLEVEL 1 exit /b 1
|
|||||||
.\simple-torch-test.exe
|
.\simple-torch-test.exe
|
||||||
if ERRORLEVEL 1 exit /b 1
|
if ERRORLEVEL 1 exit /b 1
|
||||||
|
|
||||||
:end
|
:end
|
||||||
set "PATH=%ORIG_PATH%"
|
|
||||||
popd
|
|
22
.circleci/scripts/binary_windows_arm64_build.sh
Normal file
22
.circleci/scripts/binary_windows_arm64_build.sh
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
source "${BINARY_ENV_FILE:-/c/w/env}"
|
||||||
|
mkdir -p "$PYTORCH_FINAL_PACKAGE_DIR"
|
||||||
|
|
||||||
|
export USE_SCCACHE=1
|
||||||
|
export SCCACHE_IGNORE_SERVER_IO_ERROR=1
|
||||||
|
|
||||||
|
echo "Free space on filesystem before build:"
|
||||||
|
df -h
|
||||||
|
|
||||||
|
export NIGHTLIES_PYTORCH_ROOT="$PYTORCH_ROOT"
|
||||||
|
|
||||||
|
if [[ "$PACKAGE_TYPE" == 'libtorch' ]]; then
|
||||||
|
pytorch/.ci/pytorch/windows/arm64/build_libtorch.bat
|
||||||
|
elif [[ "$PACKAGE_TYPE" == 'wheel' ]]; then
|
||||||
|
pytorch/.ci/pytorch/windows/arm64/build_pytorch.bat
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Free space on filesystem after build:"
|
||||||
|
df -h
|
6
.circleci/scripts/binary_windows_arm64_test.sh
Normal file
6
.circleci/scripts/binary_windows_arm64_test.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux -o pipefail
|
||||||
|
|
||||||
|
source "${BINARY_ENV_FILE:-/c/w/env}"
|
||||||
|
|
||||||
|
pytorch/.ci/pytorch/windows/arm64/smoke_test.bat
|
2
.github/actionlint.yaml
vendored
2
.github/actionlint.yaml
vendored
@ -43,6 +43,8 @@ self-hosted-runner:
|
|||||||
- windows.8xlarge.nvidia.gpu
|
- windows.8xlarge.nvidia.gpu
|
||||||
- windows.8xlarge.nvidia.gpu.nonephemeral
|
- windows.8xlarge.nvidia.gpu.nonephemeral
|
||||||
- windows.g5.4xlarge.nvidia.gpu
|
- windows.g5.4xlarge.nvidia.gpu
|
||||||
|
# Windows ARM64 runners
|
||||||
|
- windows-11-arm64
|
||||||
# Organization-wide AMD hosted runners
|
# Organization-wide AMD hosted runners
|
||||||
- linux.rocm.gpu
|
- linux.rocm.gpu
|
||||||
- linux.rocm.gpu.2
|
- linux.rocm.gpu.2
|
||||||
|
10
.github/scripts/generate_binary_build_matrix.py
vendored
10
.github/scripts/generate_binary_build_matrix.py
vendored
@ -279,11 +279,15 @@ def generate_libtorch_matrix(
|
|||||||
gpu_arch_type, gpu_arch_version
|
gpu_arch_type, gpu_arch_version
|
||||||
),
|
),
|
||||||
"libtorch_variant": libtorch_variant,
|
"libtorch_variant": libtorch_variant,
|
||||||
"libtorch_config": abi_version if os == "windows" else "",
|
"libtorch_config": abi_version
|
||||||
"devtoolset": abi_version if os != "windows" else "",
|
if os in ("windows", "windows-arm64")
|
||||||
|
else "",
|
||||||
|
"devtoolset": abi_version
|
||||||
|
if os not in ("windows", "windows-arm64")
|
||||||
|
else "",
|
||||||
"container_image": (
|
"container_image": (
|
||||||
LIBTORCH_CONTAINER_IMAGES[(arch_version, abi_version)]
|
LIBTORCH_CONTAINER_IMAGES[(arch_version, abi_version)]
|
||||||
if os != "windows"
|
if os not in ("windows", "windows-arm64")
|
||||||
else ""
|
else ""
|
||||||
),
|
),
|
||||||
"package_type": "libtorch",
|
"package_type": "libtorch",
|
||||||
|
51
.github/scripts/generate_ci_workflows.py
vendored
51
.github/scripts/generate_ci_workflows.py
vendored
@ -96,6 +96,7 @@ class BinaryBuildWorkflow:
|
|||||||
class OperatingSystem:
|
class OperatingSystem:
|
||||||
LINUX = "linux"
|
LINUX = "linux"
|
||||||
WINDOWS = "windows"
|
WINDOWS = "windows"
|
||||||
|
WINDOWS_ARM64 = "windows-arm64"
|
||||||
MACOS = "macos"
|
MACOS = "macos"
|
||||||
MACOS_ARM64 = "macos-arm64"
|
MACOS_ARM64 = "macos-arm64"
|
||||||
LINUX_AARCH64 = "linux-aarch64"
|
LINUX_AARCH64 = "linux-aarch64"
|
||||||
@ -261,6 +262,52 @@ WINDOWS_BINARY_SMOKE_WORKFLOWS = [
|
|||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
WINDOWS_ARM64_BINARY_BUILD_WORKFLOWS = [
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.WINDOWS_ARM64,
|
||||||
|
package_type="wheel",
|
||||||
|
build_configs=generate_binary_build_matrix.generate_wheels_matrix(
|
||||||
|
OperatingSystem.WINDOWS_ARM64,
|
||||||
|
arches=["cpu"],
|
||||||
|
python_versions=["3.12"],
|
||||||
|
),
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
labels={LABEL_CIFLOW_BINARIES, LABEL_CIFLOW_BINARIES_WHEEL},
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.WINDOWS_ARM64,
|
||||||
|
package_type="libtorch",
|
||||||
|
abi_version=generate_binary_build_matrix.RELEASE,
|
||||||
|
build_configs=generate_binary_build_matrix.generate_libtorch_matrix(
|
||||||
|
OperatingSystem.WINDOWS_ARM64,
|
||||||
|
generate_binary_build_matrix.RELEASE,
|
||||||
|
arches=["cpu"],
|
||||||
|
libtorch_variants=["shared-with-deps"],
|
||||||
|
),
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
labels={LABEL_CIFLOW_BINARIES, LABEL_CIFLOW_BINARIES_LIBTORCH},
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
BinaryBuildWorkflow(
|
||||||
|
os=OperatingSystem.WINDOWS_ARM64,
|
||||||
|
package_type="libtorch",
|
||||||
|
abi_version=generate_binary_build_matrix.DEBUG,
|
||||||
|
build_configs=generate_binary_build_matrix.generate_libtorch_matrix(
|
||||||
|
OperatingSystem.WINDOWS_ARM64,
|
||||||
|
generate_binary_build_matrix.DEBUG,
|
||||||
|
arches=["cpu"],
|
||||||
|
libtorch_variants=["shared-with-deps"],
|
||||||
|
),
|
||||||
|
ciflow_config=CIFlowConfig(
|
||||||
|
labels={LABEL_CIFLOW_BINARIES, LABEL_CIFLOW_BINARIES_LIBTORCH},
|
||||||
|
isolated_workflow=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
MACOS_BINARY_BUILD_WORKFLOWS = [
|
MACOS_BINARY_BUILD_WORKFLOWS = [
|
||||||
BinaryBuildWorkflow(
|
BinaryBuildWorkflow(
|
||||||
os=OperatingSystem.MACOS_ARM64,
|
os=OperatingSystem.MACOS_ARM64,
|
||||||
@ -355,6 +402,10 @@ def main() -> None:
|
|||||||
jinja_env.get_template("windows_binary_build_workflow.yml.j2"),
|
jinja_env.get_template("windows_binary_build_workflow.yml.j2"),
|
||||||
WINDOWS_BINARY_SMOKE_WORKFLOWS,
|
WINDOWS_BINARY_SMOKE_WORKFLOWS,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
jinja_env.get_template("windows_arm64_binary_build_workflow.yml.j2"),
|
||||||
|
WINDOWS_ARM64_BINARY_BUILD_WORKFLOWS,
|
||||||
|
),
|
||||||
(
|
(
|
||||||
jinja_env.get_template("macos_binary_build_workflow.yml.j2"),
|
jinja_env.get_template("macos_binary_build_workflow.yml.j2"),
|
||||||
MACOS_BINARY_BUILD_WORKFLOWS,
|
MACOS_BINARY_BUILD_WORKFLOWS,
|
||||||
|
197
.github/templates/windows_arm64_binary_build_workflow.yml.j2
vendored
Normal file
197
.github/templates/windows_arm64_binary_build_workflow.yml.j2
vendored
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
{% import 'common.yml.j2' as common %}
|
||||||
|
{% import 'upload.yml.j2' as upload %}
|
||||||
|
|
||||||
|
{%- block name -%}
|
||||||
|
# Template is at: .github/templates/windows_arm64_binary_build_workflow.yml.j2
|
||||||
|
# Generation script: .github/scripts/generate_ci_workflows.py
|
||||||
|
name: !{{ build_environment }}
|
||||||
|
{%- endblock %}
|
||||||
|
|
||||||
|
{%- macro set_runner_specific_vars() -%}
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- !{{ branches }}
|
||||||
|
{%- if branches == "nightly" %}
|
||||||
|
tags:
|
||||||
|
# NOTE: Binary build pipelines should only get triggered on release candidate builds
|
||||||
|
# Release candidate tags look like: v1.11.0-rc1
|
||||||
|
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+
|
||||||
|
{%- endif %}
|
||||||
|
{%- for label in ciflow_config.labels | sort %}
|
||||||
|
{%- if loop.first and branches != "nightly" %}
|
||||||
|
tags:
|
||||||
|
{%- endif %}
|
||||||
|
- '!{{ label }}/*'
|
||||||
|
{%- endfor %}
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_ENVIRONMENT: !{{ build_environment }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
PYTORCH_ROOT: /pytorch
|
||||||
|
DOWNLOADS_DIR: c:\temp\downloads
|
||||||
|
DEPENDENCIES_DIR: c:\temp\dependencies
|
||||||
|
ENABLE_APL: 1
|
||||||
|
ENABLE_OPENBLAS: 0
|
||||||
|
MSVC_VERSION : 14.42
|
||||||
|
AWS_DEFAULT_REGION: us-east-1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-label-type:
|
||||||
|
if: github.repository_owner == 'pytorch'
|
||||||
|
name: get-label-type
|
||||||
|
uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main
|
||||||
|
with:
|
||||||
|
triggering_actor: ${{ github.triggering_actor }}
|
||||||
|
issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
|
||||||
|
curr_branch: ${{ github.head_ref || github.ref_name }}
|
||||||
|
curr_ref_type: ${{ github.ref_type }}
|
||||||
|
|
||||||
|
{%- for config in build_configs %}
|
||||||
|
!{{ config["build_name"] }}-build:
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs: get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: !{{ common.timeout_minutes }}
|
||||||
|
!{{ upload.binary_env(config, True) }}
|
||||||
|
{%- if config.pytorch_extra_install_requirements is defined and config.pytorch_extra_install_requirements|d('')|length > 0 %}
|
||||||
|
PYTORCH_EXTRA_INSTALL_REQUIREMENTS: !{{ config.pytorch_extra_install_requirements }}
|
||||||
|
{%- endif %}
|
||||||
|
steps:
|
||||||
|
!{{ set_runner_specific_vars() }}
|
||||||
|
- name: Bootstrap folders
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
mkdir "%NIGHTLIES_PYTORCH_ROOT%"
|
||||||
|
mkdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch - recursive
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Bootstrap sccache
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_sccache.bat"
|
||||||
|
- name: Bootstrap Libuv
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_libuv.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Build PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_build.sh"
|
||||||
|
- uses: !{{ common.upload_artifact_action }}
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: !{{ config["build_name"] }}
|
||||||
|
retention-days: 14
|
||||||
|
if-no-files-found: error
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
!{{ config["build_name"] }}-test: # Testing
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs:
|
||||||
|
- !{{ config["build_name"] }}-build
|
||||||
|
- get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: !{{ common.timeout_minutes }}
|
||||||
|
!{{ upload.binary_env(config, True) }}
|
||||||
|
steps:
|
||||||
|
!{{ set_runner_specific_vars() }}
|
||||||
|
- uses: !{{ common.download_artifact_action }}
|
||||||
|
name: Download Build Artifacts
|
||||||
|
with:
|
||||||
|
name: !{{ config["build_name"] }}
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Test PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_test.sh"
|
||||||
|
{%- if branches == "nightly" %}
|
||||||
|
!{{ upload.upload_binaries(config, True) }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endfor %}
|
229
.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml
generated
vendored
Normal file
229
.github/workflows/generated-windows-arm64-binary-libtorch-debug-nightly.yml
generated
vendored
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
# @generated DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
|
# Template is at: .github/templates/windows_arm64_binary_build_workflow.yml.j2
|
||||||
|
# Generation script: .github/scripts/generate_ci_workflows.py
|
||||||
|
name: windows-arm64-binary-libtorch-debug
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
tags:
|
||||||
|
# NOTE: Binary build pipelines should only get triggered on release candidate builds
|
||||||
|
# Release candidate tags look like: v1.11.0-rc1
|
||||||
|
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+
|
||||||
|
- 'ciflow/binaries/*'
|
||||||
|
- 'ciflow/binaries_libtorch/*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_ENVIRONMENT: windows-arm64-binary-libtorch-debug
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
PYTORCH_ROOT: /pytorch
|
||||||
|
DOWNLOADS_DIR: c:\temp\downloads
|
||||||
|
DEPENDENCIES_DIR: c:\temp\dependencies
|
||||||
|
ENABLE_APL: 1
|
||||||
|
ENABLE_OPENBLAS: 0
|
||||||
|
MSVC_VERSION : 14.42
|
||||||
|
AWS_DEFAULT_REGION: us-east-1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-label-type:
|
||||||
|
if: github.repository_owner == 'pytorch'
|
||||||
|
name: get-label-type
|
||||||
|
uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main
|
||||||
|
with:
|
||||||
|
triggering_actor: ${{ github.triggering_actor }}
|
||||||
|
issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
|
||||||
|
curr_branch: ${{ github.head_ref || github.ref_name }}
|
||||||
|
curr_ref_type: ${{ github.ref_type }}
|
||||||
|
libtorch-cpu-shared-with-deps-debug-build:
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs: get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
LIBTORCH_CONFIG: debug
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- name: Bootstrap folders
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
mkdir "%NIGHTLIES_PYTORCH_ROOT%"
|
||||||
|
mkdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch - recursive
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Bootstrap sccache
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_sccache.bat"
|
||||||
|
- name: Bootstrap Libuv
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_libuv.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Build PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_build.sh"
|
||||||
|
- uses: actions/upload-artifact@v4.4.0
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: libtorch-cpu-shared-with-deps-debug
|
||||||
|
retention-days: 14
|
||||||
|
if-no-files-found: error
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
libtorch-cpu-shared-with-deps-debug-test: # Testing
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs:
|
||||||
|
- libtorch-cpu-shared-with-deps-debug-build
|
||||||
|
- get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
LIBTORCH_CONFIG: debug
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- uses: actions/download-artifact@v4.1.7
|
||||||
|
name: Download Build Artifacts
|
||||||
|
with:
|
||||||
|
name: libtorch-cpu-shared-with-deps-debug
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Test PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_test.sh"
|
||||||
|
libtorch-cpu-shared-with-deps-debug-upload: # Uploading
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
needs: libtorch-cpu-shared-with-deps-debug-test
|
||||||
|
with:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
LIBTORCH_CONFIG: debug
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
build_name: libtorch-cpu-shared-with-deps-debug
|
||||||
|
secrets:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
uses: ./.github/workflows/_binary-upload.yml
|
229
.github/workflows/generated-windows-arm64-binary-libtorch-release-nightly.yml
generated
vendored
Normal file
229
.github/workflows/generated-windows-arm64-binary-libtorch-release-nightly.yml
generated
vendored
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
# @generated DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
|
# Template is at: .github/templates/windows_arm64_binary_build_workflow.yml.j2
|
||||||
|
# Generation script: .github/scripts/generate_ci_workflows.py
|
||||||
|
name: windows-arm64-binary-libtorch-release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
tags:
|
||||||
|
# NOTE: Binary build pipelines should only get triggered on release candidate builds
|
||||||
|
# Release candidate tags look like: v1.11.0-rc1
|
||||||
|
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+
|
||||||
|
- 'ciflow/binaries/*'
|
||||||
|
- 'ciflow/binaries_libtorch/*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_ENVIRONMENT: windows-arm64-binary-libtorch-release
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
PYTORCH_ROOT: /pytorch
|
||||||
|
DOWNLOADS_DIR: c:\temp\downloads
|
||||||
|
DEPENDENCIES_DIR: c:\temp\dependencies
|
||||||
|
ENABLE_APL: 1
|
||||||
|
ENABLE_OPENBLAS: 0
|
||||||
|
MSVC_VERSION : 14.42
|
||||||
|
AWS_DEFAULT_REGION: us-east-1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-label-type:
|
||||||
|
if: github.repository_owner == 'pytorch'
|
||||||
|
name: get-label-type
|
||||||
|
uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main
|
||||||
|
with:
|
||||||
|
triggering_actor: ${{ github.triggering_actor }}
|
||||||
|
issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
|
||||||
|
curr_branch: ${{ github.head_ref || github.ref_name }}
|
||||||
|
curr_ref_type: ${{ github.ref_type }}
|
||||||
|
libtorch-cpu-shared-with-deps-release-build:
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs: get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
LIBTORCH_CONFIG: release
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- name: Bootstrap folders
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
mkdir "%NIGHTLIES_PYTORCH_ROOT%"
|
||||||
|
mkdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch - recursive
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Bootstrap sccache
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_sccache.bat"
|
||||||
|
- name: Bootstrap Libuv
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_libuv.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Build PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_build.sh"
|
||||||
|
- uses: actions/upload-artifact@v4.4.0
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: libtorch-cpu-shared-with-deps-release
|
||||||
|
retention-days: 14
|
||||||
|
if-no-files-found: error
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
libtorch-cpu-shared-with-deps-release-test: # Testing
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs:
|
||||||
|
- libtorch-cpu-shared-with-deps-release-build
|
||||||
|
- get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
LIBTORCH_CONFIG: release
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- uses: actions/download-artifact@v4.1.7
|
||||||
|
name: Download Build Artifacts
|
||||||
|
with:
|
||||||
|
name: libtorch-cpu-shared-with-deps-release
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Test PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_test.sh"
|
||||||
|
libtorch-cpu-shared-with-deps-release-upload: # Uploading
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
needs: libtorch-cpu-shared-with-deps-release-test
|
||||||
|
with:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: libtorch
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
LIBTORCH_CONFIG: release
|
||||||
|
LIBTORCH_VARIANT: shared-with-deps
|
||||||
|
# This is a dummy value for libtorch to work correctly with our batch scripts
|
||||||
|
# without this value pip does not get installed for some reason
|
||||||
|
DESIRED_PYTHON: "3.9"
|
||||||
|
build_name: libtorch-cpu-shared-with-deps-release
|
||||||
|
secrets:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
uses: ./.github/workflows/_binary-upload.yml
|
218
.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml
generated
vendored
Normal file
218
.github/workflows/generated-windows-arm64-binary-wheel-nightly.yml
generated
vendored
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
# @generated DO NOT EDIT MANUALLY
|
||||||
|
|
||||||
|
# Template is at: .github/templates/windows_arm64_binary_build_workflow.yml.j2
|
||||||
|
# Generation script: .github/scripts/generate_ci_workflows.py
|
||||||
|
name: windows-arm64-binary-wheel
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
tags:
|
||||||
|
# NOTE: Binary build pipelines should only get triggered on release candidate builds
|
||||||
|
# Release candidate tags look like: v1.11.0-rc1
|
||||||
|
- v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+
|
||||||
|
- 'ciflow/binaries/*'
|
||||||
|
- 'ciflow/binaries_wheel/*'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_ENVIRONMENT: windows-arm64-binary-wheel
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
PYTORCH_ROOT: /pytorch
|
||||||
|
DOWNLOADS_DIR: c:\temp\downloads
|
||||||
|
DEPENDENCIES_DIR: c:\temp\dependencies
|
||||||
|
ENABLE_APL: 1
|
||||||
|
ENABLE_OPENBLAS: 0
|
||||||
|
MSVC_VERSION : 14.42
|
||||||
|
AWS_DEFAULT_REGION: us-east-1
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
get-label-type:
|
||||||
|
if: github.repository_owner == 'pytorch'
|
||||||
|
name: get-label-type
|
||||||
|
uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@main
|
||||||
|
with:
|
||||||
|
triggering_actor: ${{ github.triggering_actor }}
|
||||||
|
issue_owner: ${{ github.event.pull_request.user.login || github.event.issue.user.login }}
|
||||||
|
curr_branch: ${{ github.head_ref || github.ref_name }}
|
||||||
|
curr_ref_type: ${{ github.ref_type }}
|
||||||
|
wheel-py3_12-cpu-build:
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs: get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: wheel
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
DESIRED_PYTHON: "3.12"
|
||||||
|
PYTORCH_EXTRA_INSTALL_REQUIREMENTS: nvidia-cuda-nvrtc-cu12==12.4.127; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-runtime-cu12==12.4.127; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cuda-cupti-cu12==12.4.127; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cudnn-cu12==9.1.0.70; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cublas-cu12==12.4.5.8; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cufft-cu12==11.2.1.3; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-curand-cu12==10.3.5.147; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusolver-cu12==11.6.1.9; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparse-cu12==12.3.1.170; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-cusparselt-cu12==0.6.2; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nccl-cu12==2.25.1; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvtx-cu12==12.4.127; platform_system == 'Linux' and platform_machine == 'x86_64' | nvidia-nvjitlink-cu12==12.4.127; platform_system == 'Linux' and platform_machine == 'x86_64'
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- name: Bootstrap folders
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
mkdir "%NIGHTLIES_PYTORCH_ROOT%"
|
||||||
|
mkdir "%PYTORCH_FINAL_PACKAGE_DIR%"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch - recursive
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Bootstrap sccache
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_sccache.bat"
|
||||||
|
- name: Bootstrap Libuv
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_libuv.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Build PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_build.sh"
|
||||||
|
- uses: actions/upload-artifact@v4.4.0
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: wheel-py3_12-cpu
|
||||||
|
retention-days: 14
|
||||||
|
if-no-files-found: error
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
wheel-py3_12-cpu-test: # Testing
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
needs:
|
||||||
|
- wheel-py3_12-cpu-build
|
||||||
|
- get-label-type
|
||||||
|
runs-on: "windows-11-arm64"
|
||||||
|
timeout-minutes: 240
|
||||||
|
env:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: wheel
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
SKIP_ALL_TESTS: 1
|
||||||
|
DESIRED_PYTHON: "3.12"
|
||||||
|
steps:
|
||||||
|
# NOTE: These environment variables are put here so that they can be applied on every job equally
|
||||||
|
# They are also here because setting them at a workflow level doesn't give us access to the
|
||||||
|
# runner.temp variable, which we need.
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
echo BINARY_ENV_FILE=%RUNNER_TEMP%/env>> %GITHUB_ENV%
|
||||||
|
echo PYTORCH_FINAL_PACKAGE_DIR=%RUNNER_TEMP%/artifacts>> %GITHUB_ENV%
|
||||||
|
echo WIN_PACKAGE_WORK_DIR=%RUNNER_TEMP%>> %GITHUB_ENV%
|
||||||
|
- uses: actions/download-artifact@v4.1.7
|
||||||
|
name: Download Build Artifacts
|
||||||
|
with:
|
||||||
|
name: wheel-py3_12-cpu
|
||||||
|
path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
- name: Bootstrap Git
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_git.bat"
|
||||||
|
- name: Remove Pytorch folder
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
rmdir /s /q "pytorch"
|
||||||
|
- name: Git checkout PyTorch
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
path: "pytorch"
|
||||||
|
submodules: recursive
|
||||||
|
- name: Bootstrap APL
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_apl.bat"
|
||||||
|
- name: Bootstrap Python
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_python.bat"
|
||||||
|
- name: Bootstrap Build Tools
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_buildtools.bat"
|
||||||
|
- name: Bootstrap Rust
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
"pytorch/.ci/pytorch/windows/arm64/bootstrap_rust.bat"
|
||||||
|
- name: Populate binary env
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_populate_env.sh"
|
||||||
|
- name: Test PyTorch binary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
"pytorch/.circleci/scripts/binary_windows_arm64_test.sh"
|
||||||
|
wheel-py3_12-cpu-upload: # Uploading
|
||||||
|
if: ${{ github.repository_owner == 'pytorch' }}
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
contents: read
|
||||||
|
needs: wheel-py3_12-cpu-test
|
||||||
|
with:
|
||||||
|
PYTORCH_ROOT: ${{ github.workspace }}/pytorch
|
||||||
|
PACKAGE_TYPE: wheel
|
||||||
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
||||||
|
# favor of GPU_ARCH_VERSION
|
||||||
|
DESIRED_CUDA: cpu
|
||||||
|
GPU_ARCH_TYPE: cpu
|
||||||
|
DESIRED_PYTHON: "3.12"
|
||||||
|
build_name: wheel-py3_12-cpu
|
||||||
|
secrets:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
uses: ./.github/workflows/_binary-upload.yml
|
Reference in New Issue
Block a user