Skip to content

CREATE_MISSING_RELEASES

github-actions[bot] edited this page Nov 8, 2025 · 1 revision

Creating Missing GitHub Releases for v1.7.8 and v1.7.9

Problem

Versions 1.7.8 and 1.7.9 have:

  • ✅ CHANGELOG.md entries (complete release notes)
  • ✅ Release summary documentation (docs/releases/RELEASE_SUMMARY_v1.7.x.md)
  • ✅ Version numbers in library files (library.properties, library.json, package.json)
  • ❌ Missing GitHub Releases (no tags, no release pages)

This means:

  • Users cannot download these specific versions from GitHub
  • Release automation may not have run properly
  • NPM/GitHub Packages may not have been published

Solution: Create GitHub Releases Retroactively

Option 1: Automated Script (Recommended)

We've created a script to automate the process:

./scripts/create-missing-releases.sh

What it does:

  1. Extracts release notes from CHANGELOG.md
  2. Creates git tags (v1.7.8, v1.7.9)
  3. Pushes tags to GitHub
  4. Creates GitHub releases with proper release notes
  5. Provides links to verify releases

Requirements:

  • GitHub CLI (gh) installed: https://cli.github.com/
  • Authenticated with GitHub: gh auth login
  • Write access to the repository

Running the script:

# Navigate to repository root
cd /path/to/painlessMesh

# Run the script
./scripts/create-missing-releases.sh

# Follow the prompts
# - Confirm you want to proceed
# - If releases exist, choose whether to recreate them

Option 2: Manual Process

If you prefer to create releases manually or the script doesn't work:

Step 1: Extract Release Notes

# Extract v1.7.8 notes
awk '/^## \[1\.7\.8\]/ {flag=1; next} /^## \[/ {flag=0} flag' CHANGELOG.md > release_notes_1.7.8.txt

# Extract v1.7.9 notes  
awk '/^## \[1\.7\.9\]/ {flag=1; next} /^## \[/ {flag=0} flag' CHANGELOG.md > release_notes_1.7.9.txt

Step 2: Create Tags and Releases via GitHub CLI

For v1.7.8:

# Create and push tag
git tag -a v1.7.8 -m "painlessMesh v1.7.8"
git push origin v1.7.8

# Create GitHub release
gh release create v1.7.8 \
  --repo Alteriom/painlessMesh \
  --title "painlessMesh v1.7.8" \
  --notes-file release_notes_1.7.8.txt

For v1.7.9:

# Create and push tag
git tag -a v1.7.9 -m "painlessMesh v1.7.9"
git push origin v1.7.9

# Create GitHub release
gh release create v1.7.9 \
  --repo Alteriom/painlessMesh \
  --title "painlessMesh v1.7.9" \
  --notes-file release_notes_1.7.9.txt

Step 3: Create Releases via GitHub Web UI

If you don't have GitHub CLI:

  1. Go to: https://github.com/Alteriom/painlessMesh/releases/new
  2. For v1.7.8:
    • Tag: v1.7.8
    • Release title: painlessMesh v1.7.8
    • Description: Copy content from CHANGELOG.md section [1.7.8]
    • Click "Publish release"
  3. For v1.7.9:
    • Tag: v1.7.9
    • Release title: painlessMesh v1.7.9
    • Description: Copy content from CHANGELOG.md section [1.7.9]
    • Click "Publish release"

Verification

After creating the releases, verify:

1. Check GitHub Releases Page

# View releases via CLI
gh release list --repo Alteriom/painlessMesh

# Or visit in browser
# https://github.com/Alteriom/painlessMesh/releases

Expected output:

v1.7.9  painlessMesh v1.7.9  Latest  2025-11-08
v1.7.8  painlessMesh v1.7.8          2025-11-05

2. Check Tags

git fetch --tags
git tag -l | grep -E "v1.7.[89]"

Expected output:

v1.7.8
v1.7.9

3. Verify Release Notes

