This directory contains CI/CD workflows for the FFmpeg Installer project.
Trigger: Push a version tag (e.g., v2.5.9)
Purpose: Automatically builds the installer and creates a draft GitHub release.
What it does:
- ✅ Builds the FFmpeg Installer as a single-file executable
- ✅ Generates release notes from commit history
- ✅ Calculates SHA256 checksums for security verification
- ✅ Creates a draft release with the executable and zip archive
- ✅ Uploads build artifacts for 30 days
How to use:
# Create and push a version tag
git tag v2.5.9
git push origin v2.5.9
# Or create an annotated tag with message
git tag -a v2.5.9 -m "Release version 2.5.9 - Added build selection feature"
git push origin v2.5.9After the workflow completes:
- Go to Releases
- Find the draft release
- Review the release notes and artifacts
- Edit if needed
- Click "Publish release" when ready
Trigger:
- Push to
mainbranch - Pull requests to
mainbranch
Purpose: Continuous integration testing to ensure builds work correctly.
What it does:
- ✅ Builds the project in Debug and Release configurations
- ✅ Verifies the executable is created successfully
- ✅ Uploads build artifacts for commits to main branch
- ✅ Runs on every PR to catch issues early
Use semantic versioning with a v prefix:
v2.5.9- Major.Minor.Patchv3.0.0- Major version bumpv2.5.1- Patch release
The workflow extracts the version (removes the v) for file naming.
These workflows require:
- Windows runner: Builds .NET Windows Forms application
- .NET 6.0 SDK: Automatically installed by the workflow
- GitHub token: Automatically provided (
GITHUB_TOKEN)
The workflows produce:
FFmpegInstaller.exe- Standalone executableFFmpegInstaller-{version}.zip- Compressed archivechecksums.txt- SHA256 hashes for verificationrelease_notes.md- Generated release notes
Edit the retention-days value in the workflow files.
Add additional dotnet publish commands with different runtime identifiers:
- dotnet publish -r win-x86 # 32-bit Windows
- dotnet publish -r win-arm64 # ARM64 WindowsChange draft: true to draft: false in build-release.yml to auto-publish.
- Check that the project file is named
FFmpegInstaller.csproj - Verify the output path in the publish command
- Ensure you have
contents: writepermission - Check that the tag follows the
v*.*.*format - Verify the
GITHUB_TOKENhas sufficient permissions
- Check that your tag follows semantic versioning
- The version is extracted from the tag name (removes
vprefix)
# 1. Make your changes and commit
git add .
git commit -m "Add new feature X"
git push origin main
# 2. Create and push version tag
git tag v2.5.9
git push origin v2.5.9
# 3. Workflow automatically:
# - Builds the installer
# - Creates draft release
# - Uploads FFmpegInstaller.exe
# - Generates checksums
# 4. Review and publish the draft release on GitHub- The installer always downloads the latest FFmpeg version from gyan.dev, regardless of when it was built
- Workflows run on GitHub-hosted Windows runners (free for public repositories)
- Build artifacts are stored for 7-30 days depending on the workflow
- Draft releases allow you to test before publishing to users