202 lines
5.4 KiB
Markdown
202 lines
5.4 KiB
Markdown
# Publication Setup Summary
|
|
|
|
This document summarizes the publication setup completed for finishte.sh.
|
|
|
|
## Files Created
|
|
|
|
### 1. Installation Script
|
|
- **`docs/install.sh`** - Enhanced one-line installer with:
|
|
- Dependency checking
|
|
- Shell detection (bash/zsh)
|
|
- Color-coded output
|
|
- Error handling
|
|
- PATH management
|
|
- Usage: `curl -sSL <URL>/install.sh | bash`
|
|
|
|
### 2. Debian Package Structure
|
|
Complete Debian packaging in `debian/` directory:
|
|
- **`control`** - Package metadata and dependencies
|
|
- **`rules`** - Build instructions
|
|
- **`changelog`** - Version history
|
|
- **`copyright`** - License information
|
|
- **`compat`** - Debhelper compatibility level
|
|
- **`postinst`** - Post-installation script
|
|
- **`source/format`** - Package format specification
|
|
|
|
Build command: `dpkg-buildpackage -us -uc -b`
|
|
|
|
### 3. Homebrew Formula
|
|
- **`homebrew/finish.rb`** - Homebrew formula for macOS
|
|
- Includes dependencies, installation steps, and caveats
|
|
- Update SHA256 after creating releases
|
|
|
|
### 4. Docker Configuration
|
|
- **`Dockerfile`** - Production container image
|
|
- **`Dockerfile.test`** - Testing container with BATS
|
|
- **`docker-compose.yml`** - Multi-service Docker setup
|
|
- **`.dockerignore`** - Excludes unnecessary files from builds
|
|
|
|
### 5. GitHub Actions Workflows
|
|
CI/CD automation in `.github/workflows/`:
|
|
- **`test.yml`** - Runs tests on every push/PR
|
|
- **`release.yml`** - Creates releases and builds packages
|
|
- **`docker.yml`** - Builds and publishes Docker images
|
|
|
|
### 6. Documentation
|
|
- **`PUBLISHING.md`** - Comprehensive publishing guide
|
|
- **`README.md`** - Updated with installation methods
|
|
- **`.gitignore`** - Updated to exclude build artifacts
|
|
|
|
## Distribution Channels
|
|
|
|
### 1. Quick Install (Recommended)
|
|
```bash
|
|
curl -sSL https://git.appmodel.nl/Tour/finish/raw/branch/main/docs/install.sh | bash
|
|
```
|
|
|
|
### 2. Debian/Ubuntu Package
|
|
Users can install the `.deb` file:
|
|
```bash
|
|
sudo dpkg -i finish_*.deb
|
|
sudo apt-get install -f
|
|
```
|
|
|
|
Or from an APT repository (when configured):
|
|
```bash
|
|
sudo apt-get install finish
|
|
```
|
|
|
|
### 3. Homebrew (macOS)
|
|
```bash
|
|
brew tap closedloop-technologies/finish
|
|
brew install finish
|
|
```
|
|
|
|
### 4. Docker
|
|
```bash
|
|
docker pull ghcr.io/closedloop-technologies/finish:latest
|
|
docker run -it ghcr.io/closedloop-technologies/finish:latest
|
|
```
|
|
|
|
### 5. From Source
|
|
```bash
|
|
git clone https://git.appmodel.nl/Tour/finish.git
|
|
cd finish
|
|
./finishte.sh install
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
### Immediate Actions
|
|
1. **Test the installation script** on clean systems
|
|
2. **Build and test the Debian package**:
|
|
```bash
|
|
dpkg-buildpackage -us -uc -b
|
|
sudo dpkg -i ../finish_*.deb
|
|
```
|
|
3. **Test Docker builds**:
|
|
```bash
|
|
docker build -t finish:test .
|
|
docker run -it finish:test
|
|
```
|
|
|
|
### For First Release
|
|
1. **Update version numbers** in:
|
|
- `finishte.sh` (line 34)
|
|
- `debian/changelog`
|
|
- `homebrew/finish.rb`
|
|
- `docs/install.sh`
|
|
- `Dockerfile`
|
|
|
|
2. **Create release tarball**:
|
|
```bash
|
|
git archive --format=tar.gz --prefix=finish-0.5.0/ v0.5.0 > finish-0.5.0.tar.gz
|
|
```
|
|
|
|
3. **Calculate SHA256** for Homebrew:
|
|
```bash
|
|
sha256sum finish-0.5.0.tar.gz
|
|
```
|
|
|
|
4. **Create and push tag**:
|
|
```bash
|
|
git tag -a v0.5.0 -m "Release v0.5.0"
|
|
git push origin v0.5.0
|
|
```
|
|
This triggers GitHub Actions to build everything automatically.
|
|
|
|
### Setting Up Package Repositories
|
|
|
|
#### APT Repository Options:
|
|
1. **Packagecloud** (easiest):
|
|
- Sign up at https://packagecloud.io
|
|
- Upload .deb file
|
|
- Users get one-line install
|
|
|
|
2. **GitHub Pages** (free):
|
|
- Use `reprepro` to create repository
|
|
- Host on GitHub Pages
|
|
- Users add your repository to sources
|
|
|
|
See `PUBLISHING.md` for detailed instructions.
|
|
|
|
#### Homebrew Tap:
|
|
1. Create GitHub repo: `homebrew-finish`
|
|
2. Add formula to `Formula/finish.rb`
|
|
3. Users install with: `brew tap yourname/finish && brew install finish`
|
|
|
|
## Testing Checklist
|
|
|
|
Before releasing:
|
|
- [ ] Test install script on Ubuntu 22.04
|
|
- [ ] Test install script on Debian 12
|
|
- [ ] Test install script on macOS
|
|
- [ ] Build Debian package successfully
|
|
- [ ] Install and test Debian package
|
|
- [ ] Build Docker image successfully
|
|
- [ ] Run BATS tests in Docker
|
|
- [ ] Test Homebrew formula (if applicable)
|
|
- [ ] Verify all version numbers match
|
|
- [ ] Test GitHub Actions workflows
|
|
|
|
## Automation
|
|
|
|
The GitHub Actions workflows handle:
|
|
- **On every push/PR**: Run tests, lint code, build Docker images
|
|
- **On version tag push**: Build packages, create release, publish Docker images
|
|
|
|
This means once set up, releasing a new version is as simple as:
|
|
```bash
|
|
git tag -a v0.5.1 -m "Release v0.5.1"
|
|
git push origin v0.5.1
|
|
```
|
|
|
|
Everything else happens automatically!
|
|
|
|
## Support Channels
|
|
|
|
Consider setting up:
|
|
- GitHub Issues for bug reports
|
|
- GitHub Discussions for Q&A
|
|
- Documentation website (GitHub Pages)
|
|
- Discord/Slack community (optional)
|
|
|
|
## Resources
|
|
|
|
- Debian Packaging Guide: https://www.debian.org/doc/manuals/maint-guide/
|
|
- Homebrew Formula Cookbook: https://docs.brew.sh/Formula-Cookbook
|
|
- GitHub Actions Documentation: https://docs.github.com/en/actions
|
|
- Docker Best Practices: https://docs.docker.com/develop/dev-best-practices/
|
|
|
|
## Conclusion
|
|
|
|
Your project is now fully set up for publication with:
|
|
- ✅ One-line installation script
|
|
- ✅ Debian/Ubuntu package support
|
|
- ✅ Homebrew formula for macOS
|
|
- ✅ Docker containers
|
|
- ✅ Automated CI/CD with GitHub Actions
|
|
- ✅ Comprehensive documentation
|
|
|
|
All distribution channels are ready. Follow the "Next Steps" section above to test and publish your first release!
|