Visit each release page and confirm:

  • ✅ Release notes match CHANGELOG.md content
  • ✅ Date is correct (v1.7.8: Nov 5, 2025; v1.7.9: Nov 8, 2025)
  • ✅ Release is marked as "Latest" for v1.7.9

Publishing Packages

After creating the GitHub releases, you may want to publish packages to NPM and GitHub Packages.

Check if Already Published

# Check NPM
npm view @alteriom/painlessmesh versions

# Check if 1.7.8 and 1.7.9 are listed

Publish if Missing

If versions are not published:

# Option 1: Trigger manual publish workflow
gh workflow run manual-publish.yml --repo Alteriom/painlessMesh

# Option 2: Manual NPM publish (requires NPM token)
npm publish --access public

Why This Happened

The releases were likely missed because:

  1. Commits didn't trigger release workflow - The release workflow triggers on:

    • Commits to main branch
    • Changes to version files OR commit message starting with release:
    • If neither condition was met, no release was created
  2. Version was bumped without triggering release - The version files were updated but:

    • Commit message didn't start with release:
    • Or changes were pushed to a different branch first
  3. Workflow may have failed - Check GitHub Actions history for failed workflows

Preventing Future Issues

Ensure Releases Trigger Properly

The release workflow (.github/workflows/release.yml) triggers when:

  1. Automatic trigger (recommended):

    • Modify library.properties, library.json, or package.json
    • Commit changes to main branch
    • Workflow automatically detects version bump and creates release
  2. Manual trigger:

    • Commit message starts with release:
    • Example: git commit -m "release: v1.8.0 - New features"

Best Practices for Future Releases

  1. Use the bump-version script:

    ./scripts/bump-version.sh patch  # or minor, major
  2. Update CHANGELOG.md with release notes

  3. Use release agent to validate:

    ./scripts/release-agent.sh
  4. Commit with proper message:

    git add library.properties library.json package.json CHANGELOG.md
    git commit -m "release: v1.8.0 - Brief description"
    git push origin main
  5. Verify workflow runs:

  6. Check release was created:

    gh release list --repo Alteriom/painlessMesh

Monitoring Release Success

After pushing a release commit, verify:

  • ✅ GitHub Actions workflow runs successfully
  • ✅ Git tag is created and pushed
  • ✅ GitHub release is created with notes
  • ✅ NPM package is published
  • ✅ GitHub Packages is updated
  • ✅ Wiki is synchronized (if enabled)

View the workflow run:

gh run list --workflow=release.yml --repo Alteriom/painlessMesh

Troubleshooting

"Tag already exists" Error

If tags exist but releases don't:

# Delete existing tags (careful!)
git tag -d v1.7.8
git push origin :refs/tags/v1.7.8

# Then recreate using the script
./scripts/create-missing-releases.sh

"Permission denied" Error

You need write access to the repository:

  • Verify you're authenticated: gh auth status
  • Check your permissions on the repository
  • Contact repository owner for access

Script Fails

If the automated script fails:

  1. Check error messages
  2. Verify GitHub CLI is installed: gh --version
  3. Verify you're authenticated: gh auth login
  4. Try manual process (Option 2 above)

Release Notes Are Empty

If release notes extraction fails:

  1. Verify CHANGELOG.md format matches expected pattern
  2. Check that version sections exist: ## [1.7.8] and ## [1.7.9]
  3. Manually copy content from CHANGELOG.md

Additional Resources

Summary

To create missing releases:

# Quick method (automated)
./scripts/create-missing-releases.sh

# Verify
gh release list --repo Alteriom/painlessMesh

# Publish packages if needed
gh workflow run manual-publish.yml --repo Alteriom/painlessMesh

To prevent future issues:

# Always use this workflow for releases:
./scripts/bump-version.sh patch
# Update CHANGELOG.md
./scripts/release-agent.sh  # Validate
git add . && git commit -m "release: vX.Y.Z - Description"
git push origin main
# Watch GitHub Actions to confirm success

Questions? Open an issue with the ci/cd label.

Clone this wiki locally