From a97817105e56546d53c9da78bc988ecd475758e7 Mon Sep 17 00:00:00 2001 From: Stefano Ortolani Date: Mon, 16 Dec 2024 14:34:43 +0000 Subject: [PATCH] Fix test CI/CD --- .github/workflows/python-ci-release.yml | 53 +++++++++++++++++++++ .github/workflows/python-ci-tests.yml | 35 +++++++++++--- .pre-commit-config.yaml | 4 +- setup.py | 9 ++++ stix2/test/v21/test_datastore_filesystem.py | 2 + tox.ini | 8 ++-- 6 files changed, 98 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/python-ci-release.yml diff --git a/.github/workflows/python-ci-release.yml b/.github/workflows/python-ci-release.yml new file mode 100644 index 00000000..9a9982de --- /dev/null +++ b/.github/workflows/python-ci-release.yml @@ -0,0 +1,53 @@ +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: cti-python-stix2 release +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.12 + uses: actions/setup-python@v2 + with: + python-version: 3.12 + - name: Install and update essential dependencies + run: | + pip install -U pip setuptools + pip install tox-gh-actions + pip install codecov + - name: Test with Tox + run: | + tox + - name: Upload coverage information to Codecov + uses: codecov/codecov-action@v4.2.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false # optional (default = false) + verbose: true # optional (default = false) + - name: Upload package artifact + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-pypi: + runs-on: ubuntu-latest + needs: build + + permissions: + id-token: write + + steps: + - name: Download dist files + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true diff --git a/.github/workflows/python-ci-tests.yml b/.github/workflows/python-ci-tests.yml index 47f860e1..cffd9986 100644 --- a/.github/workflows/python-ci-tests.yml +++ b/.github/workflows/python-ci-tests.yml @@ -4,12 +4,12 @@ name: cti-python-stix2 test harness on: [push, pull_request] jobs: - build: + test: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8, 3.9, '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] name: Python ${{ matrix.python-version }} Build steps: @@ -26,9 +26,30 @@ jobs: - name: Test with Tox run: | tox - - name: Upload coverage information to Codecov - uses: codecov/codecov-action@v4.2.0 + - name: Upload package artifact + if: ${{ matrix.python-version == '3.12' }} + uses: actions/upload-artifact@v4 with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: false # optional (default = false) - verbose: true # optional (default = false) + name: python-package-distributions + path: dist/ + + publish-to-test-pypi: + runs-on: ubuntu-latest + needs: test + + permissions: + id-token: write + + steps: + - name: Download dist files + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish to Test PyPI + if: ${{ github.event_name == 'push' }} + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true + repository-url: https://test.pypi.org/legacy/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c39aaf6d..a4166a6e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.4.0 + rev: v4.5.0 hooks: - id: trailing-whitespace - id: check-merge-conflict @@ -9,7 +9,7 @@ repos: hooks: - id: add-trailing-comma - repo: https://github.com/PyCQA/flake8 - rev: 3.8.4 + rev: 7.0.0 hooks: - id: flake8 name: Check project styling diff --git a/setup.py b/setup.py index d0d8fe77..808623de 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,8 @@ #!/usr/bin/env python from codecs import open +from importlib import metadata import os.path +import sys from setuptools import find_packages, setup @@ -22,6 +24,13 @@ def get_long_description(): return f.read() +try: + metadata.version("stix2") + sys.exit("Error: 'stix2' is installed. Uninstall it before proceeding.") +except metadata.PackageNotFoundError: + pass + + setup( name='misp-lib-stix2', version=get_version(), diff --git a/stix2/test/v21/test_datastore_filesystem.py b/stix2/test/v21/test_datastore_filesystem.py index 39b45578..037146e6 100644 --- a/stix2/test/v21/test_datastore_filesystem.py +++ b/stix2/test/v21/test_datastore_filesystem.py @@ -151,6 +151,7 @@ def test_filesystem_source_bad_stix_file(fs_source, bad_stix_files): except STIXError as e: assert "Can't parse object with no 'type' property" in str(e) + def test_filesystem_sink_add_pretty_true(fs_sink, fs_source): """Test adding a STIX object with pretty=True.""" camp1 = stix2.v21.Campaign( @@ -169,6 +170,7 @@ def test_filesystem_sink_add_pretty_true(fs_sink, fs_source): os.remove(filepath) + def test_filesystem_sink_add_pretty_false(fs_sink, fs_source): """Test adding a STIX object with pretty=False.""" camp1 = stix2.v21.Campaign( diff --git a/tox.ini b/tox.ini index bc7bd5b6..e7450057 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38,py39,py310,py311,py312,packaging,pre-commit-check +envlist = py39,py310,py311,py312,packaging,pre-commit-check [testenv] deps = @@ -18,6 +18,7 @@ passenv = GITHUB_* [testenv:packaging] deps = + setuptools twine commands = python setup.py sdist bdist_wheel --universal @@ -31,8 +32,7 @@ commands = [gh-actions] python = - 3.8: py38 3.9: py39 3.10: py310 - 3.11: py311, packaging, pre-commit-check - 3.12: py312 + 3.11: py311 + 3.12: py312, packaging, pre-commit-check