view .github/workflows/ci-test.yml @ 6865:e69b4bfaccd3

pip redis in, fix markdown2 test, install ReST, mysql edit mysqld max_allowed_packet is commented out, so change sed script to support commentd or uncommented versions.
author John Rouillard <rouilj@ieee.org>
date Thu, 01 Sep 2022 00:27:47 -0400
parents 7e907d97deb6
children a3ad2d1a4ea1
line wrap: on
line source

# merged in python-package.yml workflow

name: roundup-ci

on: 
    push:
        branches: [ "master" ]
#    pull_request:
#        branches: [ "master" ]
#    schedule:
#        - cron '0 11 * * 1-5'

jobs:
  test:
    name: CI build test

    runs-on: ubuntu-latest
    # use below if running on multiple OS's.
    # runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        # Run in all these versions of Python
        python-version: [ "2.7", "3.10" ]
        #python-version: [ "2.7", "3.10", "3.9", "3.8", "3.6" ]
    # use for multiple os or ubuntu versions
    #    os: [ubuntu-latest, macos-latest, windows-latest]

    env:
      # get colorized pytest output even without a controlling tty
      PYTEST_ADDOPTS: "--color=yes"
      #  OS: ${{ matrix.os }}
      PYTHON_VERSION: ${{ matrix.python-version }}

    steps:
      # Checkout the latest code from the repo
      - name: Checkout source
        uses: actions/checkout@v3

      # Setup which version of Python to use
      - name: Set Up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}

      # Display the Python version being used
      - name: Display Python version
        run: python -c "import sys; print(sys.version)"

      # Install the databases
      - name: Install postgres
        run: |
          sudo apt-get install postgresql
          # Disable fsync for speed, don't care about data durability when testing
          sudo sed -i -e '$a\fsync = off' /etc/postgresql/*/*/postgresql.conf
          sudo service postgresql restart; sleep 30
          # set up postgresql database
          sudo -u postgres psql -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" -U postgres

      - name: Install mysql/mariadb
        continue-on-error: true
        run: |
          set -xv
          sudo apt-get install mysql-server mysql-client
          # set up mysql database
          sudo sed -i -e '/^\[mysqld\]/,/^\[mysql/s/^#* *max_allowed_packet.*/max_allowed_packet = 500M/' /etc/mysql/mysql.conf.d/mysqld.cnf
          tail -n +0 /etc/mysql/my.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
          ls  /etc/mysql/conf.d/  /etc/mysql/mysql.conf.d/
          sudo service mysql restart
          sudo mysql -u root --skip-password -e 'GRANT ALL ON rounduptest.* TO rounduptest@localhost IDENTIFIED BY "rounduptest";'

      - name: install redis
        run: |
          sudo apt-get install redis
          pip install redis

      - name: Update pip
        run: python -m pip install --upgrade pip

      - name: Install db libraries
        run: pip install psycopg2 mysqlclient

      - name: Install auxiliary packages
        run: |
          sudo apt-get install swig gpgsm libgpgme-dev
          # pygments for markdown2 to highlight code blocks
          pip install markdown2 pygments
          # docutils for ReStructuredText
          pip install beautifulsoup4 brotli docutils gpg jinja2 mistune \
              pyjwt pytz whoosh

      - name: Install aux packages that need versions differences
        # if zstd fails install, keep going with test, don't abort
        run: |
          set -xv
          pip install zstd || true
          if [[ "$PYTHON_VERSION" != "2."* ]]; then 
              pip install Markdown; fi

      - name: Install pytest and other packages needed for running tests
        run: pip install codecov flake8 pytest pytest-cov requests

      - name: Test build roundup and install locale so lang tests work.
        run: |
          sudo apt-get install gettext
          python setup.py build
          (cd locale; make local_install; ls -lR locale/de/LC_MESSAGES)

      - name: run flake8 - abort for syntax error, otherwise warn only
        run: |
            # stop the build for Python syntax errors or undefined names
            # talgettext is a utility function ignore it.
            flake8 roundup --count --select=E9,F63,F7,F82 --show-source --statistics --extend-exclude talgettext.py
            # exit-zero treats all errors as warnings.
            #   The GitHub editor is 127 chars wide
            flake8 roundup --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

      # Run the tests using pytest with test files in tests directory.
      - name: Run tests
        run: |
          if [[ "$PYTHON_VERSION" != "2."* ]]; then 
            pytest -r a \
              -W default \
              -W "ignore:SelectableGroups:DeprecationWarning" \
              -W "ignore:the imp module:DeprecationWarning:gpg.gpgme:15" \
              -W "ignore:'U' mode::docutils.io"  \
              -W "ignore:unclosed:ResourceWarning:roundup.roundup.demo" \
              -W "ignore:unclosed file:ResourceWarning:enum" \
              -v --maxfail=5 test/ --cov=roundup
          else
            # python2 case
            pytest -v -r a --maxfail=5 test/ --cov=roundup
          fi

      - name: Upload coverage to Codecov
        # see: https://github.com/codecov/codecov-action#usage
        uses: codecov/codecov-action@v3
        with:
          verbose: true

      - name: test build_doc
        run: |
          python ./setup.py build_doc

Roundup Issue Tracker: http://roundup-tracker.org/