chore: remove stale VERSION.md duplicate (VERSION is canonical) #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Install | |
| on: | |
| push: | |
| branches: [master, main] | |
| pull_request: | |
| branches: [master, main] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| install: | |
| name: "${{ matrix.profile }} @ Ubuntu ${{ matrix.ubuntu }}" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| container: | |
| image: "ubuntu:${{ matrix.ubuntu }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ubuntu: ["20.04", "22.04", "24.04"] | |
| profile: [docker, minimal, workstation] | |
| steps: | |
| - name: Bootstrap system tools | |
| run: | | |
| export DEBIAN_FRONTEND=noninteractive | |
| apt-get -yq update | |
| # Prevent resolvconf post-install from failing on Docker-bound /etc/resolv.conf | |
| echo "resolvconf resolvconf/linkify-resolvconf boolean false" | debconf-set-selections | |
| apt-get -yq install apt-utils git sudo curl ca-certificates | |
| - name: Create non-root test user with passwordless sudo | |
| run: | | |
| useradd -m -s /bin/bash testuser | |
| echo 'testuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers | |
| - name: Checkout dotfiles | |
| uses: actions/checkout@v4 | |
| - name: Copy dotfiles to test user home | |
| run: | | |
| cp -r . /home/testuser/dotfiles | |
| chown -R testuser:testuser /home/testuser/dotfiles | |
| - name: Configure curl auth (avoids GitHub API rate limit) | |
| run: | | |
| printf 'header = "Authorization: Bearer %s"\n' "${{ secrets.GITHUB_TOKEN }}" \ | |
| > /home/testuser/.curlrc | |
| chown testuser:testuser /home/testuser/.curlrc | |
| chmod 600 /home/testuser/.curlrc | |
| - name: Install (${{ matrix.profile }}) | |
| run: su -s /bin/bash -c 'HOME=/home/testuser; export HOME; cd ~/dotfiles && bash install.sh ${{ matrix.profile }}' testuser | |
| - name: Idempotency — re-run install.sh | |
| run: su -s /bin/bash -c 'HOME=/home/testuser; export HOME; cd ~/dotfiles && bash install.sh ${{ matrix.profile }}' testuser | |
| - name: Run test suite | |
| run: su -s /bin/bash -c 'HOME=/home/testuser; export HOME; export TERM=xterm-256color; cd ~/dotfiles && bash test.sh ${{ matrix.profile }}' testuser | |
| - name: Run update.sh | |
| run: su -s /bin/bash -c 'HOME=/home/testuser; export HOME; cd ~/dotfiles && bash update.sh' testuser | |
| - name: Re-run test suite after update | |
| run: su -s /bin/bash -c 'HOME=/home/testuser; export HOME; export TERM=xterm-256color; cd ~/dotfiles && bash test.sh ${{ matrix.profile }}' testuser | |
| install-nosudo: | |
| name: "nosudo @ Ubuntu ${{ matrix.ubuntu }}" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| container: | |
| image: "ubuntu:${{ matrix.ubuntu }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| ubuntu: ["20.04", "22.04", "24.04"] | |
| steps: | |
| - name: Bootstrap prerequisites (as root — mirrors a shared host) | |
| run: | | |
| export DEBIAN_FRONTEND=noninteractive | |
| apt-get -yq update | |
| apt-get -yq install apt-utils git curl wget ca-certificates zsh tmux python3 | |
| - name: Create non-root user WITHOUT sudo | |
| run: useradd -m -s /bin/bash user | |
| - name: Checkout dotfiles | |
| uses: actions/checkout@v4 | |
| - name: Copy dotfiles to user home | |
| run: | | |
| cp -r . /home/user/dotfiles | |
| chown -R user:user /home/user/dotfiles | |
| - name: Configure curl auth (avoids GitHub API rate limit) | |
| run: | | |
| printf 'header = "Authorization: Bearer %s"\n' "${{ secrets.GITHUB_TOKEN }}" \ | |
| > /home/user/.curlrc | |
| chown user:user /home/user/.curlrc | |
| chmod 600 /home/user/.curlrc | |
| - name: Install — no-sudo path (minimal profile) | |
| run: | | |
| su -s /bin/bash -c \ | |
| 'HOME=/home/user; export HOME; export PATH="$HOME/.local/bin:$PATH"; cd ~/dotfiles && bash install.sh minimal' \ | |
| user | |
| - name: Run test suite (nosudo profile) | |
| run: | | |
| su -s /bin/bash -c \ | |
| 'HOME=/home/user; export HOME; export PATH="$HOME/.local/bin:$PATH"; export TERM=xterm-256color; cd ~/dotfiles && bash test.sh nosudo' \ | |
| user | |
| - name: Idempotency — re-run install.sh | |
| run: | | |
| su -s /bin/bash -c \ | |
| 'HOME=/home/user; export HOME; export PATH="$HOME/.local/bin:$PATH"; cd ~/dotfiles && bash install.sh minimal' \ | |
| user |