added telemetry autodoc +Readme update (#76) #458
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
pull_request: | |
permissions: | |
# https://github.community/t/permissions-nesecary-to-comment-on-a-pr/179047/5 | |
pull-requests: write | |
contents: write | |
jobs: | |
build: | |
name: Build & Test | |
strategy: | |
matrix: | |
#python-version: [ '3.9', '3.10', 'pypy3.9' ] | |
python-version: [ '3.9' ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Create multi-node KinD cluster | |
uses: redhat-chaos/actions/kind@main | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Update version number | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
sed -i -e "s/0.0.0/${GITHUB_REF##*/}/" pyproject.toml | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Check isort, black, and flake8 | |
run: | | |
pip install black flake8 isort | |
isort --profile black . | |
black --line-length 79 . | |
flake8 . | |
curl -sSL https://install.python-poetry.org | python3 - | |
- name: Install project dependencies | |
run: poetry install --no-interaction | |
- name: Run tests with coverage | |
env: | |
API_USER: ${{ secrets.API_USER }} | |
API_PASSWORD: ${{ secrets.API_PASSWORD }} | |
BUCKET_NAME: ${{ secrets.BUCKET_NAME }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
run: | | |
export TEST_WORKDIR=`pwd`/`date +%s` | |
mkdir $TEST_WORKDIR | |
poetry run python3 -m coverage run -a -m unittest discover -v src/krkn_lib/tests/ | |
poetry run python3 -m coverage html | |
poetry run python3 -m coverage json | |
- name: Publish coverage report to job summary | |
if: ${{ matrix.python-version == '3.9'}} | |
run: | | |
poetry run html2text --ignore-images --ignore-links -b 0 htmlcov/index.html >> $GITHUB_STEP_SUMMARY | |
- name: Build | |
run: poetry build | |
- name: Upload json coverage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage.json | |
path: coverage.json | |
if-no-files-found: error | |
- name: Upload dist artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
if-no-files-found: error | |
- name: Upload coverage HTML artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage | |
path: htmlcov | |
if-no-files-found: error | |
doc: | |
name: Generate and Publish Docs | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Check out doc repo | |
uses: actions/checkout@master | |
with: | |
repository: redhat-chaos/krkn-lib-docs | |
path: krkn-lib-docs | |
ssh-key: ${{ secrets.LIB_REPO_DOC_KEY }} | |
- name: Download json coverage | |
uses: actions/download-artifact@v3 | |
with: | |
name: coverage.json | |
- name: Update version number | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
sed -i -e "s/0.0.0/${GITHUB_REF##*/}/" pyproject.toml | |
sed -i -e "s/0.0.0/${GITHUB_REF##*/}/" ./docs/conf.py | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- name: Install Poetry | |
run: | | |
curl -sSL https://install.python-poetry.org | python3 - | |
- name: Install project dependencies | |
run: poetry install --no-interaction | |
- name: Generate documentation | |
run: | | |
poetry run sphinx-apidoc -o docs/ -f -a -e src/krkn_lib --doc-project "Krkn Foundation Library" | |
poetry run make -C docs html | |
- name: Copy documentation on GitHub Page Repo | |
env: | |
COLOR: red | |
run: | | |
find krkn-lib-docs/ -type f ! -name 'index.html' -type d ! -name '.git' -delete | |
cp -R docs/build/html/* krkn-lib-docs | |
# generate coverage badge on previously calculated total coverage | |
# and copy in the docs page | |
export TOTAL=$(python -c "import json;print(json.load(open('coverage.json'))['totals']['percent_covered_display'])") | |
[[ $TOTAL > 70 ]] && COLOR=green | |
echo "TOTAL: $TOTAL" | |
echo "COLOR: $COLOR" | |
curl "https://img.shields.io/badge/coverage-$TOTAL%25-$COLOR" > ./krkn-lib-docs/coverage_badge.svg | |
- name: Push updated HTML documentation | |
run: | | |
cd krkn-lib-docs | |
git add . | |
git config user.name "redhat-chaos" | |
git config user.email "<>" | |
git commit -m "[KRKN LIB] API documentation ${GITHUB_REF##*/}" | |
git push | |
publish: | |
name: Publish Library on PyPi | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: dist | |
path: dist | |
- name: Install twine | |
run: pip install -U twine | |
- name: Publish | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{secrets.PYPI_TOKEN}} | |
TWINE_NON_INTERACTIVE: true | |
run: twine upload dist/* |