Repository navigation
Add latest OpenCode installation and LMM OAuth configuration #115
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: Installer checks | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| platforms: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 | |
| with: | |
| node-version: 24.21.0 | |
| - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 | |
| with: | |
| python-version: '3.x' | |
| - name: Shell contracts | |
| if: runner.os != 'Windows' | |
| run: python3 test.py | |
| - name: ShellCheck | |
| if: runner.os == 'Linux' | |
| run: shellcheck *.sh | |
| - name: PowerShell contracts | |
| shell: pwsh | |
| run: ./test.ps1 | |
| - name: PowerShell 5.1 contracts | |
| if: runner.os == 'Windows' | |
| shell: powershell | |
| run: .\test.ps1 | |
| - name: Real Unix CLI installs | |
| if: runner.os != 'Windows' | |
| shell: bash | |
| run: | | |
| export PI_CODING_AGENT_DIR="$RUNNER_TEMP/pi-profile" DSH_HOME="$RUNNER_TEMP/dsh-profile" | |
| export CODEX_HOME="$RUNNER_TEMP/codex-profile" CODEX_INSTALL_DIR="$RUNNER_TEMP/codex-bin" | |
| export CODEX_NON_INTERACTIVE=true | |
| bash pi.sh | |
| pi --version | |
| pi list | |
| bash dsh.sh | |
| dsh --version | |
| dsh plugin --profile web list --depth 0 | |
| bash codex.sh | |
| "$CODEX_INSTALL_DIR/codex" --version | |
| bash claude-code.sh stable | |
| "$HOME/.local/bin/claude" --version | |
| bash lmm.sh | |
| "$HOME/.local/bin/lmm" --version | |
| - name: Real Windows CLI installs | |
| if: runner.os == 'Windows' | |
| shell: powershell | |
| run: | | |
| $env:PI_CODING_AGENT_DIR="$env:RUNNER_TEMP\pi-profile" | |
| # Expose only this job's chosen install path; no persistent user PATH changes. | |
| $env:PATH="$env:PI_CODING_AGENT_DIR\bin;$env:PATH" | |
| $env:DSH_HOME="$env:RUNNER_TEMP\dsh-profile" | |
| $env:CODEX_HOME="$env:RUNNER_TEMP\codex-profile" | |
| $env:CODEX_INSTALL_DIR="$env:RUNNER_TEMP\codex-bin" | |
| $env:CODEX_NON_INTERACTIVE='true' | |
| foreach ($tool in @('pi','dsh','codex','claude-code','lmm')) { | |
| Write-Host "Installing $tool" | |
| & powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File ".\$tool.ps1" | |
| if ($LASTEXITCODE) { throw "$tool install failed: $LASTEXITCODE" } | |
| } | |
| foreach ($command in @("$env:PI_CODING_AGENT_DIR\bin\pi.cmd",'dsh.cmd',"$env:CODEX_INSTALL_DIR\codex.exe","$HOME\.local\bin\claude.exe","$HOME\.local\bin\lmm.exe")) { | |
| & $command --version | |
| if ($LASTEXITCODE) { throw "$command failed: $LASTEXITCODE" } | |
| } | |
| linux-libc: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| image: [debian:12, alpine:3.22] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Official installers without Node | |
| env: | |
| IMAGE: ${{ matrix.image }} | |
| run: | | |
| docker run --rm -v "$PWD:/src:ro" "$IMAGE" sh -ec ' | |
| if command -v apk >/dev/null; then | |
| apk add --no-cache bash curl ca-certificates libgcc libstdc++ ripgrep | |
| export USE_BUILTIN_RIPGREP=0 | |
| else | |
| apt-get update && apt-get install -y bash curl ca-certificates | |
| fi | |
| export CODEX_NON_INTERACTIVE=true | |
| bash /src/codex.sh | |
| /root/.local/bin/codex --version | |
| bash /src/claude-code.sh stable | |
| /root/.local/bin/claude --version | |
| ' |