From e9e6bf78f22146a07d9c372fb6105375e46679d7 Mon Sep 17 00:00:00 2001 From: "Szymichowski, Pawel" Date: Mon, 24 Oct 2022 19:33:58 +0200 Subject: [PATCH] Improved Github Actions for ocl-open-40 --- .github/actions/build-opencl-clang/action.yml | 68 ++++++++++++++++++ .github/workflows/on-demand-verification.yml | 47 ++++++++++++ .github/workflows/on-push-verification.yml | 71 +++++++++++++++++++ .github/workflows/scheduled-verification.yml | 44 ++++++++++++ 4 files changed, 230 insertions(+) create mode 100644 .github/actions/build-opencl-clang/action.yml create mode 100644 .github/workflows/on-demand-verification.yml create mode 100644 .github/workflows/on-push-verification.yml create mode 100644 .github/workflows/scheduled-verification.yml diff --git a/.github/actions/build-opencl-clang/action.yml b/.github/actions/build-opencl-clang/action.yml new file mode 100644 index 00000000..43bb970e --- /dev/null +++ b/.github/actions/build-opencl-clang/action.yml @@ -0,0 +1,68 @@ +# ===--- +# Main opencl-clang building script +# ===--- + +name: Build opencl-clang +inputs: + ref_llvm: + description: 'LLVM ref to build with' + required: true + ref_translator: + description: 'SPIRV-LLVM-Translator ref to build with' + required: true + ref_opencl-clang: + description: 'opencl-clang ref to build with' + required: true + build_type: + description: 'Build type to pass to CMake' + required: false + default: Release + +runs: + using: 'composite' + steps: + + # Setup git credentials to make applying patches possible + - run: | + git config --global user.email "action@intel.com" + git config --global user.name "Action Bot" + shell: bash + + - name: Checkout LLVM + uses: actions/checkout@v3 + with: + repository: llvm/llvm-project + path: llvm-project + ref: ${{ inputs.ref_llvm }} + + - name: Checkout SPIRV-LLVM-Translator + uses: actions/checkout@v3 + with: + repository: KhronosGroup/SPIRV-LLVM-Translator + path: llvm-project/SPIRV-LLVM-Translator + ref: ${{ inputs.ref_translator }} + + - name: Checkout opencl-clang + uses: actions/checkout@v3 + with: + path: llvm-project/opencl-clang + ref: ${{ inputs.ref_opencl-clang }} + + - name: Configure + shell: bash + run: | + mkdir build && cd build + cmake ${{ github.workspace }}/llvm-project/llvm \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DLLVM_EXTERNAL_PROJECTS="llvm-spirv;opencl-clang" \ + -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${{ github.workspace }}/llvm-project/SPIRV-LLVM-Translator \ + -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=${{ github.workspace }}/llvm-project/opencl-clang \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} \ + -DLLVM_TARGETS_TO_BUILD="X86" \ + -G "Unix Makefiles" + + - name: Build + shell: bash + run: | + cd build + make opencl-clang -j8 diff --git a/.github/workflows/on-demand-verification.yml b/.github/workflows/on-demand-verification.yml new file mode 100644 index 00000000..9d70e405 --- /dev/null +++ b/.github/workflows/on-demand-verification.yml @@ -0,0 +1,47 @@ +# ===--- +# To be run manually by maintainers +# ===--- + +name: On demand verification +run-name: 'On demand by ${{ github.actor }}' + +on: + workflow_dispatch: + inputs: + ref_llvm: + description: 'LLVM ref to build with' + required: true + default: main + ref_translator: + description: 'SPIRV-LLVM-Translator ref to build with' + required: true + default: main + ref_opencl-clang: + description: 'opencl-clang ref to build with' + required: true + default: master + build_type: + description: 'Build type to pass to CMake' + required: true + default: Release + type: choice + options: + - Release + - Debug + - RelWithDebInfo + +jobs: + + verify_on_demand: + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: ${{ inputs.ref_llvm }} + ref_translator: ${{ inputs.ref_translator }} + ref_opencl-clang: ${{ inputs.ref_opencl-clang }} diff --git a/.github/workflows/on-push-verification.yml b/.github/workflows/on-push-verification.yml new file mode 100644 index 00000000..ee0e04d8 --- /dev/null +++ b/.github/workflows/on-push-verification.yml @@ -0,0 +1,71 @@ +# ===--- +# Running on push & pull_request. +# This workflow parses the destination branch +# to choose correct dependencies revisions +# ===--- + +name: On push & pull-request verification +run-name: '${{ github.event_name }}: ${{ github.base_ref }} ${{ github.ref_name }}' # github.base_ref null for 'on: push' + +on: + push: + branches: + - master + - ocl-open-* + pull_request: + branches: + - master + - ocl-open-* + types: + - opened + - reopened + - synchronize # commit pushed to the PR + - ready_for_review # moved from draft state + +jobs: + + verify_default_branch: + name: Verify for `master` branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ (github.event_name == 'push' && github.ref_name == 'master') || (github.event_name == 'pull_request' && github.base_ref == 'master') }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: main + ref_translator: main + ref_opencl-clang: ${{ github.ref }} + + verify_release_branch: + name: Verify for `ocl-open-*` release branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ github.ref_name != 'master' && github.base_ref != 'master' }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + # This step will fail when the branch naming scheme 'ocl-open-XXX' changes! + - name: Parse LLVM version from branch name + id: check-llvm-version + run: | + BRANCH="${{ github.base_ref }}" # on: pull_request, otherwise null + BRANCH=${BRANCH:-${{ github.ref_name }}} # on: push + LLVM_VERSION_LONG=$(echo $BRANCH | grep -oP '\d+') # Eg. 150 for LLVM 15 + LLVM_VERSION_SHORT=${LLVM_VERSION_LONG::-1} # Eg. 15 for LLVM 15 + echo "llvm_version=$LLVM_VERSION_SHORT" >> $GITHUB_OUTPUT + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: release/${{ steps.check-llvm-version.outputs.llvm_version }}.x + ref_translator: llvm_release_${{ steps.check-llvm-version.outputs.llvm_version }}0 + ref_opencl-clang: ${{ github.ref }} diff --git a/.github/workflows/scheduled-verification.yml b/.github/workflows/scheduled-verification.yml new file mode 100644 index 00000000..8491d18e --- /dev/null +++ b/.github/workflows/scheduled-verification.yml @@ -0,0 +1,44 @@ +# ===--- +# Workflow run for regular SPIRV-LLVM-Translator and LLVM compatibility check +# ===--- + +name: Scheduled verification +run-name: Scheduled verification + +on: + schedule: + # Run Sunday & Wednesday at 00:00 + - cron: 0 0 * * 0,3 + +jobs: + + verify-default-branches: + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: main + ref_translator: main + ref_opencl-clang: master + + verify-release-branches: + strategy: + matrix: + llvm_version: [ 10, 11, 12, 13, 14, 15 ] + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files availabilty + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: release/${{ matrix.llvm_version }}.x + ref_translator: llvm_release_${{ matrix.llvm_version }}0 + ref_opencl-clang: ocl-open-${{ matrix.llvm_version }}0