Server launch script #24
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: CI | |
on: | |
push: | |
branches: | |
- "main" | |
pull_request: | |
jobs: | |
format: | |
name: Ensure code is properly formatted | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: | | |
pip install --upgrade poetry | |
poetry install | |
poetry run black --check --diff . | |
ci: | |
name: Run the integration tests | |
runs-on: "ubuntu-latest" | |
container: | |
image: registry.opensuse.org/opensuse/tumbleweed | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: zypper -n ref | |
# python3 required for sqlite3 module | |
- run: zypper -n in python3-pipx python3-rpm python3 | |
- run: pipx install poetry | |
env: | |
PIPX_BIN_DIR: /usr/bin | |
- run: poetry install | |
- run: poetry run pytest -vv | |
- run: | | |
poetry run coverage run -m pytest -vv | |
poetry run coverage combine | |
poetry run coverage report -m | |
poetry run coverage xml | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
build: | |
name: Build the package | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.x" | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- name: Run the build | |
run: | | |
pip install --upgrade poetry | |
poetry install | |
poetry build | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: wheel | |
path: dist/rpm_spec_language_server*whl | |
if-no-files-found: error | |
install: | |
name: Install the package | |
runs-on: ${{ matrix.os_version }} | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
python_version: ["3.11", "3.12"] | |
steps: | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python_version }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheel | |
path: dist | |
- name: install the wheel | |
run: pip install --user dist/rpm_spec_language_server*whl | |
- name: run a smoke test that the package has been installed | |
run: python -c "import rpm_spec_language_server; print(rpm_spec_language_server.__name__)" | |
documentation: | |
name: Build the documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: pip install --upgrade poetry | |
- run: | | |
poetry install | |
poetry run sphinx-build -M html source build -W | |
- name: upload the build directory | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
path: ./build/html | |
deploy: | |
name: deploy to the gh-pages branch | |
runs-on: ubuntu-latest | |
needs: documentation | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
path: ./build | |
- run: touch ./build/.nojekyll | |
- name: deploy to github pages | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
branch: gh-pages | |
folder: build | |
lint: | |
name: Lint the source code | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
# FIXME: temporary fix to python 3.11 to avoid a: | |
# AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'? | |
# when launching pylint with python 3.12 | |
python-version: '3.11' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pypoetry/virtualenvs | |
key: poetry-${{ hashFiles('poetry.lock') }} | |
- run: | | |
pip install --upgrade poetry | |
poetry install | |
# grab the previously built wheel for checking with twine | |
# FIXME: implement twine check | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheel | |
path: dist | |
- run: poetry run mypy rpm_spec_language_server/ |