mirror of
https://github.com/yarlson/lnk.git
synced 2025-09-02 18:12:33 +02:00
feat: integrate Homebrew tap and enhance release process
This commit is contained in:
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -32,4 +32,6 @@ jobs:
|
|||||||
version: latest
|
version: latest
|
||||||
args: release --clean
|
args: release --clean
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# If you have a personal access token for cross-repo access, use it instead:
|
||||||
|
# GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
@@ -98,22 +98,35 @@ release:
|
|||||||
wget https://github.com/yarlson/lnk/releases/download/{{.Tag}}/lnk_{{.Os}}_{{.Arch}}.tar.gz
|
wget https://github.com/yarlson/lnk/releases/download/{{.Tag}}/lnk_{{.Os}}_{{.Arch}}.tar.gz
|
||||||
tar -xzf lnk_{{.Os}}_{{.Arch}}.tar.gz
|
tar -xzf lnk_{{.Os}}_{{.Arch}}.tar.gz
|
||||||
sudo mv lnk /usr/local/bin/
|
sudo mv lnk /usr/local/bin/
|
||||||
|
|
||||||
|
# Homebrew
|
||||||
|
brew tap yarlson/lnk
|
||||||
|
brew install lnk
|
||||||
```
|
```
|
||||||
|
|
||||||
footer: |
|
footer: |
|
||||||
---
|
---
|
||||||
**Full Changelog**: https://github.com/yarlson/lnk/compare/{{.PreviousTag}}...{{.Tag}}
|
**Full Changelog**: https://github.com/yarlson/lnk/compare/{{.PreviousTag}}...{{.Tag}}
|
||||||
|
|
||||||
# Homebrew tap (optional - you can enable this later)
|
# Homebrew tap
|
||||||
# brews:
|
brews:
|
||||||
# - repository:
|
- repository:
|
||||||
# owner: yarlson
|
owner: yarlson
|
||||||
# name: homebrew-tap
|
name: homebrew-lnk
|
||||||
# homepage: "https://github.com/yarlson/lnk"
|
branch: main
|
||||||
# description: "Git-native dotfiles management"
|
token: "{{ .Env.GITHUB_TOKEN }}"
|
||||||
# license: "MIT"
|
homepage: "https://github.com/yarlson/lnk"
|
||||||
# test: |
|
description: "Git-native dotfiles management that doesn't suck"
|
||||||
# system "#{bin}/lnk --version"
|
license: "MIT"
|
||||||
|
skip_upload: auto
|
||||||
|
commit_author:
|
||||||
|
name: goreleaserbot
|
||||||
|
email: bot@goreleaser.com
|
||||||
|
commit_msg_template: "Brew formula update for {{ .ProjectName }} version {{ .Tag }}"
|
||||||
|
test: |
|
||||||
|
system "#{bin}/lnk --version"
|
||||||
|
install: |
|
||||||
|
bin.install "lnk"
|
||||||
|
|
||||||
# Docker images (optional)
|
# Docker images (optional)
|
||||||
# dockers:
|
# dockers:
|
||||||
|
@@ -13,10 +13,14 @@ lnk push "setup"
|
|||||||
## Install
|
## Install
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Quick
|
# Quick install (recommended)
|
||||||
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
|
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
|
||||||
|
|
||||||
# Manual
|
# Homebrew (macOS/Linux)
|
||||||
|
brew tap yarlson/lnk
|
||||||
|
brew install lnk
|
||||||
|
|
||||||
|
# Manual download
|
||||||
wget https://github.com/yarlson/lnk/releases/latest/download/lnk-$(uname -s | tr '[:upper:]' '[:lower:]')-amd64
|
wget https://github.com/yarlson/lnk/releases/latest/download/lnk-$(uname -s | tr '[:upper:]' '[:lower:]')-amd64
|
||||||
chmod +x lnk-* && sudo mv lnk-* /usr/local/bin/lnk
|
chmod +x lnk-* && sudo mv lnk-* /usr/local/bin/lnk
|
||||||
|
|
||||||
|
46
RELEASE.md
46
RELEASE.md
@@ -8,6 +8,7 @@ This document describes how to create releases for the lnk project using GoRelea
|
|||||||
- Git tags pushed to GitHub trigger releases automatically
|
- Git tags pushed to GitHub trigger releases automatically
|
||||||
- GoReleaser is configured in `.goreleaser.yml`
|
- GoReleaser is configured in `.goreleaser.yml`
|
||||||
- GitHub Actions will handle the release process
|
- GitHub Actions will handle the release process
|
||||||
|
- Access to the [homebrew-lnk](https://github.com/yarlson/homebrew-lnk) tap repository
|
||||||
|
|
||||||
## Creating a Release
|
## Creating a Release
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ git push origin v1.0.0
|
|||||||
- GitHub Actions will automatically build and release when the tag is pushed
|
- GitHub Actions will automatically build and release when the tag is pushed
|
||||||
- Check the [Actions tab](https://github.com/yarlson/lnk/actions) for build status
|
- Check the [Actions tab](https://github.com/yarlson/lnk/actions) for build status
|
||||||
- The release will appear in [GitHub Releases](https://github.com/yarlson/lnk/releases)
|
- The release will appear in [GitHub Releases](https://github.com/yarlson/lnk/releases)
|
||||||
|
- The Homebrew formula will be automatically updated in [homebrew-lnk](https://github.com/yarlson/homebrew-lnk)
|
||||||
|
|
||||||
## What GoReleaser Does
|
## What GoReleaser Does
|
||||||
|
|
||||||
@@ -59,6 +61,8 @@ git push origin v1.0.0
|
|||||||
- Installation instructions
|
- Installation instructions
|
||||||
- Download links for all platforms
|
- Download links for all platforms
|
||||||
|
|
||||||
|
5. **Updates Homebrew formula** automatically in the [homebrew-lnk](https://github.com/yarlson/homebrew-lnk) tap
|
||||||
|
|
||||||
## Manual Release (if needed)
|
## Manual Release (if needed)
|
||||||
|
|
||||||
If you need to create a release manually:
|
If you need to create a release manually:
|
||||||
@@ -84,6 +88,29 @@ ls -la dist/
|
|||||||
./dist/lnk_<platform>/lnk --version
|
./dist/lnk_<platform>/lnk --version
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Installation Methods
|
||||||
|
|
||||||
|
After a release is published, users can install lnk using multiple methods:
|
||||||
|
|
||||||
|
### 1. Shell Script (Recommended)
|
||||||
|
```bash
|
||||||
|
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Homebrew (macOS/Linux)
|
||||||
|
```bash
|
||||||
|
brew tap yarlson/lnk
|
||||||
|
brew install lnk
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Manual Download
|
||||||
|
```bash
|
||||||
|
# Download from GitHub releases
|
||||||
|
wget https://github.com/yarlson/lnk/releases/latest/download/lnk_Linux_x86_64.tar.gz
|
||||||
|
tar -xzf lnk_Linux_x86_64.tar.gz
|
||||||
|
sudo mv lnk /usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
## Version Numbering
|
## Version Numbering
|
||||||
|
|
||||||
We use [Semantic Versioning](https://semver.org/):
|
We use [Semantic Versioning](https://semver.org/):
|
||||||
@@ -102,13 +129,13 @@ GoReleaser automatically generates changelogs from git commits using conventiona
|
|||||||
- `test:` - Test changes (excluded from changelog)
|
- `test:` - Test changes (excluded from changelog)
|
||||||
- `ci:` - CI changes (excluded from changelog)
|
- `ci:` - CI changes (excluded from changelog)
|
||||||
|
|
||||||
## Installation Script
|
## Homebrew Tap
|
||||||
|
|
||||||
The `install.sh` script automatically downloads the latest release:
|
The Homebrew formula is automatically maintained in the [homebrew-lnk](https://github.com/yarlson/homebrew-lnk) repository. When a new release is created:
|
||||||
|
|
||||||
```bash
|
1. GoReleaser automatically creates/updates the formula
|
||||||
curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
|
2. The formula is committed to the tap repository
|
||||||
```
|
3. Users can immediately install the new version via `brew install yarlson/lnk/lnk`
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
@@ -128,4 +155,11 @@ curl -sSL https://raw.githubusercontent.com/yarlson/lnk/main/install.sh | bash
|
|||||||
|
|
||||||
1. Ensure commits follow conventional commit format
|
1. Ensure commits follow conventional commit format
|
||||||
2. Check that there are commits since the last tag
|
2. Check that there are commits since the last tag
|
||||||
3. Verify changelog configuration in `.goreleaser.yml`
|
3. Verify changelog configuration in `.goreleaser.yml`
|
||||||
|
|
||||||
|
### Homebrew formula not updated
|
||||||
|
|
||||||
|
1. Check that the GITHUB_TOKEN has access to the homebrew-lnk repository
|
||||||
|
2. Verify the repository name and owner in `.goreleaser.yml`
|
||||||
|
3. Check the release workflow logs for Homebrew-related errors
|
||||||
|
4. Ensure the homebrew-lnk repository exists and is accessible
|
Reference in New Issue
Block a user