From 0e9a006baedbc619f2e85296cb98f029b980ea47 Mon Sep 17 00:00:00 2001 From: Mark Bonicillo Date: Tue, 13 Jul 2021 11:31:39 -0700 Subject: [PATCH] Update Workflows; add dbutils Workflows --- .github/workflows/pytest-auth.yml | 48 +++++------------------ .github/workflows/pytest-dbutils.yml | 53 ++++++++++++++++++++++++++ .github/workflows/pytest-testutils.yml | 53 ++++++-------------------- README.md | 3 +- 4 files changed, 76 insertions(+), 81 deletions(-) create mode 100644 .github/workflows/pytest-dbutils.yml diff --git a/.github/workflows/pytest-auth.yml b/.github/workflows/pytest-auth.yml index 3a198cd8f7..843b9f60de 100644 --- a/.github/workflows/pytest-auth.yml +++ b/.github/workflows/pytest-auth.yml @@ -14,7 +14,7 @@ name: Testing platform auth # Determine what events are going to trigger a running of the workflow -on: [push, pull_request] +on: [pull_request, push] jobs: # The job named build @@ -25,7 +25,7 @@ jobs: fail-fast: false matrix: # Each entry in the os and python-version matrix will be run so for the 3 x 4 there will be 12 jobs run - os: [ ubuntu-16.04, ubuntu-18.04, ubuntu-20.04 ] + os: [ ubuntu-18.04, ubuntu-20.04 ] python-version: [ 3.6, 3.7] # , 3.8, 3.9 ] # Run-on determines the operating system available to run on @@ -38,50 +38,20 @@ jobs: # checkout the volttron repository and set current direectory to it - uses: actions/checkout@v2 - # Install erlang for rabbitmq - - name: Install erlang - if: matrix.os != 'ubuntu-20.04' - run: | - sudo scripts/rabbit_dependencies.sh debian ${{ matrix.os }} - # setup the python environment for the operating system - name: Set up Python ${{matrix.os}} ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - # Attempt to restore the cache from the build-dependency-cache workflow if present then - # the output value steps.check_files.outputs.files_exists will be set (see the next step for usage) - - name: Has restored cache - id: check_files - uses: andstor/file-existence-action@v1 - with: - files: "env/bin/activate" - - # This step is only run if the cache wasn't able to be restored. - - name: Install dependencies including rmq - if: steps.check_files.outputs.files_exists != 'true' && matrix.os != 'ubuntu-20.04' - run: | - pip install wheel - python bootstrap.py --all --rabbitmq --force - - - name: Install dependencies other than rmq - if: steps.check_files.outputs.files_exists != 'true' && matrix.os == 'ubuntu-20.04' - run: | - pip install wheel - python bootstrap.py --all --force - - - name: Install volttron - run: | - source env/bin/activate - pip install -e . - # Run the specified tests and save the results to a unique file that can be archived for later analysis. - - name: Run pytest - run: | - source env/bin/activate - pip install -e . - pytest volttrontesting/platform/auth_tests -rf -o junit_family=xunit2 --junitxml=output/test-auth-${{matrix.os}}-${{ matrix.python-version }}-results.xml + - name: Run pytest on ${{ matrix.python-version }}, ${{ matrix.os }} + uses: volttron/volttron-build-action@v1 + with: + python_version: ${{ matrix.python-version }} + os: ${{ matrix.os }} + test_path: volttrontesting/platform/auth_tests + test_output_suffix: auth # Archive the results from the pytest to storage. - name: Archive test results diff --git a/.github/workflows/pytest-dbutils.yml b/.github/workflows/pytest-dbutils.yml new file mode 100644 index 0000000000..ad5b85d218 --- /dev/null +++ b/.github/workflows/pytest-dbutils.yml @@ -0,0 +1,53 @@ +--- +# This workflow is meant as a foundational workflow for running integration/unit tests on the +# platform. For this workflow we are testing the +# +# volttrontesting/testutils directory using pytest. +# +# This workflow also shows the caching mechanisms available for storage +# and retrieval of cache for quicker setup of test environments. + +name: Testing dbutils directory +on: [push, pull_request] + +jobs: + build: + # The strategy allows customization of the build and allows matrixing the version of os and software + # https://docs.github.com/en/free-pro-team@l.atest/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategy + strategy: + fail-fast: false + matrix: + # Each entry in the os and python-version matrix will be run so for the 3 x 4 there will be 12 jobs run + os: [ ubuntu-18.04, ubuntu-20.04 ] + python-version: [ 3.6, 3.7] # , 3.8, 3.9 ] + + runs-on: ${{ matrix.os }} + env: + TEST_TYPE: dbutils + steps: + # checkout the volttron repository and set current directory to it + - uses: actions/checkout@v2 + + # Attempt to restore the cache from the build-dependency-cache workflow if present then + # the output value steps.check_files.outputs.files_exists will be set (see the next step for usage) + - name: Set up Python ${{matrix.os}} ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + # Run the specified tests and save the results to a unique file that can be archived for later analysis. + - name: Run pytest on ${{ matrix.python-version }}, ${{ matrix.os }} + uses: volttron/volttron-build-action@v1 + with: + python_version: ${{ matrix.python-version }} + os: ${{ matrix.os }} + test_path: volttrontesting/platform/${{ env.TEST_TYPE }} + test_output_suffix: ${{ env.TEST_TYPE }} + +# Archive the results from the pytest to storage. + - name: Archive test results + uses: actions/upload-artifact@v2 + if: always() + with: + name: pytest-report + path: output/${{ env.TEST_TYPE }}-${{matrix.os}}-${{ matrix.python-version }}-results.xml diff --git a/.github/workflows/pytest-testutils.yml b/.github/workflows/pytest-testutils.yml index 88472e1309..44fc0c300c 100644 --- a/.github/workflows/pytest-testutils.yml +++ b/.github/workflows/pytest-testutils.yml @@ -1,6 +1,6 @@ --- # This workflow is meant as a foundational workflow for running integration/unit tests on the -# plaform. For this workflow we are testing the +# platform. For this workflow we are testing the # # volttrontesting/testutils directory using pytest. # @@ -18,21 +18,15 @@ jobs: fail-fast: false matrix: # Each entry in the os and python-version matrix will be run so for the 3 x 4 there will be 12 jobs run - os: [ ubuntu-16.04, ubuntu-18.04, ubuntu-20.04 ] + os: [ ubuntu-18.04, ubuntu-20.04 ] python-version: [ 3.6, 3.7] # , 3.8, 3.9 ] runs-on: ${{ matrix.os }} steps: - # checkout the volttron repository and set current direectory to it + # checkout the volttron repository and set current directory to it - uses: actions/checkout@v2 - # Install erlang for rabbitmq - - name: Install erlang - if: matrix.os != 'ubuntu-20.04' - run: | - sudo scripts/rabbit_dependencies.sh debian ${{ matrix.os }} - # Attempt to restore the cache from the build-dependency-cache workflow if present then # the output value steps.check_files.outputs.files_exists will be set (see the next step for usage) - name: Set up Python ${{matrix.os}} ${{ matrix.python-version }} @@ -40,46 +34,23 @@ jobs: with: python-version: ${{ matrix.python-version }} - # Determine if the cache was restored or not. - - name: Has restored cache - id: check_files - uses: andstor/file-existence-action@v1 - with: - files: "env/bin/activate" - - # This step is only run if the cache wasn't able to be restored. - - name: Install dependencies including rmq - if: steps.check_files.outputs.files_exists != 'true' && matrix.os != 'ubuntu-20.04' - run: | - pip install wheel - python bootstrap.py --all --rabbitmq --force - - - name: Install dependencies other than rmq - if: steps.check_files.outputs.files_exists != 'true' && matrix.os == 'ubuntu-20.04' - run: | - pip install wheel - python bootstrap.py --all --force - - - name: Install volttron - run: | - source env/bin/activate - pip install -e . - # Run the specified tests and save the results to a unique file that can be archived for later analysis. - - name: Run pytest - run: | - source env/bin/activate - pip install -e . - pytest volttrontesting/testutils -rf -o junit_family=xunit2 --junitxml=output/test-testutils-${{matrix.os}}-${{ matrix.python-version }}-results.xml + - name: Run pytest on ${{ matrix.python-version }}, ${{ matrix.os }} + uses: volttron/volttron-build-action@v1 + with: + python_version: ${{ matrix.python-version }} + os: ${{ matrix.os }} + test_path: volttrontesting/testutils + test_output_suffix: testutils - # Archive the results from the pytest to storage. +# Archive the results from the pytest to storage. - name: Archive test results uses: actions/upload-artifact@v2 if: always() with: name: pytest-report path: output/test-testutils-${{matrix.os}}-${{ matrix.python-version }}-results.xml - + # - name: Publish Unit Test Results # uses: EnricoMi/publish-unit-test-result-action@v1.5 # if: always() diff --git a/README.md b/README.md index 247f467f9d..c3190b03ef 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ ![image](docs/source/files/VOLLTRON_Logo_Black_Horizontal_with_Tagline.png) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/fcf58045b4804edf8f4d3ecde3016f76)](https://app.codacy.com/gh/VOLTTRON/volttron?utm_source=github.com&utm_medium=referral&utm_content=VOLTTRON/volttron&utm_campaign=Badge_Grade_Settings) +![example workflow](https://github.com/volttron/volttron/actions/workflows/pytest-testutils.yml/badge.svg) + VOLTTRON™ is an open source platform for distributed sensing and control. The platform provides services for collecting and storing data from buildings and devices and provides an environment for developing applications which interact with that data. -[![Build Status](https://travis-ci.org/VOLTTRON/volttron.svg?branch=develop)](https://travis-ci.org/VOLTTRON/volttron) ## Features