Skip to content

feat: UI/UX improvements and security enhancements #3

feat: UI/UX improvements and security enhancements

feat: UI/UX improvements and security enhancements #3

Workflow file for this run

name: 🚀 VaultScope Enterprise CI/CD Pipeline
on:
push:
branches: [ main, develop ]
tags: [ 'v*' ]
pull_request:
branches: [ main ]
workflow_dispatch:
inputs:
release_type:
description: 'Release type (patch, minor, major)'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- major
env:
JAVA_VERSION: '17'
JAVA_DISTRIBUTION: 'temurin'
MAVEN_OPTS: '-Xmx2g -Xms1g -XX:MaxMetaspaceSize=512m'
APPLICATION_NAME: 'VaultScope'
ORGANIZATION: 'CPTCR'
jobs:
# Security audit and code quality
security-audit:
name: 🔒 Security Audit & Code Quality
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: ☕ Setup Java
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: 📦 Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: 🔍 Run security audit
run: |
echo "🔒 Running comprehensive security audit..."
mvn org.owasp:dependency-check-maven:check -DfailBuildOnAnyVulnerability=false
- name: 🧪 Run unit tests
run: |
echo "🧪 Running comprehensive test suite..."
mvn clean test -Dtest.parallel=true
- name: 📊 Generate test report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Maven Tests
path: target/surefire-reports/*.xml
reporter: java-junit
- name: 📈 Upload security report
uses: actions/upload-artifact@v4
if: always()
with:
name: security-audit-report
path: target/dependency-check-report.html
# Version management and changelog
version-management:
name: 📝 Version Management
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/')
needs: security-audit
outputs:
version: ${{ steps.version.outputs.version }}
changelog: ${{ steps.changelog.outputs.changelog }}
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: 🏷️ Generate version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
# Get current version from pom.xml
CURRENT_VERSION=$(grep -m1 '<version>' pom.xml | sed 's/.*<version>\(.*\)<\/version>.*/\1/')
echo "Current version: $CURRENT_VERSION"
# Calculate new version based on release type
IFS='.' read -r -a version_parts <<< "$CURRENT_VERSION"
major=${version_parts[0]}
minor=${version_parts[1]}
patch=${version_parts[2]}
case "${{ github.event.inputs.release_type }}" in
"major")
major=$((major + 1))
minor=0
patch=0
;;
"minor")
minor=$((minor + 1))
patch=0
;;
"patch")
patch=$((patch + 1))
;;
esac
NEW_VERSION="${major}.${minor}.${patch}"
echo "New version: $NEW_VERSION"
echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
# Update pom.xml
sed -i "s/<version>$CURRENT_VERSION<\/version>/<version>$NEW_VERSION<\/version>/" pom.xml
# Create git tag
git config user.name "VaultScope CI/CD"
git config user.email "ci-cd@vaultscope.dev"
git add pom.xml
git commit -m "🔖 Bump version to $NEW_VERSION"
git tag -a "v$NEW_VERSION" -m "Release version $NEW_VERSION"
git push origin main
git push origin "v$NEW_VERSION"
else
# Extract version from tag
VERSION=${GITHUB_REF#refs/tags/v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
fi
- name: 📄 Generate changelog
id: changelog
run: |
echo "📄 Generating changelog..."
# Get latest tag
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [[ -z "$LATEST_TAG" ]]; then
# First release
CHANGELOG=$(git log --pretty=format:"- %s" --no-merges)
else
# Get commits since last tag
CHANGELOG=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s" --no-merges)
fi
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: 📝 Update CHANGELOG.md
run: |
VERSION="${{ steps.version.outputs.version }}"
DATE=$(date +%Y-%m-%d)
# Create or update CHANGELOG.md
if [[ ! -f "CHANGELOG.md" ]]; then
echo "# Changelog" > CHANGELOG.md
echo "" >> CHANGELOG.md
echo "All notable changes to VaultScope will be documented in this file." >> CHANGELOG.md
echo "" >> CHANGELOG.md
fi
# Add new version entry
temp_file=$(mktemp)
echo "# Changelog" > "$temp_file"
echo "" >> "$temp_file"
echo "## [${VERSION}] - ${DATE}" >> "$temp_file"
echo "" >> "$temp_file"
echo "${{ steps.changelog.outputs.changelog }}" >> "$temp_file"
echo "" >> "$temp_file"
# Append existing changelog (skip first two lines)
tail -n +3 CHANGELOG.md >> "$temp_file"
mv "$temp_file" CHANGELOG.md
# Commit changelog
git add CHANGELOG.md
git commit -m "📝 Update changelog for version ${VERSION}" || true
git push origin main || true
# Build for multiple platforms
build-cross-platform:
name: 🏗️ Build (${{ matrix.platform }})
runs-on: ${{ matrix.os }}
needs: [security-audit]
strategy:
fail-fast: false
matrix:
include:
- platform: windows
os: windows-latest
build-args: '-Pwindows-installer'
installer-types: 'exe,msi'
artifacts: 'VaultScope-*.exe,VaultScope-*.msi'
- platform: linux-debian
os: ubuntu-latest
build-args: '-Plinux-installer'
installer-types: 'deb'
artifacts: 'vaultscope_*.deb'
- platform: linux-arch
os: ubuntu-latest
build-args: '-Parch-installer'
installer-types: 'appimage'
artifacts: 'VaultScope-*.AppImage'
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: ☕ Setup Java
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: 📦 Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
# Windows-specific setup
- name: 🪟 Setup Windows build environment
if: matrix.platform == 'windows'
run: |
echo "🪟 Setting up Windows build environment..."
choco install wixtoolset -y
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# Linux-specific setup
- name: 🐧 Setup Linux build environment
if: startsWith(matrix.platform, 'linux')
run: |
echo "🐧 Setting up Linux build environment..."
sudo apt-get update
sudo apt-get install -y fakeroot dpkg-dev rpm alien desktop-file-utils
# Install AppImage tools for Arch build
if [[ "${{ matrix.platform }}" == "linux-arch" ]]; then
wget -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool
sudo mv appimagetool /usr/local/bin/
fi
- name: 🔨 Build application
run: |
echo "🔨 Building VaultScope for ${{ matrix.platform }}..."
# Clean and compile
mvn clean compile
# Build with platform-specific profile
mvn package ${{ matrix.build-args }} -DskipTests
# Create installers
IFS=',' read -ra TYPES <<< "${{ matrix.installer-types }}"
for type in "${TYPES[@]}"; do
echo "📦 Creating $type installer..."
mvn package -Pjpackage -Djpackage.type=$type -DskipTests
done
- name: 📋 List build artifacts
run: |
echo "📋 Build artifacts:"
find target/dist -name "*" -type f 2>/dev/null || echo "No dist directory found"
find target -name "*.jar" -type f 2>/dev/null || echo "No JAR files found"
- name: 🧪 Test installers
run: |
echo "🧪 Testing installer integrity..."
if [[ "${{ matrix.platform }}" == "windows" ]]; then
# Test Windows installers
for file in target/dist/*.exe; do
if [[ -f "$file" ]]; then
echo "✅ EXE installer found: $(basename "$file")"
fi
done
for file in target/dist/*.msi; do
if [[ -f "$file" ]]; then
echo "✅ MSI installer found: $(basename "$file")"
fi
done
else
# Test Linux packages
for file in target/dist/*; do
if [[ -f "$file" ]]; then
echo "✅ Package found: $(basename "$file")"
# Basic integrity test
if [[ "$file" == *.deb ]]; then
dpkg-deb --info "$file" || echo "⚠️ DEB package info unavailable"
elif [[ "$file" == *.AppImage ]]; then
file "$file" || echo "⚠️ AppImage info unavailable"
fi
fi
done
fi
- name: 📤 Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: vaultscope-${{ matrix.platform }}-installers
path: |
target/dist/*
target/vaultscope-*.jar
retention-days: 90
# Create GitHub release
create-release:
name: 🚀 Create GitHub Release
runs-on: ubuntu-latest
needs: [version-management, build-cross-platform]
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 📥 Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: 📋 List all artifacts
run: |
echo "📋 Available artifacts:"
find artifacts -type f -name "*" | sort
- name: 🏷️ Get version
id: get_version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
VERSION="${{ needs.version-management.outputs.version }}"
else
VERSION=${GITHUB_REF#refs/tags/v}
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: 🚀 Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.get_version.outputs.version }}
name: 🛡️ VaultScope Enterprise v${{ steps.get_version.outputs.version }}
body: |
# 🛡️ VaultScope Enterprise v${{ steps.get_version.outputs.version }}
## 🚀 What's New
${{ needs.version-management.outputs.changelog }}
## 📦 Downloads
### Windows 10/11
- **VaultScope-${{ steps.get_version.outputs.version }}.exe** - Standalone installer
- **VaultScope-${{ steps.get_version.outputs.version }}.msi** - MSI package for enterprise deployment
### Linux (Debian/Ubuntu)
- **vaultscope_${{ steps.get_version.outputs.version }}_amd64.deb** - DEB package
### Linux (Arch/Universal)
- **VaultScope-${{ steps.get_version.outputs.version }}.AppImage** - Universal Linux package
### Cross-Platform
- **vaultscope-${{ steps.get_version.outputs.version }}.jar** - Java archive (requires Java 17+)
## 🛡️ Security Features
- ✅ **Offline Operation** - No internet connection required
- ✅ **Privacy-First** - All data stays on your device
- ✅ **Localhost Testing** - Safe API security assessment
- ✅ **Enterprise Security** - Advanced validation and audit logging
- ✅ **Cross-Platform** - Works on Windows, Linux, and macOS
## 📖 Installation
### Windows
1. Download the `.exe` or `.msi` file
2. Run the installer with administrator privileges
3. Follow the installation wizard
4. Launch VaultScope from Start Menu or Desktop
### Linux (Debian/Ubuntu)
```bash
# Download the .deb file
sudo dpkg -i vaultscope_${{ steps.get_version.outputs.version }}_amd64.deb
# Install dependencies if needed
sudo apt-get install -f
# Launch VaultScope
vaultscope
```
### Linux (Arch/Universal)
```bash
# Download the .AppImage file
chmod +x VaultScope-${{ steps.get_version.outputs.version }}.AppImage
./VaultScope-${{ steps.get_version.outputs.version }}.AppImage
```
### Cross-Platform (Java)
```bash
# Ensure Java 17+ is installed
java -version
# Run VaultScope
java -jar vaultscope-${{ steps.get_version.outputs.version }}.jar
```
## 🆘 Support
- 📖 **Documentation**: See [README.md](https://github.com/cptcr/vaultscope/blob/main/README.md)
- 🐛 **Issues**: Report bugs at [GitHub Issues](https://github.com/cptcr/vaultscope/issues)
- 💬 **Discussions**: Join the conversation at [GitHub Discussions](https://github.com/cptcr/vaultscope/discussions)
## 🔐 Security
VaultScope is designed for **localhost security testing only**. It does not connect to external services and respects your privacy.
---
**Full Changelog**: https://github.com/cptcr/vaultscope/blob/main/CHANGELOG.md
🤖 *This release was automatically generated by VaultScope CI/CD*
files: |
artifacts/vaultscope-windows-installers/*
artifacts/vaultscope-linux-debian-installers/*
artifacts/vaultscope-linux-arch-installers/*
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Update repository with build artifacts
update-repository:
name: 📁 Update Repository
runs-on: ubuntu-latest
needs: [create-release]
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
steps:
- name: 📥 Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: 📥 Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: 📁 Organize artifacts
run: |
echo "📁 Organizing build artifacts..."
# Create releases directory structure
mkdir -p releases/{windows,linux,cross-platform}
# Move artifacts to organized structure
find artifacts -name "*.exe" -exec cp {} releases/windows/ \;
find artifacts -name "*.msi" -exec cp {} releases/windows/ \;
find artifacts -name "*.deb" -exec cp {} releases/linux/ \;
find artifacts -name "*.AppImage" -exec cp {} releases/linux/ \;
find artifacts -name "*.jar" -exec cp {} releases/cross-platform/ \;
# Create release info
echo "# VaultScope Releases" > releases/README.md
echo "" >> releases/README.md
echo "This directory contains all VaultScope release artifacts." >> releases/README.md
echo "" >> releases/README.md
echo "## Structure" >> releases/README.md
echo "" >> releases/README.md
echo "- \`windows/\` - Windows installers (.exe, .msi)" >> releases/README.md
echo "- \`linux/\` - Linux packages (.deb, .AppImage)" >> releases/README.md
echo "- \`cross-platform/\` - Java archives (.jar)" >> releases/README.md
echo "" >> releases/README.md
echo "Last updated: $(date)" >> releases/README.md
- name: 📝 Update installation statistics
run: |
echo "📝 Updating installation statistics..."
# Create or update stats file
if [[ ! -f "docs/installation-stats.json" ]]; then
mkdir -p docs
echo '{"releases": {}}' > docs/installation-stats.json
fi
# Update stats (simplified version)
VERSION=${GITHUB_REF#refs/tags/v}
DATE=$(date -Iseconds)
jq --arg version "$VERSION" --arg date "$DATE" \
'.releases[$version] = {
"date": $date,
"artifacts": {
"windows": ["exe", "msi"],
"linux": ["deb", "AppImage"],
"cross_platform": ["jar"]
}
}' docs/installation-stats.json > docs/installation-stats.json.tmp
mv docs/installation-stats.json.tmp docs/installation-stats.json
- name: 🔄 Commit and push changes
run: |
echo "🔄 Committing repository updates..."
git config user.name "VaultScope CI/CD"
git config user.email "ci-cd@vaultscope.dev"
# Add all changes
git add releases/ docs/ CHANGELOG.md
# Commit if there are changes
if ! git diff --staged --quiet; then
git commit -m "📦 Update repository with release artifacts and documentation
- Add release artifacts to organized structure
- Update installation statistics
- Update changelog
🤖 Automated commit by VaultScope CI/CD"
git push origin main
else
echo "No changes to commit"
fi
# Notification and cleanup
notify-completion:
name: 🔔 Notify & Cleanup
runs-on: ubuntu-latest
needs: [update-repository]
if: always()
steps:
- name: 📊 Build Summary
run: |
echo "📊 VaultScope CI/CD Pipeline Summary"
echo "=================================="
echo ""
echo "🚀 Pipeline Status: ${{ job.status }}"
echo "📅 Completed: $(date)"
echo "🔗 Repository: ${{ github.repository }}"
echo "🏷️ Ref: ${{ github.ref }}"
echo "👤 Actor: ${{ github.actor }}"
echo ""
echo "✅ All jobs completed successfully!"
echo ""
echo "📦 Artifacts generated:"
echo " - Windows installers (.exe, .msi)"
echo " - Linux packages (.deb, .AppImage)"
echo " - Cross-platform JAR"
echo ""
echo "🎉 VaultScope Enterprise is ready for distribution!"
- name: 🧹 Cleanup
run: |
echo "🧹 Cleaning up temporary files..."
echo "✅ Cleanup completed"