Skip to content

Add CI pipeline#58

Open
bobwhitelock wants to merge 60 commits into
masterfrom
claude/add-ci-pipeline-gScOt
Open

Add CI pipeline#58
bobwhitelock wants to merge 60 commits into
masterfrom
claude/add-ci-pipeline-gScOt

Conversation

@bobwhitelock

@bobwhitelock bobwhitelock commented Jan 25, 2026

Copy link
Copy Markdown
Owner

Resolves #38.

@bobwhitelock
bobwhitelock force-pushed the claude/add-ci-pipeline-gScOt branch 4 times, most recently from 0799a80 to 04356e4 Compare January 25, 2026 19:49
- GitHub Actions workflow runs pre-commit on all PRs
- pre-commit config with shellcheck hook (excludes Python/Perl scripts)
- Taskfile for local `task lint` command
- Add `# shellcheck shell=bash` directive to zsh/lib/*.sh files
- Convert backticks to $() syntax
- Split local declarations to avoid masking return values
- Quote variables where safe
- Add suppressions for intentional patterns (zsh-specific, eval, etc.)
@bobwhitelock
bobwhitelock force-pushed the claude/add-ci-pipeline-gScOt branch from ecfff5e to 51f0c82 Compare January 25, 2026 20:00
- Add `# shellcheck shell=bash` to zsh/env.sh and zsh/packages.sh
- Add suppressions for expected warnings in zsh/packages.sh
- Exclude zsh/env.private.example.sh from shellcheck (local-only file)
SC1091 fires when shellcheck can't follow dynamic source paths
that only exist at runtime, not in the CI environment.
- Add ruff for Python linting, formatting, and import sorting
- Add mypy for Python type checking
- Add yamllint for YAML validation (excluding tmuxinator templates)
- Add pyproject.toml with tool configurations
- Add .yamllint.yml with permissive rules for dotfiles
- Fix mypy error in claude_alert.py (handle None from os.environ.get)
- Remove unused variable in todoist-to-markdown
- Make install script work without sudo by commenting out privileged ops
- Add CI job to verify install script syntax
- Set up Python 3.11 in CI workflow
- Add pre-commit-hooks for basic file hygiene:
  - trailing-whitespace
  - end-of-file-fixer
  - check-merge-conflict
  - check-added-large-files
  - check-executables-have-shebangs
- Add typos for catching spelling mistakes
- Add .typos.toml to ignore vim mapping false positive
- Fix missing trailing newlines in various files
…onfig

- Rename underwear.yml back to underware.yml (actual project name)
- Add underware to typos ignore list
- Enable yamllint for aider.conf.yml (fix long line)
- Keep tmuxinator/ ignored since files use ERB templating
@bobwhitelock bobwhitelock changed the title Add CI pipeline with shellcheck linting Add CI pipeline Jan 26, 2026
Move SC1091 (missing sourced file) suppression from global shellcheck
args to inline comments on specific source statements.
- Revert underwear -> underware in tmuxinator configs (typos false positive)
- Restore commented-out sudo pre-emptive access block in install script
- Add vint linter for vim files
- Fix grea alias (was incorrectly changed to great by typos)
- Add grea to typos ignore list
- Add scriptencoding utf-8 to vim files with unicode characters
- Add scriptencoding utf-8 at top of vimrc
- Change double quotes to single quotes where safe
- Wrap autocmds in augroup lsp_servers
- Create .vintrc.yaml to disable ProhibitEqualTildeOperator
  (operator case-sensitivity not always safe to change)
@bobwhitelock
bobwhitelock force-pushed the claude/add-ci-pipeline-gScOt branch from 5aa8ffb to 01684a0 Compare January 26, 2026 17:25
@bobwhitelock
bobwhitelock force-pushed the claude/add-ci-pipeline-gScOt branch from 8c97645 to b0be0ac Compare January 26, 2026 17:32
- Add zsh-check CI job that:
  - Checks syntax of all zsh/*.sh and zsh/lib/*.sh files
  - Tests that env.sh loads without producing any output
- Add task check:zsh for local testing
- Combine install-script and zsh-check CI jobs into single integration job
- Run install script then verify zsh loads lib files without errors/output
- Update Taskfile with matching integration task
Create required directories and symlinks that the install script
expects: DOTFILES at ~/src/bobwhitelock/dotfiles, dotfiles-private
directories for dotbot links, and claude-plans directory.
Remove the full install script from CI since it has many dependencies
that aren't needed for basic validation. The integration test now just
verifies zsh lib files can be sourced without errors.
Add is_ci() check to detect CI environment (via CI=true env var).
In CI mode:
- Create required directories for dotbot (dotfiles-private, claude-plans)
- Skip vim plugin install (no display, can hang)
- Skip tmux plugin install (not needed for validation)

This allows the full install script to run in CI while skipping
steps that would fail or aren't useful for validation.
claude added 30 commits January 26, 2026 22:31
The kubernetes.sh file was running `kubectl config get-contexts`
at source time, which produces errors when kubectl isn't installed.
Now wrapped in a command check and stderr redirect.

Also restored the CI workflow with install script and strict zsh test.
Re-enable all install script steps with proper safeguards:
- Create placeholder directories for dotbot if they don't exist
- Skip vim plugin install if not in a terminal
- Skip tmux plugin install if tpm isn't installed
- Source env.sh without pipeline to preserve exports
Remove graceful handling of missing dotbot/tpm - submodules should
be initialized by `git submodule update --init --recursive`, so we
should fail if they're not available rather than silently skip.
Add better error tracking to identify exactly which step
in the install process is failing in CI.
Run the actual install script instead of manually duplicating steps.
The install script already has guards for CI-incompatible operations:
- Creates placeholder directories if needed
- Skips vim plugin install when not in a terminal
- Skips tpm install if tmux not available
This allows dotbot to succeed even when dotfiles-private
repo is not available (e.g., in CI or fresh installs).
Create placeholder at $BASEDIR/../dotfiles-private so it works
regardless of where dotfiles is checked out. Also create the
actual aws/config file that dotbot expects, not just the directory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add CI

2 participants