Skip to content
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

Linux Wheel builds for Manylinux1. Use alternative to actions, checkout, upload #5941

Merged
merged 10 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from 3 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
57 changes: 57 additions & 0 deletions .github/actions/binary-upload/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Binary upload action

description: pull a specific docker image

inputs:
repository:
description: 'Repository to checkout, defaults to ""'
default: ''
type: string
trigger-event:
description: "Trigger Event in caller that determines whether or not to upload"
type: string
default: ''

runs:
using: composite
steps:
- name: Configure aws credentials (pytorch account)
if: ${{ inputs.trigger-event == 'schedule' || (inputs.trigger-event == 'push' && startsWith(github.event.ref, 'refs/heads/nightly')) }}
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: arn:aws:iam::749337293305:role/gha_workflow_nightly_build_wheels
aws-region: us-east-1

- name: Configure aws credentials (pytorch account)
if: ${{ env.CHANNEL == 'test' && startsWith(github.event.ref, 'refs/tags/v') }}
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: arn:aws:iam::749337293305:role/gha_workflow_test_build_wheels
aws-region: us-east-1

- name: Nightly or release RC
if: ${{ inputs.trigger-event == 'schedule' || (inputs.trigger-event == 'push' && startsWith(github.event.ref, 'refs/heads/nightly')) || (env.CHANNEL == 'test' && startsWith(github.event.ref, 'refs/tags/')) }}
shell: bash
run: |
set -ex
echo "NIGHTLY_OR_TEST=1" >> "${GITHUB_ENV}"

- name: Upload package to pytorch.org
shell: bash
working-directory: ${{ inputs.repository }}
run: |
set -ex

# shellcheck disable=SC1090
source "${BUILD_ENV_FILE}"

pip install awscli==1.32.18

AWS_CMD="aws s3 cp --dryrun"
if [[ "${NIGHTLY_OR_TEST:-0}" == "1" ]]; then
AWS_CMD="aws s3 cp"
fi

for pkg in dist/*; do
${AWS_CMD} "$pkg" "${PYTORCH_S3_BUCKET_PATH}" --acl public-read
done
16 changes: 16 additions & 0 deletions .github/actions/setup-binary-builds/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ inputs:
required: false
type: boolean
default: no
is-manylinux2-28:
description: One of the parameter used by pkg-helpers
required: false
type: boolean
default: true

runs:
using: composite
Expand All @@ -48,15 +53,26 @@ runs:
shell: bash
env:
REPOSITORY: ${{ inputs.repository }}
IS_MANYLINUX2_28: ${{ inputs.is-manylinux2-28 }}
run: |
set -euxo pipefail
rm -rf "${REPOSITORY}"

- uses: actions/checkout@v4
if: ${{ env.IS_MANYLINUX2_28 == 'true' }}
with:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
submodules: ${{ inputs.submodules }}
path: ${{ inputs.repository }}

- uses: atalman/checkout-action@main
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets keep both actions/checkout@v4 and atalman/checkout-action@main. I believe this action is run on Windows and MacOS. I see no reason to debug this on these OS's

if: ${{ env.IS_MANYLINUX2_28 != 'true' }}
with:
repository: ${{ inputs.repository }}
path: ${{ inputs.repository }}
ref: ${{ inputs.ref }}

- name: Log Available Webhook Fields
shell: bash
run: |
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/_binary_upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ jobs:
matrix: ${{ fromJSON(inputs.build-matrix) }}
timeout-minutes: 30
name: ${{ matrix.build_name }}
env:
SKIP-UPLOAD: ${{ !contains(matrix.container_image, '2_28') }}
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -70,6 +72,7 @@ jobs:
upload-to-base-bucket: ${{ matrix.upload_to_base_bucket }}

- name: Download the artifact
if: ${{ !env.SKIP-UPLOAD }}
uses: actions/download-artifact@v3
with:
name: ${{ env.ARTIFACT_NAME }}
Expand Down Expand Up @@ -97,6 +100,7 @@ jobs:
echo "NIGHTLY_OR_TEST=1" >> "${GITHUB_ENV}"

- name: Upload package to pytorch.org
if: ${{ !env.SKIP-UPLOAD }}
shell: bash
working-directory: ${{ inputs.repository }}
run: |
Expand All @@ -117,7 +121,7 @@ jobs:
done

- name: Upload package to pypi
if: ${{ env.NIGHTLY_OR_TEST == '1' && contains(inputs.upload-to-pypi, matrix.desired_cuda) }}
if: ${{ !env.SKIP-UPLOAD && env.NIGHTLY_OR_TEST == '1' && contains(inputs.upload-to-pypi, matrix.desired_cuda) }}
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
Expand Down
23 changes: 17 additions & 6 deletions .github/workflows/build_wheels_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ jobs:
CU_VERSION: ${{ matrix.desired_cuda }}
UPLOAD_TO_BASE_BUCKET: ${{ matrix.upload_to_base_bucket }}
ARCH: ${{ inputs.architecture }}
IS_MANYLINUX2_28: ${{ contains(matrix.container_image, '2_28') }}
name: ${{ matrix.build_name }}
runs-on: ${{ matrix.validation_runner }}
container:
Expand All @@ -141,23 +142,22 @@ jobs:
if [[ "${{ inputs.architecture }}" = "aarch64" ]]; then
rm -rf "${RUNNER_TEMP}/*"
fi

echo "::endgroup::"
- uses: actions/checkout@v4

- uses: atalman/checkout-action@main
with:
# Support the use case where we need to checkout someone's fork
repository: ${{ inputs.test-infra-repository }}
ref: ${{ inputs.test-infra-ref }}
path: test-infra
- name: Set linux aarch64 CI

- name: Install Miniforge
if: ${{ inputs.architecture == 'aarch64' }}
shell: bash -l {0}
env:
DESIRED_PYTHON: ${{ matrix.python_version }}
run: |
set -euxo pipefail
# TODO: Get rid of Conda, we already have all versions of PyThon one needs in the docker

###############################################################################
# Install conda
# disable SSL_verify due to getting "Could not find a suitable TLS CA certificate bundle, invalid path"
Expand Down Expand Up @@ -185,10 +185,12 @@ jobs:
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
submodules: ${{ inputs.submodules }}
setup-miniconda: ${{ inputs.setup-miniconda }}
setup-miniconda: false
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not really required miniconda is already installed on these images now. However may need to use Install Miniforge step here for Linux as well in future

python-version: ${{ env.PYTHON_VERSION }}
cuda-version: ${{ env.CU_VERSION }}
arch: ${{ env.ARCH }}
is-manylinux2-28: ${{ env.IS_MANYLINUX2_28 }}

- name: Combine Env Var and Build Env Files
if: ${{ inputs.env-var-script != '' }}
working-directory: ${{ inputs.repository }}
Expand Down Expand Up @@ -281,7 +283,16 @@ jobs:
${CONDA_RUN} python "${{ inputs.repository }}/${SMOKE_TEST_SCRIPT}"
fi
# NB: Only upload to GitHub after passing smoke tests

- name: Upload wheel
if: ${{ env.IS_MANYLINUX2_28 != 'true' }}
uses: ./test-infra/.github/actions/binary-upload
with:
repository: ${{ inputs.repository }}
trigger-event: ${{ inputs.trigger-event }}

- name: Upload wheel to GitHub
if: ${{ env.IS_MANYLINUX2_28 == 'true' }}
continue-on-error: true
uses: actions/upload-artifact@v3
with:
Expand Down
Loading