ZLUDA/.github/workflows/push_master.yml

175 lines
6.0 KiB
YAML

name: ZLUDA
on:
workflow_dispatch:
push:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
CARGO_PROFILE: release-lto
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
ROCM_VERSION: "6.3.1"
jobs:
build_linux:
name: Build (Linux)
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- uses: jlumbroso/free-disk-space@main
with:
# Removing Android stuff should be enough
android: true
dotnet: false
haskell: false
large-packages: false
docker-images: false
swap-storage: false
- uses: actions/checkout@v4
# fetch-depth and fetch-tags are required to properly tag pre-release builds
with:
fetch-depth: 0
fetch-tags: true
submodules: true
- name: Install ROCm
run: sudo bash .github/workflows/rocm_setup_build.sh ${{ env.ROCM_VERSION }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.9
- name: Build
# https://github.com/actions/upload-artifact/issues/39
run: |
cargo xtask zip --profile ${{ env.CARGO_PROFILE }}
mkdir target/${{ env.CARGO_PROFILE }}/zluda
tar -xzf target/${{ env.CARGO_PROFILE }}/zluda.tar.gz -C target/${{ env.CARGO_PROFILE }}/zluda
- name: Set revision hash
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Upload
uses: actions/upload-artifact@v4
with:
name: zluda-linux-${{ env.SHORT_SHA }}
path: target/${{ env.CARGO_PROFILE }}/zluda
- name: Prepare artifact for release
run: |
mv target/${{ env.CARGO_PROFILE }}/zluda.tar.gz target/${{ env.CARGO_PROFILE }}/zluda-linux-${{ env.SHORT_SHA }}.tar.gz
latest_tag=$(git tag -l "v*" | grep -E "^v[0-9]+$" | sort -V | tail -n 1)
next_version="$((${latest_tag:1} + 1))"
offset=$(git rev-list $latest_tag..HEAD --count)
echo "VERSION=$next_version-preview.$offset" >> $GITHUB_OUTPUT
id: prepare_artifacts
- uses: ncipollo/release-action@v1
with:
prerelease: true
generateReleaseNotes: true
allowUpdates: true
omitNameDuringUpdate: true
artifacts: "target/${{ env.CARGO_PROFILE }}/zluda-linux-${{ env.SHORT_SHA }}.tar.gz"
name: "Version ${{ steps.prepare_artifacts.outputs.VERSION }}"
tag: "v${{ steps.prepare_artifacts.outputs.VERSION }}"
build_windows:
name: Build (Windows)
runs-on: windows-2022
permissions:
contents: write
steps:
- uses: actions/checkout@v4
# fetch-depth and fetch-tags are required to properly tag pre-release builds
with:
fetch-depth: 0
fetch-tags: true
submodules: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.9
- name: Build
run: |
cargo xtask zip --profile ${{ env.CARGO_PROFILE }}
Expand-Archive -Path target/${{ env.CARGO_PROFILE }}/zluda.zip -DestinationPath target/${{ env.CARGO_PROFILE }}/zluda
- name: Set revision hash
run: echo "SHORT_SHA=$("${{ github.sha }}".SubString(0, 7))" >> $env:GITHUB_ENV
- name: Upload
uses: actions/upload-artifact@v4
with:
name: zluda-windows-${{ env.SHORT_SHA }}
path: target/${{ env.CARGO_PROFILE }}/zluda
- name: Prepare artifact for release
shell: bash
working-directory: ${{ github.workspace }}
run: |
mv target/${{ env.CARGO_PROFILE }}/zluda.zip target/${{ env.CARGO_PROFILE }}/zluda-windows-${{ env.SHORT_SHA }}.zip
latest_tag=$(git tag -l "v*" | grep -E "^v[0-9]+$" | sort -V | tail -n 1)
next_version="$((${latest_tag:1} + 1))"
offset=$(git rev-list $latest_tag..HEAD --count)
echo "VERSION=$next_version-preview.$offset" >> $GITHUB_OUTPUT
id: prepare_artifacts
- uses: ncipollo/release-action@v1
with:
prerelease: true
generateReleaseNotes: true
allowUpdates: true
omitNameDuringUpdate: true
artifacts: "target/${{ env.CARGO_PROFILE }}/zluda-windows-${{ env.SHORT_SHA }}.zip"
name: "Version ${{ steps.prepare_artifacts.outputs.VERSION }}"
tag: "v${{ steps.prepare_artifacts.outputs.VERSION }}"
build_tests:
name: Build AMD GPU unit tests
runs-on: ubuntu-22.04
outputs:
test_package: ${{ steps.upload_artifacts.outputs.artifact-id }}
steps:
- uses: jlumbroso/free-disk-space@main
with:
# Removing Android stuff should be enough
android: true
dotnet: false
haskell: false
large-packages: false
docker-images: false
swap-storage: false
- uses: actions/checkout@v4
with:
submodules: true
- name: Install ROCm
run: sudo bash .github/workflows/rocm_setup_build.sh ${{ env.ROCM_VERSION }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.9
- uses: taiki-e/install-action@v2
with:
tool: cargo-export
- name: Build
run: |
cargo export target/tests -- test --features ci_build --workspace --exclude cuda_base --exclude ptx_parser_macros
mkdir -p target/amdgpu
bash .github/workflows/move_tests.sh target/tests amdgpu
strip target/amdgpu/*
- name: Upload
id: upload_artifacts
uses: actions/upload-artifact@v4
with:
name: tests
path: target/amdgpu
retention-days: 7
run_tests:
name: Run AMD GPU unit tests
runs-on: gpu_small
needs: [build_tests]
steps:
- uses: actions/checkout@v4
with:
submodules: false
sparse-checkout: .github
- name: Install ROCm
run: sudo bash .github/workflows/rocm_setup_run.sh ${{ env.ROCM_VERSION }}
- uses: actions/download-artifact@v4
with:
artifact-ids: ${{ needs.build_tests.outputs.test_package }}
path: target
- name: Run tests
run: |
chmod +x target/tests/*
error_occurred=0
for exe in target/tests/*; do
./"$exe" _amdgpu || { error_occurred=1; true; }
done
exit $error_occurred