Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
860cf78
WIP: NiFi 2.x migration groundwork
Chaffelson Aug 13, 2025
5b6e187
WIP: secure-ldap end-to-end green and reproducible
Chaffelson Aug 14, 2025
ee67bbf
WIP: tests cleanup
Chaffelson Aug 14, 2025
133d4e9
chore: stop tracking cert env files; ignore resources/certs/*.env for…
Chaffelson Aug 14, 2025
ed9c61c
WIP: test infra refactor only (conftest profile defaults, Makefile te…
Chaffelson Aug 14, 2025
e90ca9b
docs: consolidate recent test/profile changes into 1.0.0 section
Chaffelson Aug 14, 2025
94b0bb3
chore(wait_ready): respect REQUESTS_CA_BUNDLE fallback and improve he…
Chaffelson Aug 14, 2025
84e6ed4
breaking: remove Docker management from client; deprecate demos; drop…
Chaffelson Aug 14, 2025
27c0fb9
chore(lint): flake8 clean; pylint clean; drop clean-test target; mino…
Chaffelson Aug 14, 2025
5276d26
chore(deps): prune dev deps; remove tox; update docs/badge; flake8 ex…
Chaffelson Aug 15, 2025
675defe
WIP: NiFi/Registry 2.x test infra stabilized; registry proxy bootstra…
Chaffelson Aug 15, 2025
a60aa9c
Remove tracked temporary client generation files from git
Chaffelson Aug 15, 2025
e5c7eba
Fix Makefile docker management and add test-all target
Chaffelson Aug 15, 2025
66a9b76
Add safe pre-commit configuration and fix lint issues
Chaffelson Aug 15, 2025
e0b7bb3
Replace ruamel.yaml with PyYAML dependency
Chaffelson Aug 15, 2025
9acebd7
Fix setuptools-scm version file tracking
Chaffelson Aug 15, 2025
6b5f4ac
Modernize build system with python -m build and add distribution targets
Chaffelson Aug 15, 2025
1e56abd
Add distribution import validation for release process
Chaffelson Aug 16, 2025
357ea63
Clean up legacy API definitions and temporary files
Chaffelson Aug 16, 2025
10388fb
feat: Comprehensive CI setup and environment variable standardization
Chaffelson Aug 16, 2025
e9ba7b9
Standardize environment variable naming to NIPYAPI_AUTH_MODE
Chaffelson Aug 16, 2025
bbae975
Improve system.py test coverage from 39% to 54%
Chaffelson Aug 16, 2025
4f601fa
WIP: Documentation modernization and restructuring
Chaffelson Aug 16, 2025
aab3a88
Fix client generation authentication regression
Chaffelson Aug 16, 2025
83cb799
Fix Registry client docstring formatting for Sphinx compliance
Chaffelson Aug 17, 2025
dce3f05
feat: finalize documentation structure and add comprehensive rebuild …
Chaffelson Aug 17, 2025
c3f018e
fix: smart certificate regeneration prevents SSL timing issues
Chaffelson Aug 17, 2025
e291fe1
Fix port mapping bug and restructure Makefile
Chaffelson Aug 17, 2025
88b0294
Regenerate API clients with improved docstrings
Chaffelson Aug 17, 2025
d16506d
Modernize FDLC demo and improve authentication consistency
Chaffelson Aug 17, 2025
0ecc3e3
Remove deprecated console.py example and clean up documentation
Chaffelson Aug 17, 2025
640490a
Authentication and playground improvements
Chaffelson Aug 17, 2025
7129ac6
Add comprehensive migration guide for 0.x to 1.x upgrade
Chaffelson Aug 18, 2025
1e4b0e8
Update developer documentation and Makefile improvements
Chaffelson Aug 18, 2025
488e6cd
feat: Major OIDC robustness improvements and professional terminology
Chaffelson Aug 19, 2025
1d6690f
feat: SSL configuration improvements and comprehensive security test …
Chaffelson Aug 19, 2025
a7561fe
feat: optimize test suite performance and consolidate configuration
Chaffelson Aug 19, 2025
53e4cee
Major refactoring: Add centralized profile management system
Chaffelson Aug 23, 2025
3230694
Consolidate version 1.x entries into comprehensive version 1.0 releas…
Chaffelson Aug 23, 2025
f8699ad
Fix test_fs_write for root CI environment
Chaffelson Aug 23, 2025
62b0579
Fix Makefile internal dependencies
Chaffelson Aug 23, 2025
e98ed75
Documentation Pass: Fixed linking, restructured explanations to bette…
Chaffelson Aug 23, 2025
7f8f7f0
Fix Python 3.12 CI compatibility issues
Chaffelson Aug 23, 2025
a434adb
Add comprehensive debugging for secure profile CI failures
Chaffelson Aug 23, 2025
15c3123
Fix certificate permissions for container compatibility
Chaffelson Aug 23, 2025
c97448c
Add black and isort formatting support
Chaffelson Aug 25, 2025
23a8974
Add configurable PYTHON variable for cross-platform compatibility
Chaffelson Aug 25, 2025
add80b7
Add examples README and improve main README documentation links
Chaffelson Aug 25, 2025
74ab0f4
Fix Makefile test dependency
Chaffelson Aug 26, 2025
fb770b1
Fix SSL and Host verification
Chaffelson Aug 26, 2025
9cf9213
Fixup: mtls on CI failing due to invalid ssl verify and host check co…
Chaffelson Aug 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
361 changes: 361 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,361 @@
name: CI

on:
push:
branches: [ main, maint-0.x ]
pull_request:
branches: [ main, maint-0.x ]

jobs:
test-python-312-single-user:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Lint with flake8 and pylint
run: make lint

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (single-user)
run: make up NIPYAPI_PROFILE=single-user

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=single-user

- name: Run integration tests with coverage
run: NIPYAPI_PROFILE=single-user PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest --cov=nipyapi --cov-report=xml --cov-report=term-missing
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""

- name: Test distribution build and import
run: make test-dist

- name: Stop NiFi infrastructure
if: always()
run: make down

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

test-python-311-single-user:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: "3.11"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (single-user)
run: make up NIPYAPI_PROFILE=single-user

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=single-user

- name: Run integration tests
run: NIPYAPI_PROFILE=single-user PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""

- name: Stop NiFi infrastructure
if: always()
run: make down

test-python-310-single-user:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (single-user)
run: make up NIPYAPI_PROFILE=single-user

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=single-user

- name: Run integration tests
run: NIPYAPI_PROFILE=single-user PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""

- name: Stop NiFi infrastructure
if: always()
run: make down

test-python-39-single-user:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: "3.9"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (single-user)
run: make up NIPYAPI_PROFILE=single-user

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=single-user

- name: Run integration tests
run: NIPYAPI_PROFILE=single-user PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""

- name: Stop NiFi infrastructure
if: always()
run: make down

test-python-312-secure-ldap:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (secure-ldap)
run: make up NIPYAPI_PROFILE=secure-ldap

- name: Wait for containers to stabilize
run: sleep 5 && docker ps -a

- name: Debug SSL environment
run: |
python -c "import ssl; print('OpenSSL version:', ssl.OPENSSL_VERSION)"
python -c "import ssl; print('SSL context flags:', ssl.create_default_context().verify_flags)"

- name: Debug environment variables
run: |
echo "=== Environment Variables ==="
echo "NIFI_VERIFY_SSL: ${NIFI_VERIFY_SSL:-unset}"
echo "REGISTRY_VERIFY_SSL: ${REGISTRY_VERIFY_SSL:-unset}"
echo "NIPYAPI_CHECK_HOSTNAME: ${NIPYAPI_CHECK_HOSTNAME:-unset}"
echo "=== Testing getenv_bool parsing ==="
python -c "
import os
os.environ['NIFI_VERIFY_SSL'] = '0'
os.environ['REGISTRY_VERIFY_SSL'] = '0'
os.environ['NIPYAPI_CHECK_HOSTNAME'] = '0'
import nipyapi
print('NIFI_VERIFY_SSL via getenv_bool:', nipyapi.utils.getenv_bool('NIFI_VERIFY_SSL'))
print('REGISTRY_VERIFY_SSL via getenv_bool:', nipyapi.utils.getenv_bool('REGISTRY_VERIFY_SSL'))
print('NIPYAPI_CHECK_HOSTNAME via getenv_bool:', nipyapi.utils.getenv_bool('NIPYAPI_CHECK_HOSTNAME'))
"
env:
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=secure-ldap
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Run integration tests
run: NIPYAPI_PROFILE=secure-ldap PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Dump running containers and logs on failure
if: failure()
run: |
echo "=== Container Status ==="
docker ps -a
echo "=== Container Logs ==="
for container in $(docker ps -aq); do
echo "--- Logs for container: $container ---"
docker logs "$container" 2>&1 || echo "Failed to get logs for container $container"
echo ""
done

- name: Stop NiFi infrastructure
if: always()
run: make down

test-python-312-secure-mtls:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Generate certificates
run: make certs

- name: Start NiFi infrastructure (secure-mtls)
run: make up NIPYAPI_PROFILE=secure-mtls

- name: Wait for containers to stabilize
run: sleep 5 && docker ps -a

- name: Debug SSL environment
run: |
python -c "import ssl; print('OpenSSL version:', ssl.OPENSSL_VERSION)"
python -c "import ssl; print('SSL context flags:', ssl.create_default_context().verify_flags)"

- name: Debug environment variables
run: |
echo "=== Environment Variables ==="
echo "NIFI_VERIFY_SSL: ${NIFI_VERIFY_SSL:-unset}"
echo "REGISTRY_VERIFY_SSL: ${REGISTRY_VERIFY_SSL:-unset}"
echo "NIPYAPI_CHECK_HOSTNAME: ${NIPYAPI_CHECK_HOSTNAME:-unset}"
echo "=== Testing getenv_bool parsing ==="
python -c "
import os
os.environ['NIFI_VERIFY_SSL'] = '0'
os.environ['REGISTRY_VERIFY_SSL'] = '0'
os.environ['NIPYAPI_CHECK_HOSTNAME'] = '0'
import nipyapi
print('NIFI_VERIFY_SSL via getenv_bool:', nipyapi.utils.getenv_bool('NIFI_VERIFY_SSL'))
print('REGISTRY_VERIFY_SSL via getenv_bool:', nipyapi.utils.getenv_bool('REGISTRY_VERIFY_SSL'))
print('NIPYAPI_CHECK_HOSTNAME via getenv_bool:', nipyapi.utils.getenv_bool('NIPYAPI_CHECK_HOSTNAME'))
"
env:
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Wait for NiFi to be ready
run: make wait-ready NIPYAPI_PROFILE=secure-mtls
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Run integration tests
run: NIPYAPI_PROFILE=secure-mtls PYTHONPATH=${{ github.workspace }}:$PYTHONPATH pytest
env:
PYTHONHTTPSVERIFY: "0"
CURL_CA_BUNDLE: ""
REQUESTS_CA_BUNDLE: ""
NIFI_VERIFY_SSL: "0"
REGISTRY_VERIFY_SSL: "0"
NIPYAPI_CHECK_HOSTNAME: "0"

- name: Dump running containers and logs on failure
if: failure()
run: |
echo "=== Container Status ==="
docker ps -a
echo "=== Container Logs ==="
for container in $(docker ps -aq); do
echo "--- Logs for container: $container ---"
docker logs "$container" 2>&1 || echo "Failed to get logs for container $container"
echo ""
done

- name: Stop NiFi infrastructure
if: always()
run: make down
Loading
Loading