mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-15 21:00:47 +00:00
Given the recent outage w.r.t. binary workflows running on CI, I want to close the gap between them and regular CI jobs. The first part is to add the same filter step used by regular CI jobs so that oncalls can disable the job if need. * Nightly runs are excluded as it includes the step to publish nightly binaries. Allowing oncalls to disable this part requires more thoughts. So this covers only CI binary build and test jobs * As binary jobs doesn't have a concept of test matrix config which is a required parameter to the filter script, I use a pseudo input of test config default there ### Testing * https://github.com/pytorch/pytorch/issues/100758. The job is skipped in https://github.com/pytorch/pytorch/actions/runs/4911034089/jobs/8768782689 * https://github.com/pytorch/pytorch/issues/100759. The job is skipped in https://github.com/pytorch/pytorch/actions/runs/4911033966/jobs/8768713669 Note that Windows binary jobs are not run in PR anymore after https://github.com/pytorch/pytorch/pull/100638, and MacOS binary jobs only run nightly. So there are only Linux jobs left. Pull Request resolved: https://github.com/pytorch/pytorch/pull/100754 Approved by: https://github.com/ZainRizvi
139 lines
5.2 KiB
YAML
139 lines
5.2 KiB
YAML
name: upload
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
build_name:
|
|
required: true
|
|
type: string
|
|
description: The build's name
|
|
use_s3:
|
|
type: boolean
|
|
default: true
|
|
description: If true, will download artifacts from s3. Otherwise will use the default GitHub artifact download action
|
|
PYTORCH_ROOT:
|
|
required: false
|
|
type: string
|
|
description: Root directory for the pytorch/pytorch repository. Not actually needed, but currently passing it in since we pass in the same inputs to the reusable workflows of all binary builds
|
|
BUILDER_ROOT:
|
|
required: false
|
|
type: string
|
|
description: Root directory for the pytorch/builder repository. Not actually needed, but currently passing it in since we pass in the same inputs to the reusable workflows of all binary builds
|
|
PACKAGE_TYPE:
|
|
required: true
|
|
type: string
|
|
description: Package type
|
|
DESIRED_CUDA:
|
|
required: true
|
|
type: string
|
|
description: Desired CUDA version
|
|
GPU_ARCH_VERSION:
|
|
required: false
|
|
type: string
|
|
description: GPU Arch version
|
|
GPU_ARCH_TYPE:
|
|
required: true
|
|
type: string
|
|
description: GPU Arch type
|
|
DOCKER_IMAGE:
|
|
required: false
|
|
type: string
|
|
description: Docker image to use
|
|
LIBTORCH_CONFIG:
|
|
required: false
|
|
type: string
|
|
description: Desired libtorch config (for libtorch builds only)
|
|
LIBTORCH_VARIANT:
|
|
required: false
|
|
type: string
|
|
description: Desired libtorch variant (for libtorch builds only)
|
|
DESIRED_DEVTOOLSET:
|
|
required: false
|
|
type: string
|
|
description: Desired dev toolset
|
|
DESIRED_PYTHON:
|
|
required: false
|
|
type: string
|
|
description: Desired python version
|
|
secrets:
|
|
github-token:
|
|
required: true
|
|
description: Github Token
|
|
aws-access-key-id:
|
|
required: true
|
|
description: AWS access key id
|
|
aws-pytorch-uploader-secret-access-key:
|
|
required: true
|
|
description: AWS secret access key
|
|
conda-pytorchbot-token:
|
|
required: true
|
|
description: Conda PyTorchBot token
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: continuumio/miniconda3:4.12.0
|
|
env:
|
|
PYTORCH_ROOT: /pytorch
|
|
BUILDER_ROOT: /builder
|
|
PACKAGE_TYPE: ${{ inputs.PACKAGE_TYPE }}
|
|
# TODO: This is a legacy variable that we eventually want to get rid of in
|
|
# favor of GPU_ARCH_VERSION
|
|
DESIRED_CUDA: ${{ inputs.DESIRED_CUDA }}
|
|
GPU_ARCH_VERSION: ${{ inputs.GPU_ARCH_VERSION }}
|
|
GPU_ARCH_TYPE: ${{ inputs.GPU_ARCH_TYPE }}
|
|
DOCKER_IMAGE: ${{ inputs.DOCKER_IMAGE }}
|
|
SKIP_ALL_TESTS: 1
|
|
LIBTORCH_CONFIG: ${{ inputs.LIBTORCH_CONFIG }}
|
|
LIBTORCH_VARIANT: ${{ inputs.LIBTORCH_VARIANT }}
|
|
DESIRED_DEVTOOLSET: ${{ inputs.DESIRED_DEVTOOLSET }}
|
|
DESIRED_PYTHON: ${{ inputs.DESIRED_PYTHON }}
|
|
ANACONDA_USER: pytorch
|
|
BINARY_ENV_FILE: /tmp/env
|
|
GITHUB_TOKEN: ${{ secrets.github-token }}
|
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
PYTORCH_FINAL_PACKAGE_DIR: /artifacts
|
|
SHA1: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
steps:
|
|
- name: Checkout PyTorch
|
|
uses: pytorch/pytorch/.github/actions/checkout-pytorch@main
|
|
with:
|
|
no-sudo: true
|
|
|
|
- name: Download Build Artifacts
|
|
id: download-artifacts
|
|
# NB: When the previous build job is skipped, there won't be any artifacts and
|
|
# this step will fail. Binary build jobs can only be skipped on CI, not nightly
|
|
continue-on-error: true
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: ${{ inputs.build_name }}
|
|
path: "${{ runner.temp }}/artifacts/"
|
|
|
|
- name: Set DRY_RUN (only for tagged pushes)
|
|
if: ${{ github.event_name == 'push' && (github.event.ref == 'refs/heads/nightly' || (startsWith(github.event.ref, 'refs/tags/') && !startsWith(github.event.ref, 'refs/tags/ciflow/'))) }}
|
|
run: |
|
|
echo "DRY_RUN=disabled" >> "$GITHUB_ENV"
|
|
|
|
- name: Set UPLOAD_CHANNEL (only for tagged pushes)
|
|
if: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') && !startsWith(github.event.ref, 'refs/tags/ciflow/') }}
|
|
shell: bash -e -l {0}
|
|
run: |
|
|
# reference ends with an RC suffix
|
|
if [[ ${GITHUB_REF_NAME} = *-rc[0-9]* ]]; then
|
|
echo "UPLOAD_CHANNEL=test" >> "$GITHUB_ENV"
|
|
fi
|
|
|
|
- name: Upload binaries
|
|
if: steps.download-artifacts.outcome && steps.download-artifacts.outcome == 'success'
|
|
env:
|
|
PKG_DIR: "${{ runner.temp }}/artifacts"
|
|
UPLOAD_SUBFOLDER: "${{ env.DESIRED_CUDA }}"
|
|
# When running these on pull_request events these should be blank
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.aws-access-key-id }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.aws-pytorch-uploader-secret-access-key }}
|
|
ANACONDA_API_TOKEN: ${{ secrets.conda-pytorchbot-token }}
|
|
BUILD_NAME: ${{ inputs.build_name }}
|
|
run: |
|
|
set -ex
|
|
bash .circleci/scripts/binary_upload.sh
|