main 6af0a61

RELEASING.md RawHistoryFolder

Release Process

This document describes how to create releases for ArchUp using goreleaser.

Prerequisites

Install goreleaser:

# On Arch Linux
sudo pacman -S goreleaser

# Or with Go
go install github.com/goreleaser/goreleaser/v2@latest

Release Types

Development/Pre-release Builds

Development builds are tagged with suffixes like -dev, -rc1, -alpha, -beta.

Examples:

  • v0.15.3-dev
  • v0.16.0-rc1
  • v0.16.0-alpha

These are automatically marked as pre-releases on GitHub and can be installed with:

curl -fsSL https://archup.run/install/bin | bash -s -- --dev

Stable Releases

Stable releases use semantic versioning without suffixes.

Examples:

  • v0.15.3
  • v1.0.0

These are marked as the latest stable release and installed by default:

curl -fsSL https://archup.run/install/bin | bash

Creating a Dev Release

  1. Commit your changes:

    git add .
    git commit -m "feat(installer): add new feature"
    
  2. Tag the dev version:

    git tag v0.15.3-dev
    
  3. Push the tag:

    git push origin v0.15.3-dev
    
  4. Run goreleaser:

    # Ensure you have GITHUB_TOKEN set
    export GITHUB_TOKEN="your_github_token"
    
    # Create the release
    goreleaser release --clean
    

The release will be created on GitHub as a pre-release.

Creating a Stable Release

Same process as dev release, but use a clean version tag:

git tag v0.15.3
git push origin v0.15.3
goreleaser release --clean

Testing Releases Locally

Before pushing, test the release process locally:

# Test without publishing
goreleaser release --snapshot --skip=publish --clean

# Check the artifacts in dist/
ls -lh dist/

Testing Installation from VM

After creating a dev release, test the installation:

# On your Arch Linux VM/ISO
curl -fsSL https://archup.run/install/bin | bash -s -- --dev

Or test a specific version:

curl -fsSL https://archup.run/install/bin | bash -s -- --version v0.15.3-dev

Artifacts Generated

Each release creates:

  • archup - Standalone binary
  • archup_VERSION_linux_x86_64.tar.gz - Archive with binary + install scripts
  • checksums.txt - SHA256 checksums for verification

Troubleshooting

goreleaser not found:

go install github.com/goreleaser/goreleaser/v2@latest

GITHUB_TOKEN not set: Create a personal access token at https://github.com/settings/tokens with repo scope:

export GITHUB_TOKEN="ghp_your_token_here"
# Or add to ~/.bashrc for persistence

Release failed: Check the goreleaser output for errors. Common issues:

  • Tag already exists (delete with git tag -d TAG and git push origin :refs/tags/TAG)
  • Invalid version format
  • Missing permissions on GitHub token

CI/CD (Future)

Consider setting up GitHub Actions to automate releases:

# .github/workflows/release.yml
on:
  push:
    tags:
      - 'v*'
source
1# Release Process
2
3This document describes how to create releases for ArchUp using goreleaser.
4
5## Prerequisites
6
7Install goreleaser:
8```bash
9# On Arch Linux
10sudo pacman -S goreleaser
11
12# Or with Go
13go install github.com/goreleaser/goreleaser/v2@latest
14```
15
16## Release Types
17
18### Development/Pre-release Builds
19
20Development builds are tagged with suffixes like `-dev`, `-rc1`, `-alpha`, `-beta`.
21
22**Examples:**
23- `v0.15.3-dev`
24- `v0.16.0-rc1`
25- `v0.16.0-alpha`
26
27These are automatically marked as pre-releases on GitHub and can be installed with:
28```bash
29curl -fsSL https://archup.run/install/bin | bash -s -- --dev
30```
31
32### Stable Releases
33
34Stable releases use semantic versioning without suffixes.
35
36**Examples:**
37- `v0.15.3`
38- `v1.0.0`
39
40These are marked as the latest stable release and installed by default:
41```bash
42curl -fsSL https://archup.run/install/bin | bash
43```
44
45## Creating a Dev Release
46
471. **Commit your changes:**
48   ```bash
49   git add .
50   git commit -m "feat(installer): add new feature"
51   ```
52
532. **Tag the dev version:**
54   ```bash
55   git tag v0.15.3-dev
56   ```
57
583. **Push the tag:**
59   ```bash
60   git push origin v0.15.3-dev
61   ```
62
634. **Run goreleaser:**
64   ```bash
65   # Ensure you have GITHUB_TOKEN set
66   export GITHUB_TOKEN="your_github_token"
67
68   # Create the release
69   goreleaser release --clean
70   ```
71
72The release will be created on GitHub as a pre-release.
73
74## Creating a Stable Release
75
76Same process as dev release, but use a clean version tag:
77
78```bash
79git tag v0.15.3
80git push origin v0.15.3
81goreleaser release --clean
82```
83
84## Testing Releases Locally
85
86Before pushing, test the release process locally:
87
88```bash
89# Test without publishing
90goreleaser release --snapshot --skip=publish --clean
91
92# Check the artifacts in dist/
93ls -lh dist/
94```
95
96## Testing Installation from VM
97
98After creating a dev release, test the installation:
99
100```bash
101# On your Arch Linux VM/ISO
102curl -fsSL https://archup.run/install/bin | bash -s -- --dev
103```
104
105Or test a specific version:
106```bash
107curl -fsSL https://archup.run/install/bin | bash -s -- --version v0.15.3-dev
108```
109
110## Artifacts Generated
111
112Each release creates:
113- `archup` - Standalone binary
114- `archup_VERSION_linux_x86_64.tar.gz` - Archive with binary + install scripts
115- `checksums.txt` - SHA256 checksums for verification
116
117## Troubleshooting
118
119**goreleaser not found:**
120```bash
121go install github.com/goreleaser/goreleaser/v2@latest
122```
123
124**GITHUB_TOKEN not set:**
125Create a personal access token at https://github.com/settings/tokens with `repo` scope:
126```bash
127export GITHUB_TOKEN="ghp_your_token_here"
128# Or add to ~/.bashrc for persistence
129```
130
131**Release failed:**
132Check the goreleaser output for errors. Common issues:
133- Tag already exists (delete with `git tag -d TAG` and `git push origin :refs/tags/TAG`)
134- Invalid version format
135- Missing permissions on GitHub token
136
137## CI/CD (Future)
138
139Consider setting up GitHub Actions to automate releases:
140```yaml
141# .github/workflows/release.yml
142on:
143  push:
144    tags:
145      - 'v*'
146```

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 0

    ↑↓ moveenter openesc close