This guide explains how to publish the GoSQLX GitHub Action to the GitHub Marketplace.
Before publishing, ensure:
- ✅ Action is fully tested (see ACTION_TESTING_GUIDE.md)
- ✅
action.ymlis complete and validated - ✅ README documentation is comprehensive
- ✅ Examples work correctly
- ✅ Repository has proper LICENSE file
- ✅ All security considerations are addressed
# Ensure you're on main branch
git checkout main
git pull origin main
# Verify action.yml is valid
cat action.yml
# Test locally first
# (See ACTION_TESTING_GUIDE.md)GitHub Actions are published via releases. Create a release with a version tag:
# Create and push version tag
git tag -a v1.0.0 -m "v1.0.0: Initial GoSQLX GitHub Action release"
git push origin v1.0.0
# Also create/update major version tag for convenience
git tag -fa v1 -m "v1: Latest v1.x.x release"
git push -f origin v1Version Tags Best Practices:
- Use semantic versioning (v1.0.0, v1.1.0, v2.0.0)
- Maintain major version tags (v1, v2) for latest patch
- Users can reference
@v1for latest v1.x.x or@v1.0.0for specific version
- Go to your repository on GitHub
- Click "Releases" in the right sidebar
- Click "Draft a new release"
- Fill in the release information:
Release Form:
Tag version: v1.0.0
Release title: v1.0.0: GoSQLX GitHub Action - Ultra-Fast SQL Validation
Description:
## GoSQLX GitHub Action v1.0.0
### Features
- **Ultra-Fast Validation**: 100-1000x faster than SQLFluff
- **Multi-Dialect Support**: PostgreSQL, MySQL, SQL Server, Oracle, SQLite
- **Format Checking**: Ensure consistent SQL formatting
- **Comprehensive Analysis**: Security and performance checks
- **Zero Configuration**: Works out of the box
### Performance
- **Throughput**: 1.38M+ operations/second
- **Validation Speed**: <10ms for typical queries
- **Batch Processing**: 100+ files/second
### Documentation
See [ACTION_QUICK_REFERENCE.md](ACTION_QUICK_REFERENCE.md) for complete documentation and examples.
### Quick Start
```yaml
- uses: ajitpratap0/GoSQLX@v1
with:
files: '**/*.sql'
validate: true
None at this time.
Built with GitHub Actions and Go.
5. Check "Publish this Action to the GitHub Marketplace"
6. Select appropriate categories:
- **Primary**: Continuous integration
- **Secondary**: Code quality
7. Click "Publish release"
#### Via GitHub CLI:
```bash
gh release create v1.0.0 \
--title "v1.0.0: GoSQLX GitHub Action - Ultra-Fast SQL Validation" \
--notes-file RELEASE_NOTES.md \
--verify-tag
After creating the release, configure your Marketplace listing:
- Action Icon & Color (in
action.yml):
branding:
icon: 'check-circle' # Available icons: https://feathericons.com/
color: 'blue' # Available colors: white, yellow, blue, green, orange, red, purple, gray-dark-
Categories (during release):
- Primary category: Continuous integration
- Secondary category: Code quality
-
Marketplace README:
- The
ACTION_QUICK_REFERENCE.mdcontent should be the main documentation - Consider copying it to root README or having a marketplace-specific version
- The
Semantic Versioning:
- Major (v2.0.0): Breaking changes
- Minor (v1.1.0): New features, backwards compatible
- Patch (v1.0.1): Bug fixes, backwards compatible
Tag Strategy:
# For new patch release v1.0.1
git tag v1.0.1
git push origin v1.0.1
# Update v1 to point to latest v1.x.x
git tag -fa v1 -m "Update v1 to v1.0.1"
git push -f origin v1
# For new minor release v1.1.0
git tag v1.1.0
git push origin v1.1.0
# Update v1 to point to latest
git tag -fa v1 -m "Update v1 to v1.1.0"
git push -f origin v1This allows users to use:
@v1.0.0- specific version (never changes)@v1- latest v1.x.x (receives updates)@main- bleeding edge (not recommended for production)
-
About section:
- Description: "Ultra-fast SQL validation, linting, and formatting - 100x faster than SQLFluff"
- Website: Link to documentation
- Topics:
sql,validation,github-actions,linting,formatting,parser,golang
-
Repository settings:
- Enable "Require contributors to sign off on web-based commits"
- Protect main branch
- Enable security alerts
- Action appears in GitHub Marketplace
- Can be searched for in Marketplace
- README displays correctly
- Icon and branding appear correctly
- Can be referenced as
@v1and@v1.0.0
- Add Marketplace badge to main README
- Update documentation with usage examples
- Link to Marketplace listing in docs
[](https://github.com/marketplace/actions/gosqlx-sql-validator)- Test installation from Marketplace
- Verify all examples work with published version
- Test on fresh repository
# Test in a separate repo
name: Test Published Action
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ajitpratap0/GoSQLX@v1
with:
files: '**/*.sql'- Announce release on project README
- Update CHANGELOG.md
- Consider blog post or announcement
- Tweet/social media (optional)
Good README structure:
- Clear description in first paragraph
- Feature list with emojis for visual appeal
- Quick start example
- Performance metrics
- Comprehensive documentation
- Troubleshooting section
- Links to resources
Keywords to include:
- SQL validation
- SQL linting
- SQL formatting
- GitHub Actions
- CI/CD
- PostgreSQL, MySQL, etc.
- Fast/Performance
- Security
Add relevant badges to increase trust:
[](https://github.com/marketplace/actions/gosqlx-sql-validator)
[](https://github.com/ajitpratap0/GoSQLX/releases)
[](https://github.com/ajitpratap0/GoSQLX)
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://goreportcard.com/report/github.com/ajitpratap0/GoSQLX)# Create v2.0.0
git tag v2.0.0 -m "v2.0.0: Major update with breaking changes"
git push origin v2.0.0
# Create v2 tracking tag
git tag v2 -m "v2: Latest v2.x.x"
git push origin v2
# Keep v1 for existing users
# Do NOT force-update v1 tag# Create v1.1.0
git tag v1.1.0 -m "v1.1.0: Add new features"
git push origin v1.1.0
# Update v1 tracking tag
git tag -fa v1 -m "Update v1 to v1.1.0"
git push -f origin v1# Create v1.0.1
git tag v1.0.1 -m "v1.0.1: Bug fixes"
git push origin v1.0.1
# Update v1 tracking tag
git tag -fa v1 -m "Update v1 to v1.0.1"
git push -f origin v1Monitor your action's performance:
-
Insights tab on GitHub:
- Traffic (views, clones)
- Popular content
- Referring sites
-
Marketplace statistics:
- Installation count
- Workflow runs
- User feedback
-
GitHub API for programmatic access:
# Get action statistics
gh api repos/ajitpratap0/GoSQLX/actionsSet up issue templates for action-specific issues:
# .github/ISSUE_TEMPLATE/action-bug.yml
name: Action Bug Report
description: Report a bug with the GitHub Action
labels: ["github-action", "bug"]
body:
- type: textarea
attributes:
label: Action Configuration
description: Your action.yml configuration
render: yaml
- type: textarea
attributes:
label: Expected Behavior
- type: textarea
attributes:
label: Actual Behavior
- type: textarea
attributes:
label: Logs
description: Relevant GitHub Actions logs- Monitor issues tagged with
github-action - Provide timely responses
- Ask for workflow examples and logs
- Create reproductions when possible
If deprecating features:
- Announce in release notes
- Add deprecation warnings in action output
- Provide migration guide
- Maintain old versions for 6-12 months
- Clearly document end-of-life dates
- ✅ No secrets in action code
- ✅ Use pinned versions for dependencies
- ✅ Regular security updates
- ✅ SARIF upload for code scanning (if applicable)
Document required permissions:
permissions:
contents: read # For checkout
pull-requests: write # For PR comments (optional)Create .github/SECURITY.md:
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 1.x | :white_check_mark: |
| < 1.0 | :x: |
## Reporting Vulnerabilities
Please report security vulnerabilities to security@example.com- actionlint - Linter for GitHub Actions
- act - Run actions locally
- GitHub CLI - Manage releases
- Verify
action.ymlis in repository root - Check release is marked "Publish to Marketplace"
- Ensure repository is public
- Wait 5-10 minutes for indexing
- Verify icon name from Feather Icons
- Check color is one of the allowed values
- Clear browser cache
# Verify tags exist
git tag -l
# Push all tags
git push origin --tags
# Force update tag
git tag -fa v1 -m "Update v1"
git push -f origin v1- Action code is complete and tested
- Documentation is comprehensive
- Examples are working
- Version tag v1.0.0 created
- Version tag v1 created
- Release created on GitHub
- Marketplace checkbox enabled
- Categories selected
- Branding configured
- README is polished
- License file exists
- Security policy created
- Post-release testing completed
- Announcement prepared
Ready to publish!