This repository includes a GitHub Action that automatically updates version information across all download files when a new GeoDa version is released.
The GitHub Action is triggered when a new tag is pushed to the repository with the format vX.Y.Z.W (e.g., v1.22.0.20).
When a new version tag is pushed, the action automatically updates the following files:
downloadContent.json- Updates version description and adds new release entrydownloadLinux.json- Updates current version and moves previous to historydownloadMac.json- Updates current version and moves previous to historydownloadWindows.json- Updates current version and moves previous to historydownloadNightly.json- Adds new release entry
- Same updates applied to all language variants
- Updates description text: "GeoDa X.Y.Z.W with new features"
- Prepends new release entry:
{"date": "M/D/YYYY", "version": "X.Y.Z.W"}
- Copies current version content to beginning of
previousVersionsarray - Updates
currentVersion.versionto new version - Updates all download links to use new version number
- Updates all date references to current date
- Prepends new release entry with date, version, and release notes link
-
Create a new release tag in the GeoDa repository:
git tag v1.22.0.20 git push origin v1.22.0.20
-
The action will automatically run and:
- Extract version number from tag (1.22.0.20)
- Generate current date
- Update all relevant JSON files
- Create a pull request with all changes
-
Review and merge the PR that gets created automatically
For version 1.22.0.20 released on 7/31/2025:
Before:
{
"donation": {
"description": "GeoDa is continuously updated. The most current version is GeoDa 1.22.0.18 with new features."
},
"releaseList": {
"releases": [
{ "date": "7/25/2025", "version": "1.22.0.18" }
]
}
}After:
{
"donation": {
"description": "GeoDa is continuously updated. The most current version is GeoDa 1.22.0.20 with new features."
},
"releaseList": {
"releases": [
{ "date": "7/31/2025", "version": "1.22.0.20" },
{ "date": "7/25/2025", "version": "1.22.0.18" }
]
}
}- The action requires
jqfor JSON manipulation (included in Ubuntu runner) - The action requires write permissions to create pull requests
- Tags must follow the format
vX.Y.Z.Wwhere X, Y, Z, W are numbers
If the action fails:
- Check that the tag format is correct (
v1.22.0.20, not1.22.0.20) - Ensure the repository has the required permissions
- Check the action logs for specific error messages
You can test and run the version update process locally using the provided scripts:
# Show help
./update-version.sh --help
# Dry run (simulate changes without making them)
./update-version.sh --dry-run 1.22.0.20 7/31/2025
# Run actual update
./update-version.sh 1.22.0.20 7/31/2025
# Run with custom date
./update-version.sh 1.22.0.20 7/31/2025# Run simulation
node scripts/test-version-update.js 1.22.0.20 7/31/2025
# Run actual update
node scripts/update-version.js 1.22.0.20 7/31/2025
# Validate files (after updates)
node scripts/validate-json.js 1.22.0.20- Automatic backups: Creates timestamped backups before making changes
- Validation: Checks version format and validates JSON after updates
- Error handling: Provides clear error messages and rollback instructions
- Dry run mode: Test changes without modifying files
- Multi-language support: Updates all language variants automatically
If you need to manually trigger the action or fix issues:
- Go to the Actions tab in GitHub
- Select "Update Version Information" workflow
- Click "Run workflow"
- Enter the version number manually