Repository navigation
TRIGGER_RELEASE
# 1. Update version using the bump script
./scripts/bump-version.sh patch # or minor, major
# 2. Update CHANGELOG.md with your changes
# Add your changes under the new version section
# 3. Commit and trigger release
git add library.properties library.json CHANGELOG.md package.json
git commit -m "release: v1.6.1"
git push origin mainThat's it! GitHub Actions will automatically:
- β Run comprehensive test suite
- β Create git tag
- β Generate GitHub release with changelog
- β Publish to NPM (public registry)
- β Publish to GitHub Packages
- β Update GitHub Wiki
- β Package library for Arduino Library Manager
- β Validate all distribution channels
- All tests passing locally (
npm run test) - Version consistency verified (
./scripts/validate-release.sh) - Changelog updated with new version
- Examples compile successfully
- Documentation updated if needed
- Version bumped in all files
- Commit message starts with "release:"
- Pushed to main branch
- GitHub Actions workflows completed successfully
- GitHub release created
- NPM package published
- GitHub Packages updated
- Wiki synchronized
- Library available in distribution channels
- GitHub Releases - Created automatically with changelog
- NPM Public Registry - Published to https://www.npmjs.com/package/@alteriom/painlessmesh
- GitHub Packages - Published to GitHub's NPM registry
- PlatformIO Registry - Automatically indexed from GitHub releases
- GitHub Wiki - Documentation synchronized automatically
- Arduino Library Manager - Requires one-time submission to Arduino team
# Patch version (1.6.0 β 1.6.1) - Bug fixes
./scripts/bump-version.sh patch
# Minor version (1.6.0 β 1.7.0) - New features
./scripts/bump-version.sh minor
# Major version (1.6.0 β 2.0.0) - Breaking changes
./scripts/bump-version.sh major
# Specific version
./scripts/bump-version.sh patch 1.6.2The script automatically updates:
-
library.properties(Arduino) -
library.json(PlatformIO) -
package.json(NPM)
The release workflow publishes to two NPM registries:
-
Public NPM (npmjs.com)
- Package:
@alteriom/painlessmesh - Anyone can install:
npm install @alteriom/painlessmesh - No authentication required for installation
- Package:
-
GitHub Packages (npm.pkg.github.com)
- Package:
@alteriom/painlessmesh - Scoped to Alteriom organization
- Requires authentication for installation
- Package:
# Public NPM (recommended for users)
npm install @alteriom/painlessmesh
# GitHub Packages (for Alteriom team/authenticated users)
echo '@alteriom:registry=https://npm.pkg.github.com' >> .npmrc
npm install @alteriom/painlessmeshThe wiki is automatically updated with each release:
- Home Page - Generated from README.md
- Release Guide - From RELEASE_GUIDE.md
- Changelog - From CHANGELOG.md
- Examples - Auto-generated from examples directory
- API Reference - Generated documentation pages
- CI/CD Pipeline - Automated documentation
If needed, you can manually update the wiki:
# Clone wiki repository
git clone https://github.com/Alteriom/painlessMesh.wiki.git
# Edit markdown files
# Commit and push changesAfter your first release, submit to Arduino Library Manager:
- Go to: https://github.com/arduino/library-registry
- Create a new issue with the following template:
Title: Add painlessMesh library
Body:
Repository URL: https://github.com/Alteriom/painlessMesh
Release tag: v1.6.0
Library name: painlessMesh
Version: 1.6.0
This is the Alteriom fork of the painlessMesh library with enhanced
CI/CD, automated releases, and improved Arduino Library Manager compatibility.
Includes SensorPackage, CommandPackage, and StatusPackage extensions.
- Monitor the issue for Arduino team approval
- Once approved, all future releases are automatically indexed
# Comprehensive validation
./scripts/validate-release.sh
# Check version consistency
./scripts/bump-version.sh --verify
# Test library compilation
npm run build
npm run test# Check GitHub Actions status
# Visit: https://github.com/Alteriom/painlessMesh/actions
# Verify NPM publication
npm view @alteriom/painlessmesh version
# Check GitHub Packages
# Visit: https://github.com/Alteriom/painlessMesh/packages
# Verify wiki update
# Visit: https://github.com/Alteriom/painlessMesh/wikiVersion Mismatch Error
# Fix version inconsistencies
./scripts/bump-version.sh patch 1.6.1 # Force set versionNPM Publication Failure
# Check NPM token is valid
npm whoami
# Verify package.json configuration
npm run validate-libraryGitHub Packages Authentication
# Verify GitHub token has packages:write permission
# Check repository settings β Actions β General β PermissionsWiki Update Failure
# Wiki may need to be manually initialized
# Go to: https://github.com/Alteriom/painlessMesh/wiki
# Create any page to initialize wiki, then re-run releaseIf automation fails, you can manually perform any step:
# Manual NPM publish
npm publish --access public
# Manual GitHub release
gh release create v1.6.1 --title "painlessMesh v1.6.1" --notes-file CHANGELOG.md
# Manual tag creation
git tag v1.6.1
git push origin v1.6.1- β GitHub release created with changelog
- β Git tag pushed to repository
- β NPM package published (check npmjs.com)
- β GitHub Packages updated
- β Wiki pages synchronized
- β All GitHub Actions workflows completed
# NPM
npm view @alteriom/painlessmesh
# GitHub Packages
npm view @alteriom/painlessmesh --registry=https://npm.pkg.github.com
# PlatformIO (updated within 24 hours)
# Check: https://registry.platformio.org/libraries/alteriom/painlessMeshOnce your release is complete, the library will be available through:
- GitHub Releases
- NPM (public + GitHub Packages)
- PlatformIO Registry (automatic)
- Arduino Library Manager (after initial submission)
- GitHub Wiki (documentation)
All future releases follow the same simple process - just bump version, update changelog, commit with "release:" prefix, and push!
Questions? Create an issue with the ci/cd label for release process support.