Release 3.6.0: full multi-distro support (Debian 13, Ubuntu, Arch, Fe… #440
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: CI | |
| on: [push, pull_request] | |
| jobs: | |
| lint: | |
| name: Lint and syntax | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Install shells and shellcheck | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y shellcheck zsh fish | |
| - name: shellcheck (scripts, warning severity) | |
| run: shellcheck -S warning -f gcc ./*.sh | |
| - name: shellcheck (shell configs, error severity) | |
| run: shellcheck -S error -f gcc .bashrc .bash_aliases .bashrc_help | |
| - name: bash syntax | |
| run: | | |
| for f in *.sh .bashrc .bash_aliases .bashrc_help; do | |
| bash -n "$f" | |
| done | |
| - name: zsh syntax | |
| run: | | |
| zsh -n .zshrc | |
| zsh -n .zshrc_help | |
| - name: fish syntax | |
| run: | | |
| fish --no-execute config.fish | |
| fish --no-execute fish_help | |
| install-test: | |
| name: Install on ${{ matrix.image }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| image: ["debian:13", "debian:12", "ubuntu:24.04"] | |
| container: | |
| image: ${{ matrix.image }} | |
| env: | |
| # The runner defaults container HOME to /github/home, but the | |
| # installer resolves the real user's home via getent (/root for | |
| # root) — keep them consistent so setup, doctor and the shell | |
| # configs all agree on where things live. | |
| HOME: /root | |
| DXSBASH_SKIP_FONT: "1" | |
| DEBIAN_FRONTEND: noninteractive | |
| steps: | |
| - name: Install prerequisites | |
| run: | | |
| apt-get update | |
| apt-get install -y sudo git curl wget ca-certificates unzip | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Stage repository at the install location | |
| run: | | |
| mkdir -p /root/linuxtoolbox | |
| cp -a "$GITHUB_WORKSPACE" /root/linuxtoolbox/dxsbash | |
| git config --global --add safe.directory /root/linuxtoolbox/dxsbash | |
| - name: Run installer (bash, non-interactive) | |
| run: | | |
| cd /root/linuxtoolbox/dxsbash | |
| ./setup.sh --install --yes --shell bash | |
| - name: Doctor health check | |
| run: | | |
| cd /root/linuxtoolbox/dxsbash | |
| ./doctor.sh --no-color --verbose | |
| - name: Config loads and helper commands work | |
| run: | | |
| bash -c 'source /root/.bashrc; type extract >/dev/null; type aliases >/dev/null; echo ".bashrc loads OK"' | |
| test -x /usr/local/bin/update-dxsbash | |
| test -x /usr/local/bin/dxsbash-config | |
| test -x /usr/local/bin/dxsbash-repair | |
| test -x /usr/local/bin/dxsbash-doctor | |
| test -x /usr/local/bin/dxsbash-audit | |
| test -x /usr/local/bin/dxsbash | |
| /usr/local/bin/dxsbash version | |
| /usr/local/bin/dxsbash help | |
| - name: Security audit runs | |
| run: | | |
| # audit exits 1 when it finds FAILs, which is expected in a | |
| # bare container — assert it produces a summary either way. | |
| /usr/local/bin/dxsbash audit --no-color | tee /tmp/audit.txt || true | |
| grep -q "Summary" /tmp/audit.txt | |
| /usr/local/bin/dxsbash-audit --help >/dev/null | |
| - name: Security summary caches and prints | |
| run: | | |
| /root/linuxtoolbox/dxsbash/secsummary.sh --refresh | grep -q "Security:" | |
| test -f /root/.dxsbash/security-summary.txt | |
| # --startup must be fast and must not error | |
| /root/linuxtoolbox/dxsbash/secsummary.sh --startup | grep -q "Security:" |