rocprofiler-compute Docker Images in GHCR (#1195)
* Initial cleanup of compute workflows and skeleton of ghcr workflow * Add containers-ci.yml, update opensuse and rhel dockerfiles * rename id in rocprofiler-compute-ghcr.yml * Add new line to end of containers-ci.yml * Update action versions for rocprofiler-compute-ghcr.yml * Switch back to SHA for action versions * Add conda set solver classic fix to compute CI dockerfiles * Update conda install for compute Dockerfiles * Change opensuse version to 15.6 in containers-ci.yml * Add fix for ubuntu noble to compute Dockerfile.ubuntu.ci * Add default distro and version to Dockerfile.ubuntu.ci * Updated regex for tarball version * Remove Python3.8 from compute CI Dockerfiles * Change RHEL 9.4 to 9, add retry for compute workflow * Revert name change for compute rhel workflow * update path naming * Remove binutils-gold from Dockerfile.opensuse.ci * Remove conda python installs from Dockerfile.ci files in compute * Change CMake version to 3.21 in compute Dockerfile.ci files * Update checkout actions from v4 to v5
Bu işleme şunda yer alıyor:
işlemeyi yapan:
GitHub
ebeveyn
71856ec239
işleme
1255ba2bcc
@@ -0,0 +1,136 @@
|
||||
name: Publish GHCR Packages for rocprofiler-compute CI Images
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: 0 5 * * *
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
paths:
|
||||
- '.github/workflows/rocprofiler-compute-ghcr.yml'
|
||||
- 'projects/rocprofiler-compute/docker/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/rocprofiler-compute-ghcr.yml'
|
||||
- 'projects/rocprofiler-compute/docker/**'
|
||||
|
||||
jobs:
|
||||
prepare_matrix_ci:
|
||||
if: github.repository == 'ROCm/rocm-systems'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix_data: ${{ steps.generate_matrix_ci.outputs.matrix_data }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
sparse-checkout: projects/rocprofiler-compute/docker
|
||||
|
||||
- name: Output data for containers matrix
|
||||
working-directory: projects/rocprofiler-compute/docker
|
||||
id: generate_matrix_ci
|
||||
run: |
|
||||
MATRIX_CONTENT=$(cat containers-ci.yml | yq '.matrix' -I=0 -o=json)
|
||||
echo "matrix_data=$MATRIX_CONTENT" >> $GITHUB_OUTPUT
|
||||
|
||||
rocprofiler-compute-ci-gfx:
|
||||
needs: prepare_matrix_ci
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
system: ${{ fromJSON(needs.prepare_matrix_ci.outputs.matrix_data) }}
|
||||
gpu: [ 'gfx94X', 'gfx950' ]
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
sparse-checkout: projects/rocprofiler-compute
|
||||
submodules: recursive
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Docker variables
|
||||
id: setup_vars_gfx
|
||||
run: |
|
||||
if [ ${{ matrix.system.distro }} = "opensuse" ]; then
|
||||
DISTRO_IMAGE="opensuse/leap"
|
||||
elif [ ${{ matrix.system.distro }} = "rhel" ]; then
|
||||
DISTRO_IMAGE="rockylinux/rockylinux"
|
||||
else
|
||||
DISTRO_IMAGE=${{ matrix.system.distro }}
|
||||
fi
|
||||
echo "distro_image=${DISTRO_IMAGE}" >> $GITHUB_OUTPUT
|
||||
|
||||
if [ ${{ matrix.system.distro }} = "debian" ]; then
|
||||
DOCKER_FILE=Dockerfile.ubuntu.ci
|
||||
else
|
||||
DOCKER_FILE=Dockerfile.${{ matrix.system.distro }}.ci
|
||||
fi
|
||||
echo "docker_file=${DOCKER_FILE}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Get the latest build of The Rock tarball
|
||||
id: therock
|
||||
run: |
|
||||
sudo apt-get install -y python3-pip
|
||||
python3 -m pip install -U pip
|
||||
python3 -m pip install -U awscli
|
||||
export PATH=~/.local/bin:$PATH
|
||||
KEY=$(aws s3api list-objects-v2 \
|
||||
--bucket therock-nightly-tarball \
|
||||
--no-sign-request \
|
||||
--output json \
|
||||
--query "sort_by(Contents[?contains(Key, 'linux-${{ matrix.gpu }}')], &LastModified)[-1].Key")
|
||||
KEY=${KEY//\"/}
|
||||
test -n "$KEY" || { echo "No ${{ matrix.gpu }} tarball found"; exit 1; }
|
||||
echo "tarball=${KEY}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0
|
||||
with:
|
||||
images: ghcr.io/ROCm/rocprofiler-${{ matrix.system.distro }}
|
||||
|
||||
- name: Build CI GFX Container (Does not Push on PR)
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
file: projects/rocprofiler-compute/docker/${{ steps.setup_vars_gfx.outputs.docker_file }}
|
||||
platforms: linux/amd64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
build-args: |
|
||||
DISTRO=${{ steps.setup_vars_gfx.outputs.distro_image }}
|
||||
VERSION=${{ matrix.system.version }}
|
||||
GPU_TYPE=${{ matrix.gpu }}
|
||||
GPU_TARBALL=${{ steps.therock.outputs.tarball }}
|
||||
tags: |
|
||||
ghcr.io/rocm/rocprofiler-${{ matrix.system.distro }}:${{ matrix.system.version }}-compute-ci-${{ matrix.gpu }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
# Retry a copy of docker_build if Docker build failed due to intermittent failure
|
||||
- name: Build CI GFX Container Retry (Does not Push on PR)
|
||||
if: steps.docker_build.outcome != 'success'
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
||||
with:
|
||||
file: projects/rocprofiler-compute/docker/${{ steps.setup_vars_gfx.outputs.docker_file }}
|
||||
platforms: linux/amd64
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
build-args: |
|
||||
DISTRO=${{ steps.setup_vars_gfx.outputs.distro_image }}
|
||||
VERSION=${{ matrix.system.version }}
|
||||
GPU_TYPE=${{ matrix.gpu }}
|
||||
GPU_TARBALL=${{ steps.therock.outputs.tarball }}
|
||||
tags: |
|
||||
ghcr.io/rocm/rocprofiler-${{ matrix.system.distro }}:${{ matrix.system.version }}-compute-ci-${{ matrix.gpu }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
@@ -1,8 +1,5 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
name: rocprofiler-compute RHEL
|
||||
|
||||
name: rocprofiler-compute RHEL 8/9
|
||||
|
||||
# Controls when the workflow will run
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -32,8 +29,6 @@ on:
|
||||
- '!**/.wordlist.txt'
|
||||
- '!projects/rocprofiler-compute/docs/**'
|
||||
- '!projects/rocprofiler-compute/docker/**'
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
@@ -43,9 +38,8 @@ concurrency:
|
||||
env:
|
||||
ROCM_VERSION: "7.2.0"
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
build:
|
||||
build-rhel:
|
||||
# The type of runner that the job will run on
|
||||
# Using rocprofiler-systems images and later installing rocm, the official rocm images for al8 red hat variant are too large- this is a workaround.
|
||||
runs-on: ubuntu-latest
|
||||
@@ -56,6 +50,7 @@ jobs:
|
||||
matrix:
|
||||
os-release: [ '8.10', '9.4' ]
|
||||
build-type: ['Release']
|
||||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
# Note- RHEL8 references python3.9 as python39, whereas RHEL9 default version is already 3.9, so we only need to call it as python3
|
||||
steps:
|
||||
@@ -75,6 +70,7 @@ jobs:
|
||||
yum -y install cmake3
|
||||
yum -y install which
|
||||
yum -y install glibc-langpack-en
|
||||
|
||||
- name: Install ROCm Packages
|
||||
timeout-minutes: 30
|
||||
uses: nick-fields/retry@v3
|
||||
@@ -92,10 +88,12 @@ jobs:
|
||||
yum install -y https://repo.radeon.com/amdgpu-install/${ROCM_MAJOR}.${ROCM_MINOR}/rhel/9.4/amdgpu-install-${ROCM_MAJOR}.${ROCM_MINOR}.${ROCM_VERSN}-1.el9.noarch.rpm
|
||||
fi
|
||||
yum install -y rocm-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
sparse-checkout: projects/rocprofiler-compute
|
||||
|
||||
- name: Install Python prereqs
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
@@ -109,11 +107,13 @@ jobs:
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
||||
make install
|
||||
|
||||
- name: CTest- Analyze Commands
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
cd build
|
||||
ctest --verbose -R test_analyze_commands
|
||||
|
||||
- name: CTest- Analyze Workloads
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: rocprofiler-compute Ubuntu 22.04
|
||||
|
||||
on:
|
||||
@@ -31,8 +29,6 @@ on:
|
||||
- '!**/.wordlist.txt'
|
||||
- '!projects/rocprofiler-compute/docs/**'
|
||||
- '!projects/rocprofiler-compute/docker/**'
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
@@ -40,7 +36,7 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
build-ubuntu-jammy:
|
||||
# The type of runner that the job will run on
|
||||
# https://hub.docker.com/r/rocm/dev-ubuntu-22.04/tags
|
||||
runs-on: ubuntu-latest
|
||||
@@ -54,15 +50,18 @@ jobs:
|
||||
apt-get install -y git
|
||||
apt-get install -y python3-pip
|
||||
apt-get install -y cmake
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
sparse-checkout: projects/rocprofiler-compute
|
||||
|
||||
- name: Install Python prereqs
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
python3 -m pip install -r requirements.txt
|
||||
python3 -m pip install -r requirements-test.txt
|
||||
|
||||
- name: Configure and install
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
@@ -70,11 +69,13 @@ jobs:
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
|
||||
make install
|
||||
|
||||
- name: CTest- Analyze Commands
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
cd build
|
||||
ctest --verbose -R test_analyze_commands
|
||||
|
||||
- name: CTest- Analyze Workloads
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
|
||||
Yeni konuda referans
Bir kullanıcı engelle