diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/doc.yml | 21 | ||||
-rw-r--r-- | .github/workflows/meson.yml | 69 | ||||
-rw-r--r-- | .github/workflows/python-publish.yml | 67 |
3 files changed, 157 insertions, 0 deletions
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml new file mode 100644 index 0000000..75afbc8 --- /dev/null +++ b/.github/workflows/doc.yml @@ -0,0 +1,21 @@ +name: libnvme documenation CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + kernel_doc_job: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v2 + - name: Check documentation format + run: | + API_FILES="fabrics.h filters.h ioctl.h linux.h tree.h types.h" + for file in $API_FILES; do + ./doc/kernel-doc -v -none src/nvme/$file 2>&1 | sed -r 's/^([^:]+):([0-9]+): (warning|error):/::\3 file=\1,line=\2::/g' + done + shell: bash diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml new file mode 100644 index 0000000..c89de99 --- /dev/null +++ b/.github/workflows/meson.yml @@ -0,0 +1,69 @@ +name: libnvme meson CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +jobs: + build-disto: + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libjson-c-dev + - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + - uses: BSFishy/meson-build@v1.0.3 + with: + setup-options: --werror + options: --verbose + action: test + # Preserve meson's log file on failure + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Linux_Meson_Testlog + path: build/meson-logs/testlog.txt + + build-fallback: + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get remove -y libssl-dev + - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + - uses: BSFishy/meson-build@v1.0.3 + with: + setup-options: --werror + options: --verbose + action: test + meson-version: 0.61.2 + # Preserve meson's log file on failure + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: Linux_Meson_log + path: build/meson-logs/meson-log.txt + + code-coverage: + runs-on: ubuntu-latest + steps: + - name: install libraries + run: sudo apt-get install libjson-c-dev lcov + - uses: actions/checkout@v2 + - uses: actions/setup-python@v1 + - uses: BSFishy/meson-build@v1.0.3 + with: + setup-options: -Db_coverage=true --werror + options: --verbose + # Can't use 'coverage' here, see https://github.com/BSFishy/meson-build/issues/4 + action: test + - name: Generate Coverage Report + # Can't use meson here, see https://github.com/mesonbuild/meson/issues/7895 + run: ninja -C build coverage --verbose + - uses: codecov/codecov-action@v1 + with: + fail_ci_if_error: false diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..7e451ef --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,67 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Build and upload to PyPI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + build_wheels: + name: Build wheels manylinux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Build wheels + uses: pypa/cibuildwheel@v2.3.1 + env: + CIBW_REPAIR_WHEEL_COMMAND_LINUX: "" + CIBW_SKIP: "*-musllinux_*" + CIBW_BEFORE_BUILD_LINUX: yum install -y openssl-devel libuuid-devel json-c-devel + CIBW_BUILD_VERBOSITY: 1 + + - uses: actions/upload-artifact@v2 + with: + path: ./wheelhouse/*.whl + retention-days: 5 + + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Build sdist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v2 + with: + path: dist/*.tar.gz + retention-days: 5 + + upload_pypi: + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + steps: + - uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + + - name: Publish package to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + repository_url: https://test.pypi.org/legacy/ |