Files
finish/SUMMARY.md
michael1986 d17fcf3049
Some checks failed
Docker Build and Push / build-and-push (push) Has been cancelled
Tests / test (bash) (push) Has been cancelled
Tests / test (zsh) (push) Has been cancelled
Tests / lint (push) Has been cancelled
Tests / docker (push) Has been cancelled
typo fix
2025-12-02 09:16:22 +01:00

5.4 KiB

Publication Setup Summary

This document summarizes the publication setup completed for inish .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

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:

sudo dpkg -i finish_*.deb
sudo apt-get install -f

Or from an APT repository (when configured):

sudo apt-get install finish

3. Homebrew (macOS)

brew tap closedloop-technologies/finish
brew install finish

4. Docker

docker pull ghcr.io/closedloop-technologies/finish:latest
docker run -it ghcr.io/closedloop-technologies/finish:latest

5. From Source

git clone https://git.appmodel.nl/Tour/finish.git
cd finish
./inish .sh install

Next Steps

Immediate Actions

  1. Test the installation script on clean systems
  2. Build and test the Debian package:
    dpkg-buildpackage -us -uc -b
    sudo dpkg -i ../finish_*.deb
    
  3. Test Docker builds:
    docker build -t finish:test .
    docker run -it finish:test
    

For First Release

  1. Update version numbers in:

    • inish .sh (line 34)
    • debian/changelog
    • homebrew/finish.rb
    • docs/install.sh
    • Dockerfile
  2. Create release tarball:

    git archive --format=tar.gz --prefix=finish-0.5.0/ v0.5.0 > finish-0.5.0.tar.gz
    
  3. Calculate SHA256 for Homebrew:

    sha256sum finish-0.5.0.tar.gz
    
  4. Create and push tag:

    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):

  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:

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

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!