ci: add cross-platform setup test workflow
- Add GitHub Actions workflow to test install scripts on Linux, macOS, Windows - Runs weekly to catch upstream package changes - Update install-deps.sh to configure gh with workflow scope - Document workflow scope in README.md and CLAUDE.md troubleshooting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
9600277897
commit
99897636a1
4 changed files with 180 additions and 2 deletions
153
.github/workflows/test-setup.yml
vendored
Normal file
153
.github/workflows/test-setup.yml
vendored
Normal file
|
|
@ -0,0 +1,153 @@
|
||||||
|
name: Test Setup Scripts
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [dev, main]
|
||||||
|
paths:
|
||||||
|
- 'scripts/**'
|
||||||
|
- '.github/workflows/test-setup.yml'
|
||||||
|
pull_request:
|
||||||
|
branches: [dev, main]
|
||||||
|
paths:
|
||||||
|
- 'scripts/**'
|
||||||
|
- '.github/workflows/test-setup.yml'
|
||||||
|
# Weekly test to catch upstream changes (package repos, etc.)
|
||||||
|
schedule:
|
||||||
|
- cron: '0 6 * * 1' # Every Monday at 6am UTC
|
||||||
|
workflow_dispatch: # Manual trigger
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-linux:
|
||||||
|
name: Linux (Ubuntu)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run install-deps.sh
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/install-deps.sh
|
||||||
|
./scripts/install-deps.sh
|
||||||
|
|
||||||
|
- name: Verify dependencies installed
|
||||||
|
run: |
|
||||||
|
echo "=== Checking installed tools ==="
|
||||||
|
git --version
|
||||||
|
gh --version
|
||||||
|
go version
|
||||||
|
php --version
|
||||||
|
composer --version
|
||||||
|
node --version
|
||||||
|
pnpm --version
|
||||||
|
echo "=== All dependencies verified ==="
|
||||||
|
|
||||||
|
- name: Run install-core.sh
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/install-core.sh
|
||||||
|
./scripts/install-core.sh
|
||||||
|
env:
|
||||||
|
INSTALL_DIR: ${{ github.workspace }}/bin
|
||||||
|
|
||||||
|
- name: Verify core CLI installed
|
||||||
|
run: |
|
||||||
|
export PATH="${{ github.workspace }}/bin:$PATH"
|
||||||
|
core --version || echo "Core CLI version check"
|
||||||
|
core doctor || echo "Core doctor completed"
|
||||||
|
|
||||||
|
test-macos:
|
||||||
|
name: macOS
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run install-deps.sh
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/install-deps.sh
|
||||||
|
./scripts/install-deps.sh
|
||||||
|
|
||||||
|
- name: Verify dependencies installed
|
||||||
|
run: |
|
||||||
|
echo "=== Checking installed tools ==="
|
||||||
|
git --version
|
||||||
|
gh --version
|
||||||
|
go version
|
||||||
|
php --version
|
||||||
|
composer --version
|
||||||
|
node --version
|
||||||
|
pnpm --version
|
||||||
|
echo "=== All dependencies verified ==="
|
||||||
|
|
||||||
|
- name: Run install-core.sh
|
||||||
|
run: |
|
||||||
|
chmod +x scripts/install-core.sh
|
||||||
|
./scripts/install-core.sh
|
||||||
|
env:
|
||||||
|
INSTALL_DIR: ${{ github.workspace }}/bin
|
||||||
|
|
||||||
|
- name: Verify core CLI installed
|
||||||
|
run: |
|
||||||
|
export PATH="${{ github.workspace }}/bin:$PATH"
|
||||||
|
core --version || echo "Core CLI version check"
|
||||||
|
core doctor || echo "Core doctor completed"
|
||||||
|
|
||||||
|
test-windows:
|
||||||
|
name: Windows
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run install-deps.ps1
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
# Run as current user (GitHub runners have admin)
|
||||||
|
# Modify script to skip admin check for CI
|
||||||
|
$script = Get-Content scripts/install-deps.ps1 -Raw
|
||||||
|
$script = $script -replace 'Write-Err "Please run this script as Administrator"', 'Write-Warn "Skipping admin check in CI"'
|
||||||
|
$script | Set-Content scripts/install-deps-ci.ps1
|
||||||
|
.\scripts\install-deps-ci.ps1
|
||||||
|
|
||||||
|
- name: Verify dependencies installed
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "=== Checking installed tools ==="
|
||||||
|
git --version
|
||||||
|
gh --version
|
||||||
|
go version
|
||||||
|
php --version
|
||||||
|
composer --version
|
||||||
|
node --version
|
||||||
|
pnpm --version
|
||||||
|
Write-Host "=== All dependencies verified ==="
|
||||||
|
|
||||||
|
- name: Run install-core.ps1
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
.\scripts\install-core.ps1
|
||||||
|
env:
|
||||||
|
INSTALL_DIR: ${{ github.workspace }}\bin
|
||||||
|
|
||||||
|
- name: Verify core CLI installed
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$env:PATH = "${{ github.workspace }}\bin;$env:PATH"
|
||||||
|
core --version
|
||||||
|
core doctor
|
||||||
|
|
||||||
|
# Summary job that requires all platforms to pass
|
||||||
|
setup-complete:
|
||||||
|
name: All Platforms
|
||||||
|
needs: [test-linux, test-macos, test-windows]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: always()
|
||||||
|
steps:
|
||||||
|
- name: Check results
|
||||||
|
run: |
|
||||||
|
if [ "${{ needs.test-linux.result }}" != "success" ] || \
|
||||||
|
[ "${{ needs.test-macos.result }}" != "success" ] || \
|
||||||
|
[ "${{ needs.test-windows.result }}" != "success" ]; then
|
||||||
|
echo "One or more platform tests failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "All platform tests passed!"
|
||||||
|
|
@ -136,7 +136,8 @@ Defined in `repos.yaml`:
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
- **"core: command not found"** → `make install-core` (builds from https://github.com/host-uk/core)
|
- **"core: command not found"** → `make install-core` (builds from https://github.com/host-uk/core)
|
||||||
- **"gh: command not found"** → `brew install gh && gh auth login`
|
- **"gh: command not found"** → `brew install gh && gh auth login -h github.com -p https -s workflow,repo,read:org`
|
||||||
|
- **"refusing to allow an OAuth App to create or update workflow"** → `gh auth refresh -h github.com -s workflow`
|
||||||
- **Clone failures** → `ssh -T git@github.com` to verify SSH keys
|
- **Clone failures** → `ssh -T git@github.com` to verify SSH keys
|
||||||
|
|
||||||
## This Repo's Scope
|
## This Repo's Scope
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,12 @@ make install-core
|
||||||
|
|
||||||
**"gh: command not found"**
|
**"gh: command not found"**
|
||||||
```bash
|
```bash
|
||||||
brew install gh && gh auth login
|
brew install gh && gh auth login -h github.com -p https -s workflow,repo,read:org
|
||||||
|
```
|
||||||
|
|
||||||
|
**"refusing to allow an OAuth App to create or update workflow"**
|
||||||
|
```bash
|
||||||
|
gh auth refresh -h github.com -s workflow
|
||||||
```
|
```
|
||||||
|
|
||||||
**Clone failures**
|
**Clone failures**
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,25 @@ main() {
|
||||||
esac
|
esac
|
||||||
|
|
||||||
info "Dependencies installed!"
|
info "Dependencies installed!"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Configure GitHub CLI if not already authenticated
|
||||||
|
if has gh; then
|
||||||
|
if ! gh auth status &>/dev/null; then
|
||||||
|
info "Configuring GitHub CLI..."
|
||||||
|
echo "You'll need to authenticate with GitHub."
|
||||||
|
echo "When prompted, select HTTPS and add the 'workflow' scope."
|
||||||
|
echo ""
|
||||||
|
gh auth login -h github.com -p https -s workflow,repo,read:org
|
||||||
|
else
|
||||||
|
# Check if workflow scope is present
|
||||||
|
if ! gh auth status 2>&1 | grep -q workflow; then
|
||||||
|
warn "GitHub CLI missing 'workflow' scope (needed for pushing repos with GitHub Actions)"
|
||||||
|
echo "Run: gh auth refresh -h github.com -s workflow"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next: Run './scripts/install-core.sh' to install the core CLI"
|
echo "Next: Run './scripts/install-core.sh' to install the core CLI"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue