actup

command module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2026 License: MIT Imports: 1 Imported by: 0

README

actup

Upgrade GitHub Actions versions interactively from your terminal

Contributors Forks Stargazers Issues Go Version License

Explore the docs »
Report Bug · Request Feature


actup is a CLI tool that scans your GitHub Actions workflow files (.github/workflows/*.yml) and upgrades action versions to their latest semver tags. It provides both an interactive terminal UI (TUI) powered by Bubble Tea for cherry-picking upgrades, and a non-interactive mode for CI/automation.

Features

  • Automatic discovery of workflow files in .github/workflows/
  • Interactive TUI with a checkbox list to select which actions to upgrade
  • Non-interactive mode (--no-tui) for automated upgrades
  • Dry-run support (--dry-run) to preview changes without writing files
  • Atomic file edits via temp-file + rename to prevent corruption
  • Semver-aware — fetches and sorts tags by semantic versioning
  • Concurrent API requests with built-in rate-limiting and caching

Demo

asciicast

Table of Contents

Installation

Package managers

go install:

go install github.com/lynicis/actup@latest

Homebrew (macOS & Linux):

brew tap lynicis/tap
brew install actup

Scoop (Windows):

scoop bucket add actup https://github.com/lynicis/scoop-bucket.git
scoop install actup

Debian / Ubuntu:

curl -LO https://github.com/lynicis/actup/releases/latest/download/actup_latest_linux_amd64.deb
sudo dpkg -i actup_latest_linux_amd64.deb

Fedora / RHEL / CentOS:

curl -LO https://github.com/lynicis/actup/releases/latest/download/actup_latest_linux_amd64.rpm
sudo rpm -i actup_latest_linux_amd64.rpm

Replace amd64 with arm64 if you're on an ARM machine.

Build from source

Requires Go 1.22 or later.

git clone https://github.com/lynicis/actup.git
cd actup
make build
make install   # optional, installs to $GOPATH/bin
Manual binary

Grab a pre-built binary for Linux, macOS, or Windows from the Releases page.

Docker

Images are published to ghcr.io/lynicis/actup for both linux/amd64 and linux/arm64:

docker run ghcr.io/lynicis/actup:latest --help

Mount a repository to scan:

docker run -v "$PWD:/workdir" -w /workdir ghcr.io/lynicis/actup:latest

You can also set GITHUB_TOKEN for higher API rate limits:

docker run -v "$PWD:/workdir" -w /workdir \
  -e GITHUB_TOKEN \
  ghcr.io/lynicis/actup:latest

Usage

Run actup from the root of any repository containing GitHub Actions workflows:

# Interactive mode (default) — opens a TUI to select upgrades
actup

# Non-interactive mode — upgrades everything automatically
actup --no-tui

# Preview changes without writing files
actup --dry-run

# Scan custom paths
actup -p ./my-workflows -p ./another-workflows

# Provide a GitHub token for higher rate limits
actup -t $GITHUB_TOKEN
# or
export GITHUB_TOKEN=ghp_xxx
actup

# Pin all upgrades to major version 4
actup --major 4

# Use a config file for per-action overrides
actup          # auto-discovers .actup.yaml in current directory
Config File (.actup.yaml)

Place an optional .actup.yaml in your project root for persistent overrides:

# Global default major version (overridden by CLI --major flag)
major: 4

# Per-action overrides / pins / exclusions
actions:
  actions/checkout: 4           # pin to latest v4.x.x
  actions/setup-go: v5.3.0     # pin to exact version
  some-org/some-action: skip   # exclude from upgrades

Precedence: CLI flags > config file > built-in defaults.

Interactive TUI Controls
Key Action
Space Toggle selection of an action
a Select all upgradable actions
n Deselect all
Enter Apply selected upgrades
q / Ctrl+C Quit
Example Output
  actup — 5 actions found across 3 files

  [✓] actions/checkout@v3       → v4 (3 files)
  [✓] actions/setup-go@v4       → v5 (2 files)
  [⏭] actions/cache@v4           (up to date)
  [✓] golangci/golangci-lint-action@v3 → v6 (1 file)
  [⚠] some-org/some-action@v1    (API error)

  [space] toggle  [a] all  [n] none  [enter] apply  [q] quit

Roadmap

  • Interactive TUI with checklist selection
  • Non-interactive (--no-tui) mode
  • Dry-run support
  • Concurrent GitHub API calls with rate-limit awareness
  • Cross-platform builds (Linux, macOS, Windows)
  • Pre-commit hooks for CI integration (.pre-commit-hooks.yaml)
  • Add support for pinning to specific major versions (--major)
  • Config file support (.actup.yaml)
  • Integration with dependabot-style grouped updates
  • Pre-upgrade hooks / custom validation

See the open issues for a full list of proposed features and known issues.

Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please make sure your code passes the existing tests and lint checks:

make test
make lint

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgments

  • Bubble Tea — the TUI framework that powers the interactive interface
  • Cobra — CLI framework for Go
  • go-github — GitHub API client library
  • go-yaml - Yaml unmarshaller/marshaller for Go

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
tui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL