From 8611d7c40e530d95486f62e61ad4680c50ff8cf4 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 21 Nov 2022 15:25:08 -0600 Subject: [PATCH] Refactor workflow distros and workflow python matrix (#1400) (#1401) closes #1400 --- .github/workflows/alt_linux_distros.yml | 168 ++++++++++++++++++++++++ .github/workflows/test_32.yml | 11 +- .github/workflows/test_32_oracle.yml | 11 +- .github/workflows/test_linux.yml | 22 +--- .github/workflows/test_linux_py2.yml | 166 +++++++++++++++++++++++ .github/workflows/trickops.yml | 11 +- 6 files changed, 344 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/alt_linux_distros.yml create mode 100644 .github/workflows/test_linux_py2.yml diff --git a/.github/workflows/alt_linux_distros.yml b/.github/workflows/alt_linux_distros.yml new file mode 100644 index 00000000..28249b55 --- /dev/null +++ b/.github/workflows/alt_linux_distros.yml @@ -0,0 +1,168 @@ +name: More Linux + +on: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } + - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } + - { os: debian, tag: 10, arch: debian, arch_ver: 10 } + - { os: debian, tag: 11, arch: debian, arch_ver: 11 } + - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } + - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2, 3] + +#-------- Defaults -------------------------- + include: + - cfg: {} + deps: >- + bison + clang + flex + git + llvm + make + maven + cmake + zip + install_gtest: echo gtest already installed + conf_pkg: echo package manager already configured + install_cmd: install -y +#-------- Debian-based Dependencies ---------------- + - cfg: { arch: debian } + pkg_mgr: apt-get + conf_pkg: apt-get update + arch_deps: >- + swig + curl + g++ + libx11-dev + libxml2-dev + libxt-dev + libmotif-common + libmotif-dev + zlib1g-dev + llvm-dev + libclang-dev + libudunits2-dev + libgtest-dev + default-jdk + python2.7-dev + python3-dev + python3-pip + python3-venv + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp lib/libgtest* /usr/lib/ +#-------- RHEL Dependencies ---------------- + - cfg: { arch: rhel } + arch_deps: >- + clang-devel + gcc + gcc-c++ + java-11-openjdk-devel + libxml2-devel + llvm-devel + llvm-static + ncurses-devel + openmotif + openmotif-devel + perl + perl-Digest-MD5 + udunits2 + udunits2-devel + which + zlib-devel + python2-devel + python3-devel +#-------- RHEL 8-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 8 } + pkg_mgr: dnf + tag_deps: >- + swig + diffutils + conf_pkg: | + dnf -y install epel-release + dnf -y update + dnf install -y 'dnf-command(config-manager)' + install_gtest: | + dnf config-manager --enable powertools + dnf install -y gtest-devel +#-------- Debian 10-based Only Dependencies ---------------- + - cfg: { arch: debian, arch_ver: 10 } + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp libgtest* /usr/lib/ +#-------- Debian 11-based Only Dependencies ---------------- + - cfg: { arch: debian, arch_ver: 11 } + conf_pkg: | + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get install -y tzdata +#-------- OS and Version Specific Dependencies ---------------- +# None +#-------- Job definition ---------------- + runs-on: ubuntu-latest + container: docker://${{matrix.cfg.os}}:${{matrix.cfg.tag}} + steps: + - name: Update Package Manager + run: ${{matrix.conf_pkg}} + - name: Install Dependencies + run: > + ${{matrix.pkg_mgr}} + ${{matrix.install_cmd}} + ${{matrix.deps}} + ${{matrix.arch_deps}} + ${{matrix.os_deps}} + ${{matrix.tag_deps}} + - name: Install GTest + run: ${{matrix.install_gtest}} + - name: Checkout repository + uses: actions/checkout@master + - name: Configure Trick + run: | + export MAKEFLAGS=-j`nproc` + export PYTHON_VERSION=${{matrix.python}} + ./configure + - name: Build Trick + run: | + export MAKEFLAGS=-j`nproc` + make + - name: Test + run: | + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../; make test + - name: Upload Tests + uses: actions/upload-artifact@v3.0.0 + if: success() || failure() # run this step even if previous step failed + with: + name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} + path: trick_test/*.xml + retention-days: 1 +# Uncomment for build artifacts +# - name: Upload Trick Build +# uses: actions/upload-artifact@v3.0.0 +# with: +# name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} +# path: | +# bin +# include +# lib +# share +# libexec +# retention-days: 1 diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index 15c20737..6272ff4f 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -1,14 +1,9 @@ name: 32-bit on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/test_32.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: jobs: trick_32bit: diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml index 794595aa..dc0db9fa 100644 --- a/.github/workflows/test_32_oracle.yml +++ b/.github/workflows/test_32_oracle.yml @@ -1,14 +1,9 @@ name: 32-bit Oracle on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/test_32_oracle.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: jobs: trick_32bit_oracle: diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml index 109c0b56..42637d40 100644 --- a/.github/workflows/test_linux.yml +++ b/.github/workflows/test_linux.yml @@ -18,17 +18,11 @@ jobs: matrix: cfg: #-------- Operating Systems ---------------- - - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } - - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } - - { os: debian, tag: 10, arch: debian, arch_ver: 10 } - - { os: debian, tag: 11, arch: debian, arch_ver: 11 } - - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } - - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } - python: [2, 3] + python: [3] #-------- Defaults -------------------------- include: @@ -120,20 +114,6 @@ jobs: install_gtest: | dnf config-manager --enable powertools dnf install -y gtest-devel -#-------- Debian 10-based Only Dependencies ---------------- - - cfg: { arch: debian, arch_ver: 10 } - install_gtest: | - apt-get install -y libgtest-dev - cd /usr/src/gtest - cmake . - make - cp libgtest* /usr/lib/ -#-------- Debian 11-based Only Dependencies ---------------- - - cfg: { arch: debian, arch_ver: 11 } - conf_pkg: | - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get install -y tzdata #-------- OS and Version Specific Dependencies ---------------- - cfg: { os: oraclelinux } install_gtest: | diff --git a/.github/workflows/test_linux_py2.yml b/.github/workflows/test_linux_py2.yml new file mode 100644 index 00000000..f14fc1c4 --- /dev/null +++ b/.github/workflows/test_linux_py2.yml @@ -0,0 +1,166 @@ +name: 'Linux Python 2' + +on: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } + - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } + - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2] + +#-------- Defaults -------------------------- + include: + - cfg: {} + deps: >- + bison + clang + flex + git + llvm + make + maven + cmake + zip + install_gtest: echo gtest already installed + conf_pkg: echo package manager already configured + install_cmd: install -y +#-------- Debian-based Dependencies ---------------- + - cfg: { arch: debian } + pkg_mgr: apt-get + conf_pkg: apt-get update + arch_deps: >- + swig + curl + g++ + libx11-dev + libxml2-dev + libxt-dev + libmotif-common + libmotif-dev + zlib1g-dev + llvm-dev + libclang-dev + libudunits2-dev + libgtest-dev + default-jdk + python2.7-dev + python3-dev + python3-pip + python3-venv + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp lib/libgtest* /usr/lib/ +#-------- RHEL Dependencies ---------------- + - cfg: { arch: rhel } + arch_deps: >- + clang-devel + gcc + gcc-c++ + java-11-openjdk-devel + libxml2-devel + llvm-devel + llvm-static + ncurses-devel + openmotif + openmotif-devel + perl + perl-Digest-MD5 + udunits2 + udunits2-devel + which + zlib-devel + python2-devel + python3-devel +#-------- RHEL 7-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 7 } + pkg_mgr: yum + conf_pkg: | + yum -y install epel-release + yum -y update + os_deps: >- + libX11-devel + libXt-devel + swig3 + gtest-devel +#-------- RHEL 8-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 8 } + pkg_mgr: dnf + tag_deps: >- + swig + diffutils + conf_pkg: | + dnf -y install epel-release + dnf -y update + dnf install -y 'dnf-command(config-manager)' + install_gtest: | + dnf config-manager --enable powertools + dnf install -y gtest-devel +#-------- OS and Version Specific Dependencies ---------------- + - cfg: { os: oraclelinux } + install_gtest: | + dnf config-manager --enable ol8_codeready_builder + dnf install -y gtest-devel +#-------- Job definition ---------------- + runs-on: ubuntu-latest + container: docker://${{matrix.cfg.os}}:${{matrix.cfg.tag}} + steps: + - name: Update Package Manager + run: ${{matrix.conf_pkg}} + - name: Install Dependencies + run: > + ${{matrix.pkg_mgr}} + ${{matrix.install_cmd}} + ${{matrix.deps}} + ${{matrix.arch_deps}} + ${{matrix.os_deps}} + ${{matrix.tag_deps}} + - name: Install GTest + run: ${{matrix.install_gtest}} + - name: Checkout repository + uses: actions/checkout@master + - name: Configure Trick + run: | + export MAKEFLAGS=-j`nproc` + export PYTHON_VERSION=${{matrix.python}} + ./configure + - name: Build Trick + run: | + export MAKEFLAGS=-j`nproc` + make + - name: Test + run: | + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../; make test + - name: Upload Tests + uses: actions/upload-artifact@v3.0.0 + if: success() || failure() # run this step even if previous step failed + with: + name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} + path: trick_test/*.xml + retention-days: 1 +# Uncomment for build artifacts +# - name: Upload Trick Build +# uses: actions/upload-artifact@v3.0.0 +# with: +# name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} +# path: | +# bin +# include +# lib +# share +# libexec +# retention-days: 1 diff --git a/.github/workflows/trickops.yml b/.github/workflows/trickops.yml index 6347ff8a..241f2705 100644 --- a/.github/workflows/trickops.yml +++ b/.github/workflows/trickops.yml @@ -1,14 +1,9 @@ name: TrickOps # This workflow is triggered on pushes to the repository. on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/trickops.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: defaults: run: