-
Notifications
You must be signed in to change notification settings - Fork 6
132 lines (121 loc) · 3.79 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
name: "CI"
on: # yamllint disable-line rule:truthy rule:comments
- "push"
- "pull_request"
jobs:
linters:
name: "Code Quality - Linting"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Lint & Code Format
run: |
echo 'Rnning Ruff' && \
poetry run ruff check . && \
echo 'Running Black' && \
poetry run black --check --diff . && \
echo 'Running Yamllint' && \
poetry run yamllint . && \
echo 'Running Bandit' && \
poetry run bandit --recursive ./ --configfile pyproject.toml && \
echo 'Running MyPy' && \
poetry run mypy .
test:
name: Testing on Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
needs:
- "linters"
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- name: "Install Containerlab"
run: |
sudo bash -c "$(curl -sL https://get.containerlab.dev)"
- name: "Start Arista CEOS"
run: "sudo containerlab deploy -t clab-files/clab-arista.yml"
- name: "Wait for Arista CEOS to be ready"
uses: "jakejarvis/wait-action@master"
with:
time: "10"
- name: "Change ownership of Containerlab files"
run: "sudo chown -R $USER clab-arista-testing.yml"
- name: Install dependencies
run: |
pip install poetry
poetry install --no-interaction
- name: Pytest
run: |
poetry run pytest --cov=nornir_netconf --cov-report=xml -vv
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
publish_gh:
needs:
- "test"
name: "Publish to GitHub"
runs-on: "ubuntu-20.04"
if: "startsWith(github.ref, 'refs/tags/v')"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v2"
- name: "Set up Python"
uses: "actions/setup-python@v2"
with:
python-version: "3.9"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV"
- name: "Run Poetry Version"
run: "poetry version $RELEASE_VERSION"
- name: "Run Poetry Build"
run: "poetry build"
- name: "Upload binaries to release"
uses: "svenstaro/upload-release-action@v2"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
file: "dist/*"
tag: "${{ github.ref }}"
overwrite: true
file_glob: true
publish_pypi:
needs:
- "test"
name: "Push Package to PyPI"
runs-on: "ubuntu-20.04"
if: "startsWith(github.ref, 'refs/tags/v')"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v2"
- name: "Set up Python"
uses: "actions/setup-python@v2"
with:
python-version: "3.9"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV"
- name: "Run Poetry Version"
run: "poetry version $RELEASE_VERSION"
- name: "Run Poetry Build"
run: "poetry build"
- name: "Push to PyPI"
uses: "pypa/gh-action-pypi-publish@release/v1"
with:
user: "__token__"
password: "${{ secrets.PYPI_API_TOKEN }}"