-
Notifications
You must be signed in to change notification settings - Fork 1
Comparing changes
Open a pull request
base repository: technicalpickles/envsense
base: 0.3.1
head repository: technicalpickles/envsense
compare: 0.3.3
- 20 commits
- 15 files changed
- 2 contributors
Commits on Sep 10, 2025
-
Configuration menu - View commit details
-
Copy full SHA for b3c5ba3 - Browse repository at this point
Copy the full SHA b3c5ba3View commit details -
Configuration menu - View commit details
-
Copy full SHA for f785c07 - Browse repository at this point
Copy the full SHA f785c07View commit details -
feat: improve signature validation and remove hard-coded versions
## Signature Validation Improvements - Add bundle format support to cosign signing process - Implement fallback verification (bundle -> signature -> multiple identity patterns) - Add immediate signature verification in GitHub Actions workflow - Improve error reporting with debugging information - Use GitHub CLI instead of curl for more reliable asset downloads ## Dynamic Version Management - Remove hard-coded versions from test scripts - Auto-detect current version from Cargo.toml - Update aqua configuration to support both bundle and signature formats ## Technical Changes - Enhanced validation script with multiple verification approaches - Added bundle support to aqua registry configuration - Improved error handling and debugging output - Better compatibility with different cosign versions This addresses the signature verification issues and makes the testing infrastructure more maintainable by eliminating hard-coded version references.
Configuration menu - View commit details
-
Copy full SHA for bb1623c - Browse repository at this point
Copy the full SHA bb1623cView commit details -
refactor: extract release steps into dedicated scripts
## Motivation - Complex shell logic in GitHub Actions is hard to test and maintain - Inline scripts make the workflow file harder to read - Dedicated scripts can be tested locally and reused ## Changes - **scripts/filter-release-files.sh**: Extract file filtering logic - **scripts/sign-release-binaries.sh**: Extract cosign signing logic - **scripts/verify-release-signatures.sh**: Extract signature verification - Update GitHub Actions workflow to use scripts instead of inline shell ## Benefits - ✅ Testable locally without GitHub Actions - ✅ Better error handling and logging - ✅ Cleaner workflow file - ✅ Reusable scripts for manual operations - ✅ Easier to debug and maintain ## Testing - Scripts include proper error handling - File filtering correctly excludes test files - All scripts have executable permissions
Configuration menu - View commit details
-
Copy full SHA for 190b299 - Browse repository at this point
Copy the full SHA 190b299View commit details -
Merge pull request #46 from technicalpickles/improve-signature-valida…
…tion feat: improve signature validation and refactor release scripts
Configuration menu - View commit details
-
Copy full SHA for 9e16f1e - Browse repository at this point
Copy the full SHA 9e16f1eView commit details -
chore: bump version to 0.3.2 to test improved bundle-based signing
This version bump will trigger a release with the new bundle-based signing process from PR #46, allowing us to validate that: - Bundle files (.bundle) are created correctly - Signature verification works with the new format - Both bundle and signature formats are available for aqua compatibility - Immediate verification in CI catches any signing issues Once this release completes, we can use the monitoring scripts to validate the improved signing process is working correctly.
Configuration menu - View commit details
-
Copy full SHA for 24424ad - Browse repository at this point
Copy the full SHA 24424adView commit details -
Merge pull request #48 from technicalpickles/bump-version-0.3.2
chore: bump version to 0.3.2 to test improved bundle-based signing
Configuration menu - View commit details
-
Copy full SHA for 0ce6324 - Browse repository at this point
Copy the full SHA 0ce6324View commit details -
fix: improve signature verification with multiple identity patterns
## Problem The 0.3.2 release failed because signature verification was too strict with certificate identity matching. The verification step was failing even though signing was working correctly. ## Root Cause - Certificate identity format in verification didn't match what GitHub Actions actually generates during keyless signing - COSIGN_EXPERIMENTAL=1 environment variable is deprecated in newer cosign versions - Bundle verification might need different parameters ## Fixes ### Enhanced Verification Script - **Multiple Identity Patterns**: Try different certificate identity formats - **Fallback Strategy**: Standard path → regexp → loose regexp matching - **Better Error Handling**: Continue trying different formats if one fails ### GitHub Actions Workflow - **Remove Deprecated Flag**: Removed COSIGN_EXPERIMENTAL=1 environment variable - **Cleaner Configuration**: Simplified environment setup ### Debug Tooling - **New Debug Script**: `debug-signature-verification.sh` for troubleshooting - **Verbose Output**: Shows exactly what certificate identities are being tried - **Release Asset Inspection**: Downloads and inspects actual signature files ## Expected Impact - Signature verification should now succeed in GitHub Actions - More robust verification that works with different cosign versions - Better debugging capabilities for future issues ## Testing This will be tested when the next release runs with these fixes.
Configuration menu - View commit details
-
Copy full SHA for e87a2c0 - Browse repository at this point
Copy the full SHA e87a2c0View commit details -
chore: bump version to 0.3.3 to trigger new release
Since the 0.3.2 release failed and was never published, we need to bump to 0.3.3 to ensure there's a clear version difference that will trigger the release workflow. This version will test the improved signature verification fixes: - Multiple certificate identity pattern matching - Removed deprecated COSIGN_EXPERIMENTAL flag - Enhanced bundle and signature verification - Debug tooling for troubleshooting Expected outcome: Successful release with both .bundle and .sig files.
Configuration menu - View commit details
-
Copy full SHA for 9277b61 - Browse repository at this point
Copy the full SHA 9277b61View commit details -
Merge pull request #49 from technicalpickles/release-0.3.3-with-fixes
feat: release 0.3.3 with improved bundle-based signing
Configuration menu - View commit details
-
Copy full SHA for 9ae0587 - Browse repository at this point
Copy the full SHA 9ae0587View commit details -
fix: shellcheck warning in test-signing workflow
Add -r flag to read command to properly handle backslashes.
Configuration menu - View commit details
-
Copy full SHA for 096a60d - Browse repository at this point
Copy the full SHA 096a60dView commit details -
refactor: move signing validation logic to reusable script
## Changes - ✅ **Release workflow**: Use `./scripts/check-signing-completed.sh release-files` instead of inline bash - ✅ **Test workflow**: Use `./scripts/check-signing-completed.sh test-release-files` for consistency - ✅ **Explicit directories**: Pass directory parameters explicitly for clarity - ✅ **Reusable logic**: Same validation script used across workflows ## Benefits - 🧪 **Testable**: Script can be tested independently - 🔄 **Reusable**: Same logic across release and test workflows - 📝 **Maintainable**: Changes in one place affect all workflows - 🚀 **Cleaner workflows**: Less inline bash, more focused steps The `check-signing-completed.sh` script provides detailed output and proper exit codes, making workflows more readable and debugging easier.
Configuration menu - View commit details
-
Copy full SHA for e809fcf - Browse repository at this point
Copy the full SHA e809fcfView commit details -
fix: improve stat command error handling in check-signing-completed.sh
Addresses Copilot review feedback about proper error handling in stat commands. ## Problem The original stat fallback logic could potentially cause issues with set -euo pipefail: ```bash stat -c%s file 2>/dev/null || stat -f%z file ``` ## Solution Use proper fallback chaining with explicit error suppression: ```bash stat -c%s file 2>/dev/null || stat -f%z file 2>/dev/null || echo "unknown" ``` ## Benefits - ✅ **Proper fallback**: Linux → macOS → fallback value - ✅ **Error handling**: Each command has explicit error suppression - ✅ **Reliable**: Works correctly with set -euo pipefail - ✅ **Tested**: Verified with test files showing correct byte counts This addresses the Copilot review comments about stat command error handling.
Configuration menu - View commit details
-
Copy full SHA for 278439f - Browse repository at this point
Copy the full SHA 278439fView commit details -
fix: test workflow file naming conflict with filter script
## Problem The test-signing workflow was failing because: - Test file: `envsense-test-universal-apple-darwin` - Filter script: excludes files with `-test*` pattern - Result: 0 files filtered, causing workflow failure ## Solution Change test file name to avoid `-test` pattern: - Before: `envsense-test-universal-apple-darwin` - After: `envsense-v0.0.0-universal-apple-darwin` ## Root Cause The `filter-release-files.sh` script uses: ```bash find $DIST_DIR/ -name "envsense-*" -not -name "*-test*" ``` This correctly excludes actual test builds but was also excluding our CI test file. ## Impact - ✅ Test workflow will now find and process the test file - ✅ Signing process can be tested in CI - ✅ Filter script continues to exclude real test builds - ✅ No impact on actual release process
Configuration menu - View commit details
-
Copy full SHA for 087c8af - Browse repository at this point
Copy the full SHA 087c8afView commit details -
fix: improve signature verification for different workflows and branches
## Problem Signature verification was failing in test-signing workflow because: - Script was hardcoded to look for 'release.yml' workflow - Certificate identity didn't match the actual workflow context - PR branches use different refs than main branch ## Root Cause Analysis The cosign certificate identity must match exactly: - Workflow: test-signing.yml vs release.yml - Branch: refs/heads/PR_BRANCH vs refs/heads/main - Repository context must be precise ## Solution ### Auto-detect Workflow Context - Use GITHUB_WORKFLOW environment variable - Map display names to filenames: - 'Test Signing Process' → 'test-signing.yml' - 'Release' → 'release.yml' ### Dynamic Branch Reference - Detect PR context: use GITHUB_HEAD_REF for PR branches - Fallback to GITHUB_REF for current context - Default to refs/heads/main as final fallback ### Enhanced Debug Output - Show detected repository, workflow, and branch - Display certificate identity being attempted - Show verbose cosign output for first attempt - Better error diagnosis capabilities ## Expected Impact - ✅ Test workflow verification should now succeed - ✅ Release workflow verification continues to work - ✅ PR-based testing will have correct certificate matching - ✅ Better debugging for future verification issues This addresses the core issue: verification wasn't 'expected to fail' - it was failing due to incorrect certificate identity matching.
Configuration menu - View commit details
-
Copy full SHA for 7108645 - Browse repository at this point
Copy the full SHA 7108645View commit details -
debug: add verbose output to bundle verification
## Problem Bundle verification is failing silently, making it hard to diagnose the issue. The error output isn't visible in the current logs. ## Solution - Add verbose output to show the exact cosign command being run - Capture and display both success and failure output from bundle verification - Show detailed error messages when bundle verification fails ## Expected Outcome This will help us understand why bundle verification is failing and fix the root cause. Bundle verification should work since the bundle contains all necessary certificate and signature information. ## Next Steps After seeing the detailed error output, we can: 1. Fix any command format issues 2. Address certificate identity problems 3. Ensure bundle verification works reliably Bundle verification is the preferred approach since it's self-contained and doesn't require separate certificate identity matching.
Configuration menu - View commit details
-
Copy full SHA for b9149d7 - Browse repository at this point
Copy the full SHA b9149d7View commit details -
refactor: simplify cosign verification approach based on best practices
## Problem Analysis After reviewing cosign best practices and GitHub Actions integration, we were overcomplicating the verification process: 1. **Complex certificate identity matching** - Hard to get right 2. **Bundle verification confusion** - Missing required parameters 3. **Focus on wrong thing** - Verification complexity vs signing reliability ## Solution: Pragmatic Approach ### **1. Simplify Test Verification** - Focus on validating that signing **works** (files created) - Use basic format validation with --insecure flags for testing - Don't block on complex certificate identity matching in CI ### **2. Keep Robust Verification for Release** - Maintain full verification script for post-release validation - Add proper certificate identity parameters for bundle verification - Use this for actual security validation when it matters ### **3. Follow Cosign Best Practices** Based on cosign documentation: - Bundle verification still needs certificate identity for keyless signing - Proper OIDC issuer specification required - Branch reference detection for PR vs main contexts ## Strategy - **Test workflow**: Validate signing works, don't block on verification complexity - **Release workflow**: Use simple completion checks (files exist) - **Post-release**: Full verification with proper certificate matching This aligns with our earlier decision to move verification out of the release critical path while still maintaining security validation capabilities. ## Expected Outcome - ✅ Test workflow should pass (focuses on signing success) - ✅ Release workflow will work (simple file existence checks) - ✅ Full verification available when needed (post-release validation)
Configuration menu - View commit details
-
Copy full SHA for 4fabb13 - Browse repository at this point
Copy the full SHA 4fabb13View commit details -
fix: consolidate file naming patterns between test and release workflows
## Problem Test and release workflows used different file naming patterns: - **Test**: \`envsense-v0.0.0-universal-apple-darwin\` (with 'v' prefix) - **Release**: \`envsense-0.3.3-universal-apple-darwin\` (no 'v' prefix) This inconsistency could cause subtle issues and reduces confidence in testing. ## Solution ### **1. Standardize Naming Pattern** - Remove 'v' prefix from test files - Use exact same pattern as \`prepare-binary.sh\` - Both now use: \`envsense-{VERSION}-{TARGET}\` ### **2. Multi-File Testing** - Add second test binary (\`x86_64-unknown-linux-gnu\`) - Better simulate real release scenario (2 binaries) - Test signing script's multi-file loop logic ### **3. Consistent Structure** ```bash # Test files (now): envsense-0.0.0-universal-apple-darwin envsense-0.0.0-x86_64-unknown-linux-gnu envsense-0.0.0-universal-apple-darwin.sha256 envsense-0.0.0-x86_64-unknown-linux-gnu.sha256 # Release files: envsense-0.3.3-universal-apple-darwin envsense-0.3.3-x86_64-unknown-linux-gnu envsense-0.3.3-universal-apple-darwin.sha256 envsense-0.3.3-x86_64-unknown-linux-gnu.sha256 ``` ## Benefits - ✅ **Perfect naming alignment** between test and release - ✅ **Multi-file testing** matches real release scenario - ✅ **Higher confidence** in release process - ✅ **Better test coverage** of signing script loops This eliminates the last significant difference between test and release workflows, maximizing our confidence when merging and releasing.Configuration menu - View commit details
-
Copy full SHA for be2d7fb - Browse repository at this point
Copy the full SHA be2d7fbView commit details -
Configuration menu - View commit details
-
Copy full SHA for d9d8bfc - Browse repository at this point
Copy the full SHA d9d8bfcView commit details -
Merge pull request #50 from technicalpickles/release-0.3.3-with-fixes
fix: move signature validation to CI instead of blocking releases
Configuration menu - View commit details
-
Copy full SHA for f9e61d1 - Browse repository at this point
Copy the full SHA f9e61d1View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 0.3.1...0.3.3