diff --git a/.github/workflows/dockerization.yml b/.github/workflows/dockerization.yml index 6698978691..4bfdca0d11 100644 --- a/.github/workflows/dockerization.yml +++ b/.github/workflows/dockerization.yml @@ -4,8 +4,6 @@ name: Dockerization on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/double_ws_export.yml b/.github/workflows/double_ws_export.yml index 4e11b1bc23..1a402e09df 100644 --- a/.github/workflows/double_ws_export.yml +++ b/.github/workflows/double_ws_export.yml @@ -4,8 +4,6 @@ name: Double workspace export on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/fets-challenge.yml b/.github/workflows/fets-challenge.yml index acc60dd03c..983bdad9de 100644 --- a/.github/workflows/fets-challenge.yml +++ b/.github/workflows/fets-challenge.yml @@ -4,8 +4,6 @@ name: FeTS Challenge TaskRunner on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/interactive-kvasir.yml b/.github/workflows/interactive-kvasir.yml index 9ddb696eeb..e0a6b24e89 100644 --- a/.github/workflows/interactive-kvasir.yml +++ b/.github/workflows/interactive-kvasir.yml @@ -4,8 +4,6 @@ name: Interactive API - Pytorch Kvasir UNet on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/interactive-tensorflow.yml b/.github/workflows/interactive-tensorflow.yml index b37fb6720c..6145d1c0c2 100644 --- a/.github/workflows/interactive-tensorflow.yml +++ b/.github/workflows/interactive-tensorflow.yml @@ -4,8 +4,6 @@ name: Interactive API - Tensorflow MNIST on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2ce37a52d1..9ccba39770 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,8 +4,6 @@ name: Lint with Flake8 on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/pki.yml b/.github/workflows/pki.yml index e78014d9c0..dd0f133583 100644 --- a/.github/workflows/pki.yml +++ b/.github/workflows/pki.yml @@ -4,8 +4,6 @@ name: Private Key Infrastructure on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/pytest_coverage.yml b/.github/workflows/pytest_coverage.yml index b4c0b91877..ce2a7f6383 100644 --- a/.github/workflows/pytest_coverage.yml +++ b/.github/workflows/pytest_coverage.yml @@ -4,8 +4,6 @@ name: Pytest and code coverage on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/straggler-handling.yml b/.github/workflows/straggler-handling.yml index f8ee899f38..6e49d9ac38 100644 --- a/.github/workflows/straggler-handling.yml +++ b/.github/workflows/straggler-handling.yml @@ -4,8 +4,6 @@ name: Straggler Handling Test on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/taskrunner.yml b/.github/workflows/taskrunner.yml index 3cd98fa3ee..9d8d79d47b 100644 --- a/.github/workflows/taskrunner.yml +++ b/.github/workflows/taskrunner.yml @@ -4,8 +4,6 @@ name: TaskRunner on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/taskrunner_python_3.10.yml b/.github/workflows/taskrunner_python_3.10.yml index 1082629c56..6907c87b5e 100644 --- a/.github/workflows/taskrunner_python_3.10.yml +++ b/.github/workflows/taskrunner_python_3.10.yml @@ -4,8 +4,6 @@ name: TaskRunner (Python 3.10) on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/taskrunner_python_3.9.yml b/.github/workflows/taskrunner_python_3.9.yml index 4c9a2ded9d..f1755ffad8 100644 --- a/.github/workflows/taskrunner_python_3.9.yml +++ b/.github/workflows/taskrunner_python_3.9.yml @@ -4,8 +4,6 @@ name: TaskRunner (Python 3.9) on: - push: - branches: [ develop ] pull_request: branches: [ develop ] diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml new file mode 100644 index 0000000000..51642c0e37 --- /dev/null +++ b/.github/workflows/ubuntu.yml @@ -0,0 +1,100 @@ +name: Ubuntu (latest) + +on: + schedule: + - cron: '0 0 * * *' + +permissions: + contents: read + +jobs: + lint: # from lint.yml + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements-linters.txt + pip install . + - name: Lint with flake8 + run: | + flake8 --show-source + + pytest-coverage: # from pytest_coverage.yml + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest coverage + pip install -r requirements-test.txt + pip install . + - name: Test with pytest and report code coverage + run: | + coverage run -m pytest -rA + coverage report + + dockerization: # from dockerization.yml + needs: [lint, pytest-coverage] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Dockerization test + run: | + python -m tests.github.dockerization_test + + interactive-kvasir: # from interactive-kvasir.yml + needs: [lint, pytest-coverage, dockerization] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Interactive API - pytorch_kvasir_unet + run: | + python setup.py build_grpc + pip install torch==1.8.1 + pip install torchvision==0.9.1 + python -m tests.github.interactive_api_director.experiments.pytorch_kvasir_unet.run + + cli: + needs: [lint, pytest-coverage, dockerization, interactive-kvasir] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Test TaskRunner API + run: | + python -m tests.github.test_hello_federation --template keras_cnn_mnist --fed_workspace aggregator --col1 col1 --col2 col2 --rounds-to-train 3 --save-model output_model \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000000..43bce494a5 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,65 @@ +name: Windows (latest) + +on: + schedule: + - cron: '0 0 * * *' + +permissions: + contents: read + +jobs: + pytest-coverage: # from pytest_coverage.yml + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest coverage + pip install -r requirements-test.txt + pip install . + - name: Test with pytest and report code coverage + run: | + coverage run -m pytest -rA + coverage report + + interactive-kvasir: # from interactive-kvasir.yml + needs: [pytest-coverage] + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Interactive API - pytorch_kvasir_unet + run: | + python setup.py build_grpc + pip install torch==1.8.1 + pip install torchvision==0.9.1 + python -m tests.github.interactive_api_director.experiments.pytorch_kvasir_unet.run + + cli: # from taskrunner.yml + needs: [pytest-coverage, interactive-kvasir] + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.8 + uses: actions/setup-python@v3 + with: + python-version: "3.8" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Test TaskRunner API + run: | + python -m tests.github.test_hello_federation --template keras_cnn_mnist --fed_workspace aggregator --col1 col1 --col2 col2 --rounds-to-train 3 --save-model output_model \ No newline at end of file diff --git a/README.md b/README.md index db5ac83cb4..032da094a8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Open Federated Learning (OpenFL) - An Open-Source Framework For Federated Learning [![PyPI - Python Version](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-blue)](https://pypi.org/project/openfl/) -[![Continuous Integration](https://github.com/intel/openfl/actions/workflows/python-app.yml/badge.svg?branch=develop)](https://github.com/intel/openfl/actions/workflows/python-app.yml) +[![Ubuntu CI status](https://github.com/intel/openfl/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/intel/openfl/actions/workflows/ubuntu.yml) +[![Windows CI status](https://github.com/intel/openfl/actions/workflows/windows.yml/badge.svg)](https://github.com/intel/openfl/actions/workflows/windows.yml) [![Documentation Status](https://readthedocs.org/projects/openfl/badge/?version=latest)](https://openfl.readthedocs.io/en/latest/?badge=latest) [![Downloads](https://pepy.tech/badge/openfl)](https://pepy.tech/project/openfl) [![DockerHub](https://img.shields.io/docker/pulls/intel/openfl.svg)](https://hub.docker.com/r/intel/openfl)