This directory contains GitHub Actions workflows for automated building, testing, and releasing of the KNX Viewer application.
Triggers: Push to main, Pull requests to main
Purpose: Continuous integration testing and development builds
Jobs:
-
Test: Runs on Ubuntu
- Linting (if configured)
- Unit tests (if available)
- TypeScript compilation check
- Application build verification
-
Build: Runs on all platforms (Ubuntu, Windows, macOS)
- Only runs on push to main branch
- Creates platform-specific builds
- Uploads artifacts for 7 days
Triggers: Git tags starting with v* (e.g., v1.1.0)
Purpose: Automated release builds and GitHub Releases
Jobs:
-
Release: Multi-platform builds
- Ubuntu: Creates AppImage and DEB packages
- Windows: Creates NSIS installer (.exe)
- macOS: Creates DMG disk image
- Uploads platform-specific artifacts
-
Create Release:
- Downloads all artifacts
- Creates GitHub Release with generated notes
- Attaches all platform binaries
Triggers: Push to main, Pull requests, Weekly schedule
Purpose: Security scanning and dependency checks
Jobs:
-
Security:
- npm audit for known vulnerabilities
- CodeQL static analysis
- Runs weekly to catch new vulnerabilities
-
Dependency Review:
- Reviews dependency changes in PRs
- Fails on moderate+ severity issues
To create a new release:
-
Update version in
package.json:{ "version": "1.2.0" } -
Update CHANGELOG.md with new features and fixes
-
Commit changes:
git add package.json CHANGELOG.md git commit -m "Bump version to 1.2.0" -
Create and push tag:
git tag v1.2.0 git push origin main --tags
-
Automated process:
- GitHub Actions will automatically build for all platforms
- Create GitHub Release with binaries attached
- Generate release notes
-
Pull Request:
- Creates PR → CI runs tests and builds
- Security workflow checks dependencies
- Must pass before merge
-
Merge to Main:
- CI creates development builds
- Artifacts available for testing
-
Tag Release:
- Release workflow creates production builds
- GitHub Release published automatically
- Windows:
knxview-setup-{version}.exe - macOS:
knxview-{version}.dmg - Linux:
knxview-{version}.AppImageknxview_{version}_amd64.deb
- CI Builds: 7 days retention
- Release Builds: Permanent (attached to GitHub Releases)
GITHUB_TOKEN: Automatically provided by GitHub- Used for: Creating releases, uploading artifacts
- Permissions: Automatically configured in workflows
- Note: Workflows include explicit permission declarations for security
CSC_LINK: macOS code signing certificate (base64)CSC_KEY_PASSWORD: Certificate passwordWINDOWS_CERT: Windows code signing certificateWINDOWS_CERT_PASSWORD: Windows certificate password
Build Failures:
- Check Node.js version compatibility
- Verify all dependencies are properly locked
- Review TypeScript compilation errors
Release Failures:
- Ensure version tag format is correct (
v1.2.3) - Check electron-builder configuration
- Verify all platforms build successfully
Security Failures:
- Review npm audit output
- Update vulnerable dependencies
- Check CodeQL findings
Access build logs through:
- GitHub repository → Actions tab
- Select specific workflow run
- Expand job steps to see detailed output
Configuration in package.json under build section:
- Platform-specific settings
- File inclusion/exclusion
- Installer configuration
tsconfig.json: TypeScript compilation settings- Affects build process and type checking
webpack.config.js: Frontend build configuration- Bundling and optimization settings
-
Update Dependencies:
npm update npm audit fix
-
Review Security Alerts:
- Check GitHub Security tab
- Review Dependabot PRs
- Update vulnerable packages
-
Monitor Build Performance:
- Review build times
- Optimize slow steps
- Update GitHub Actions versions
When modifying workflows:
- Test in feature branch first
- Check workflow syntax
- Verify permissions and secrets
- Monitor first production run
- Never commit secrets or certificates
- Use GitHub Secrets for sensitive data
- Keep dependencies updated
- Review CodeQL security findings
- Monitor dependency vulnerabilities
For CI/CD issues:
- Check workflow logs in GitHub Actions
- Review this documentation
- Check GitHub Actions documentation
- Create issue with workflow logs attached