This guide explains how to release new versions of the SSH Remote Script Executor action and publish them to GitHub Marketplace.
Use the provided release script for easy version management:
./scripts/release.sh 1.0.0This will:
- ✅ Validate version format and repository state
- ✅ Create and push the version tag
- ✅ Trigger the automated release workflow
- ✅ Update major version tags (v1, v2, etc.)
Ensure your repository is ready:
# Check that all files are present
ls -la action.yml Dockerfile entrypoint.sh README.md
# Ensure working directory is clean
git status
# Make sure you're on main branch
git checkout main
git pull origin main# Create and push a semantic version tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0The workflow (.github/workflows/release.yml) will automatically:
- Validate - Check that all required files exist
- Test - Build Docker image to ensure it works
- Release - Create GitHub release with generated notes
- Tag Management - Update major version tags (v1, v2, etc.)
The release workflow now includes automation to streamline marketplace publication:
- ✅ Validates marketplace requirements - Checks repository visibility, branding, documentation
- 📋 Prepares marketplace metadata - Generates suggested tags, categories, and descriptions
- 📝 Creates tracking issue - Automatically creates an issue with publication checklist
- 🔍 Monitors publication status - Checks every 6 hours if action is published
- 🎯 Auto-closes issues - Closes tracking issues when publication is detected
- Navigate to your repository on GitHub
- Look for the marketplace banner or go to Releases tab
- Click "Publish this Action to the GitHub Marketplace"
- Fill in the marketplace form with the suggested details:
- Action name:
SSH Remote Script Executor - Description:
Execute scripts on remote hosts via SSH with password authentication - Categories:
Deployment,Utilities - Tags:
ssh,remote,deployment,scripts,automation
- Action name:
- Submit for publication
# Check if action is published to marketplace
./scripts/check-marketplace.sh
# Manually trigger marketplace status check
gh workflow run marketplace-check.ymlFollow Semantic Versioning (MAJOR.MINOR.PATCH):
- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backwards compatible manner
- PATCH version when you make backwards compatible bug fixes
v1.0.0- Initial releasev1.0.1- Bug fixv1.1.0- New feature (backwards compatible)v2.0.0- Breaking change
The release workflow automatically maintains major version tags:
v1.0.0→ creates/updatesv1tagv1.0.1→ updatesv1tagv2.0.0→ creates/updatesv2tag
This allows users to reference stable major versions:
uses: your-username/ssh-action@v1 # Always latest v1.x.x
uses: your-username/ssh-action@v1.0.0 # Specific versionBefore creating a release:
- All tests pass
- README is updated with new features
- Breaking changes are documented
- Version follows semantic versioning
- Changelog is updated (if you maintain one)
- All required files are present
- Docker image builds successfully
The workflow generates release notes automatically, but you can customize them:
## SSH Remote Script Executor v1.0.0
### What's New
- New feature descriptions
- Improvements and enhancements
- Bug fixes
### Breaking Changes
- List any breaking changes
### Usage
```yaml
- uses: your-username/ssh-action@v1.0.0
with:
host: ${{ secrets.SERVER_HOST }}
# ... other parameters- Instructions for upgrading from previous versions
## Troubleshooting
### Release Workflow Fails
1. **Check workflow logs** in the Actions tab
2. **Common issues**:
- Missing required files
- Docker build failures
- Permission issues with `GITHUB_TOKEN`
### Marketplace Publication Issues
1. **Repository must be public** for marketplace publication
2. **action.yml must have proper branding** (✅ already configured)
3. **Check GitHub's marketplace requirements**
### Tag Already Exists
```bash
# Delete local tag
git tag -d v1.0.0
# Delete remote tag
git push origin --delete v1.0.0
# Create new tag
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
To publish to GitHub Marketplace, ensure:
- ✅ Repository is public
- ✅ Valid
action.ymlin repository root - ✅ Proper branding in
action.yml - ✅ Comprehensive README with usage examples
- ✅ Valid semantic version tags
- ✅ Action actually works (tested)
For issues with the release process:
- Check the workflow logs in the Actions tab
- Review this guide
- Create an issue in the repository
Happy releasing! 🚀