dotfiles/.github/workflows/validate.yml
dependabot[bot] 46b28c9a08
chore(deps): bump actions/checkout from 4.3.1 to 7.0.0 (#29)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.3.1 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](34e114876b...9c091bb21b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 21:22:10 +02:00

57 lines
1.9 KiB
YAML

name: Validate
on:
push:
pull_request:
jobs:
dotfiles:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install validation tools
run: |
sudo apt-get update
sudo apt-get install --yes build-essential curl file git gnupg procps shellcheck shfmt zsh
source install/lib/common.sh
source install/lib/brew.sh
source install/lib/packages.sh
install_wezterm
install_homebrew
brew install neovim starship stylua
echo "$BREW_PREFIX/bin" >> "$GITHUB_PATH"
- name: Restore Neovim plugins
env:
DOTFILES_CI: "1"
XDG_CONFIG_HOME: ${{ github.workspace }}/.config
run: nvim --headless "+Lazy! restore" +qa
- name: Validate
run: bin/check-dotfiles
# End-to-end installer test: the dotfiles job validates the configs but
# never runs install.sh itself, which is what rots (apt repo URLs, GPG
# fingerprints, pinned checksums). Run the full install as a normal user
# in a pristine container.
installer:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Run full installer in a fresh container
run: |
docker run --rm -v "$PWD:/src:ro" ubuntu:24.04 bash -ec '
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y --no-install-recommends sudo curl ca-certificates git
useradd -m -s /bin/bash tester
echo "tester ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/tester
cp -r /src /home/tester/dotfiles
chown -R tester:tester /home/tester/dotfiles
su tester -c "cd ~/dotfiles && install/install.sh"
su tester -c "cd ~/dotfiles && install/install.sh --unlink"
'