name: Continuous Integration on: push: branches: [ amd-mainline, amd-staging ] paths-ignore: - '*.md' pull_request: branches: [ amd-mainline, amd-staging ] paths-ignore: - '*.md' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: ci: strategy: fail-fast: false matrix: runner: ['ubuntu-latest'] compiler: ['clang-13', 'clang-14', 'clang-15', 'gcc-11', 'gcc-12'] ci-args: [''] ci-tag: [''] include: - runner: 'ubuntu-latest' compiler: 'gcc-12' ci-args: '--coverage' ci-tag: '-codecov' - runner: 'ubuntu-latest' compiler: 'clang-15' ci-args: '--linter clang-tidy' ci-tag: '-clang-tidy' - runner: 'ubuntu-20.04' compiler: 'gcc-9' ci-args: '' ci-tag: '' - runner: 'ubuntu-20.04' compiler: 'clang-10' ci-args: '' ci-tag: '' # - runner: 'ubuntu-latest' # compiler: 'gcc-12' # ci-args: '--memcheck ThreadSanitizer' # ci-tag: '-thread-sanitizer' # - runner: 'ubuntu-latest' # compiler: 'gcc-12' # ci-args: '--memcheck AddressSanitizer' # ci-tag: '-address-sanitizer' # - runner: 'ubuntu-latest' # compiler: 'gcc-12' # ci-args: '--memcheck LeakSanitizer' # ci-tag: '-leak-sanitizer' # - runner: 'ubuntu-latest' # compiler: 'gcc-12' # ci-args: '--memcheck UndefinedBehaviorSanitizer' # ci-tag: '-undefined-behavior-sanitizer' runs-on: ${{ matrix.runner }} env: BUILD_TYPE: RelWithDebInfo INSTALL_PREFIX: /opt/rocprofiler-register PACKAGING_INSTALL_PREFIX: /opt/rocm steps: - uses: actions/checkout@v3 - name: Install Packages timeout-minutes: 25 run: | CC=${{ matrix.compiler }} && CXX=$(echo ${{ matrix.compiler }} | sed 's/clang-/clang++-/1' | sed 's/gcc-/g++-/1') && sudo apt-get update && sudo apt-get install -y build-essential python3 environment-modules ${{ matrix.compiler }} ${CXX} && sudo update-alternatives --install /usr/bin/cc cc /usr/bin/${CC} 100 && sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/${CXX} 100 && python3 -m pip install --upgrade pip && python3 -m pip install 'cmake==3.21.4' - name: Setup GCov timeout-minutes: 25 if: ${{ matrix.compiler == 'gcc-12' }} run: | sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-12 100 - name: Setup Clang-Tidy timeout-minutes: 25 if: ${{ matrix.compiler == 'clang-15' }} run: | sudo apt-get install -y clang-tidy-15 sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-15 100 - name: Configure, Build, and Test timeout-minutes: 115 shell: bash run: cmake --version && python3 ./scripts/run-ci.py -B build --name ${{ github.repository_owner }}-${{ github.ref_name }}-${{ matrix.runner }}-${{ matrix.compiler }}${{ matrix.ci-tag }} --build-jobs 2 --site GitHub ${{ matrix.ci-args }} --disable-cdash -- -DCMAKE_C_COMPILER=/usr/bin/cc -DCMAKE_CXX_COMPILER=/usr/bin/c++ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PREFIX }} -DROCPROFILER_REGISTER_BUILD_TESTS=ON -DROCPROFILER_REGISTER_BUILD_SAMPLES=ON -- -VV - name: Install timeout-minutes: 10 run: cmake --build build --target install --parallel 2 - name: CPack and Install run: | cd build cpack -G STGZ mkdir -p ${{ env.PACKAGING_INSTALL_PREFIX }} ./rocprofiler-register-*-Linux.sh --prefix=${{ env.PACKAGING_INSTALL_PREFIX }} --exclude-subdir --skip-license - name: Test Install Modulefile timeout-minutes: 15 shell: bash run: | set -v source /usr/share/modules/init/$(basename ${SHELL}) module use ${{ env.INSTALL_PREFIX }}/share/modulefiles module avail module load rocprofiler-register pushd tests BUILD_DIR=${PWD}/build-rocp-reg-modulefile cmake -B ${BUILD_DIR} . cmake --build ${BUILD_DIR} --target all rm -rf ${BUILD_DIR} - name: Test Install Setup Env timeout-minutes: 15 shell: bash run: | set -v source ${{ env.INSTALL_PREFIX }}/share/rocprofiler-register/setup-env.sh pushd samples/library-implementation BUILD_DIR=${PWD}/build-rocp-reg-setup-env cmake -B ${BUILD_DIR} . cmake --build ${BUILD_DIR} --target all rm -rf ${BUILD_DIR} - name: Test Install CPack Modulefile timeout-minutes: 15 shell: bash run: | set -v source /usr/share/modules/init/$(basename ${SHELL}) module use ${{ env.PACKAGING_INSTALL_PREFIX }}/share/modulefiles module avail module load rocprofiler-register pushd tests BUILD_DIR=${PWD}/build-rocp-reg-modulefile-cpack cmake -B ${BUILD_DIR} . cmake --build ${BUILD_DIR} --target all rm -rf ${BUILD_DIR} - name: Test Install CPack Setup Env timeout-minutes: 15 shell: bash run: | set -v source ${{ env.PACKAGING_INSTALL_PREFIX }}/share/rocprofiler-register/setup-env.sh pushd samples/library-implementation BUILD_DIR=${PWD}/build-rocp-reg-setup-env-cpack cmake -B ${BUILD_DIR} . cmake --build ${BUILD_DIR} --target all rm -rf ${BUILD_DIR}