Skip to content

Update: 18.06.2026 23:07:22,51 #3

Update: 18.06.2026 23:07:22,51

Update: 18.06.2026 23:07:22,51 #3

Workflow file for this run

name: 🏗️ Build Secure Pass Pro
on:
push:
branches: [ main, master, develop ]
paths-ignore:
- '**.md'
- 'docs/**'
- '.gitignore'
pull_request:
branches: [ main, master ]
workflow_dispatch:
jobs:
build:
name: 🖥️ Build on ${{ matrix.os }} (Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.10', '3.11']
include:
- os: ubuntu-latest
artifact_name: SecurePassPro-Linux
executable_ext: ''
- os: windows-latest
artifact_name: SecurePassPro-Windows.exe
executable_ext: '.exe'
- os: macos-latest
artifact_name: SecurePassPro-macOS
executable_ext: ''
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🐍 Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: 📦 Cache pip packages
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: 🔧 Install dependencies
run: |
python -m pip install --upgrade pip
pip install pyinstaller
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
pip install pillow customtkinter cryptography argon2-cffi qrcode[pil] requests psutil
shell: bash
- name: 🔍 Lint with flake8 (Linux only)
if: runner.os == 'Linux'
run: |
pip install flake8
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: 🔒 Run security checks (bandit)
if: runner.os == 'Linux'
run: |
pip install bandit
bandit -r . -f json -o bandit_report.json --skip=B101,B311 || true
- name: ✅ Run tests (if tests exist)
run: |
python -m pytest tests/ -v --tb=short --ignore=tests/test_gui.py || echo "⚠️ No tests found, continuing build"
continue-on-error: true
- name: 🏗️ Build with PyInstaller (Windows)
if: runner.os == 'Windows'
run: |
python build.py
shell: pwsh
- name: 🏗️ Build with PyInstaller (Linux)
if: runner.os == 'Linux'
run: |
chmod +x build.py
python build.py
- name: 🏗️ Build with PyInstaller (macOS)
if: runner.os == 'macOS'
run: |
python build.py
- name: 📦 Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}-py${{ matrix.python-version }}
path: dist/
retention-days: 30
- name: 📊 Upload security report
if: always() && runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: bandit-report
path: bandit_report.json
retention-days: 30