Skip to content

[CI] Add build and test on linux-riscv64 #178

[CI] Add build and test on linux-riscv64

[CI] Add build and test on linux-riscv64 #178

Workflow file for this run

name: docker-builds

Check failure on line 1 in .github/workflows/docker-builds.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/docker-builds.yml

Invalid workflow file

(Line: 52, Col: 28): Matrix vector 'docker-image-name' does not contain any values
on:
workflow_dispatch:
pull_request:
paths:
- .ci/docker/**
- .github/workflows/docker-builds.yml
- .lintrunner.toml
push:
branches:
- main
- release/*
- landchecks/*
- build-and-test-on-riscv64* # DEBUG
paths:
- .ci/docker/**
- .github/workflows/docker-builds.yml
- .lintrunner.toml
schedule:
- cron: 1 3 * * 3
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}
cancel-in-progress: true
env:
ALPINE_IMAGE: 308535385114.dkr.ecr.us-east-1.amazonaws.com/tool/alpine
AWS_DEFAULT_REGION: us-east-1
permissions: read-all
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 }}
docker-build:
environment: ${{ (github.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/tags/v')) && 'docker-build' || '' }}
# needs: get-label-type
timeout-minutes: ${{ matrix.timeout-minutes || 240 }}
strategy:
fail-fast: false
matrix:
runner: [ubuntu-latest]
docker-image-name: [
# pytorch-linux-jammy-cuda13.0-cudnn9-py3-gcc11,
# pytorch-linux-jammy-cuda13.0-cudnn9-py3.12-gcc11-vllm,
# pytorch-linux-jammy-cuda13.0-cudnn9-py3-gcc11-inductor-benchmarks,
# pytorch-linux-jammy-py3.10-clang18,
# pytorch-linux-jammy-py3.11-clang18,
# pytorch-linux-jammy-py3.12-clang18,
# pytorch-linux-jammy-py3.13-clang18,
# pytorch-linux-jammy-py3.14-clang18,
# pytorch-linux-jammy-py3.14t-clang18,
# pytorch-linux-jammy-rocm-n-py3,
# pytorch-linux-noble-rocm-n-py3,
# pytorch-linux-noble-rocm-nightly-py3,
# pytorch-linux-jammy-rocm-n-py3-benchmarks,
# pytorch-linux-jammy-cuda13.0-cudnn9-py3.10-clang18,
# pytorch-linux-jammy-py3-gcc11-inductor-benchmarks,
# pytorch-linux-jammy-py3.12-halide,
# pytorch-linux-jammy-py3.12-pallas,
# pytorch-linux-jammy-cuda13.0-py3.12-pallas,
# pytorch-linux-jammy-tpu-py3.12-pallas,
# pytorch-linux-jammy-xpu-n-1-py3,
# pytorch-linux-noble-xpu-n-py3,
# pytorch-linux-noble-xpu-n-py3-client,
# pytorch-linux-noble-xpu-n-py3-inductor-benchmarks,
# pytorch-linux-jammy-linter,
# pytorch-linux-jammy-cuda13.0-cudnn9-py3.10-linter,
# # TODO: Re-enable me when docker pin update happens
# # pytorch-linux-jammy-py3-clang18-executorch,
# pytorch-linux-jammy-py3.12-triton-cpu,
# pytorch-linux-noble-riscv64-py3.12-gcc14-cross-build,
]
include:
# - docker-image-name: pytorch-linux-jammy-aarch64-py3.10-gcc13
# runner: linux.arm64.m7g.4xlarge
# - docker-image-name: pytorch-linux-jammy-aarch64-py3.10-gcc13-inductor-benchmarks
# runner: linux.arm64.m7g.4xlarge
# timeout-minutes: 600
- docker-image-name: pytorch-linux-noble-riscv64-py3.12-gcc14
timeout-minutes: 600
# Docker uploads fail from LF runners, see https://github.com/pytorch/pytorch/pull/137358
# runs-on: "${{ needs.get-label-type.outputs.label-type }}${{ matrix.runner }}"
runs-on: "${{ matrix.runner }}"
steps:
- name: Clean workspace
shell: bash
run: |
echo "${GITHUB_WORKSPACE}"
sudo rm -rf "${GITHUB_WORKSPACE}"
mkdir "${GITHUB_WORKSPACE}"
- name: Setup QEMU
if: matrix.docker-image-name == 'pytorch-linux-noble-riscv64-py3.12-gcc14'
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0
- name: Setup Linux
uses: riseproject-dev/pytorch/.github/actions/setup-linux@build-and-test-on-riscv64
with:
submodules: 'false'
# - name: Login to ECR
# uses: ./.github/actions/ecr-login
- name: Build docker image
id: build-docker-image
uses: riseproject-dev/test-infra/.github/actions/calculate-docker-image@build-and-test-on-riscv64
with:
docker-registry: rg.fr-par.scw.cloud/rise-pytorch-ci-registry
docker-username: nologin
docker-password: ${{ secrets.SCW_SECRET_KEY }}
docker-image-name: ci-image:${{ matrix.docker-image-name }}
docker-build-timeout-minutes: ${{ matrix.timeout-minutes }}
always-rebuild: true
push: true
- name: Pull docker image
uses: riseproject-dev/test-infra/.github/actions/pull-docker-image@build-and-test-on-riscv64
with:
docker-registry: rg.fr-par.scw.cloud/rise-pytorch-ci-registry
docker-username: nologin
docker-password: ${{ secrets.SCW_SECRET_KEY }}
docker-image: ${{ steps.build-docker-image.outputs.docker-image }}
- name: Generate output
if: contains(matrix.docker-image-name, 'rocm')
id: generate_output
run: |
docker_image_name="${{ matrix.docker-image-name }}"
docker_image_tag="${{ steps.build-docker-image.outputs.docker-image }}"
echo "${docker_image_name}=${docker_image_tag}" >> docker-builds-output-${docker_image_name}.txt
- name: Upload artifacts
uses: actions/upload-artifact@v4.4.0
if: contains(matrix.docker-image-name, 'rocm')
with:
name: docker-builds-artifacts-${{ matrix.docker-image-name }}
retention-days: 14
path: ./docker-builds-output-${{ matrix.docker-image-name }}.txt
- uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
name: Push to https://ghcr.io/
id: push-to-ghcr-io
if: ${{ github.event_name == 'push' }}
env:
ECR_DOCKER_IMAGE: ${{ steps.build-docker-image.outputs.docker-image }}
GHCR_PAT: ${{ secrets.GHCR_PAT }}
with:
shell: bash
timeout_minutes: 60
max_attempts: 5
retry_wait_seconds: 90
command: |
ghcr_image="ghcr.io/${{ github.repository }}/ci-image"
tag=${ECR_DOCKER_IMAGE##*:}
# Push docker image to the ghcr.io
echo $GHCR_PAT | docker login ghcr.io -u pytorch --password-stdin
docker tag "${ECR_DOCKER_IMAGE}" "${ghcr_image}:${tag}"
docker push "${ghcr_image}:${tag}"
# Also push a tag without the hash for easier reference
docker tag "${ECR_DOCKER_IMAGE}" "${ghcr_image}:${{ matrix.docker-image-name }}"
docker push "${ghcr_image}:${{ matrix.docker-image-name }}"
# - name: Chown workspace
# uses: ./.github/actions/chown-workspace
# with:
# ALPINE_IMAGE: 308535385114.dkr.ecr.us-east-1.amazonaws.com/${{ contains(matrix.runner, 'arm64') && 'arm64v8' || 'tool' }}/alpine
# if: always()
- name: Teardown Linux
uses: pytorch/test-infra/.github/actions/teardown-linux@main
if: always()