Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,18 @@ jobs:
build:
name: Build Binaries
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod
cache: true

- name: Build binaries
run: |
Expand All @@ -47,6 +51,9 @@ jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

needs: build
steps:
- name: Checkout code
Expand All @@ -55,7 +62,8 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"
go-version-file: go.mod
cache: true

- name: Run unit tests
run: go test -v ./...
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
GOTOOLCHAIN: auto


steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@v5
with:
go-version-file: go.mod

Expand Down
24 changes: 20 additions & 4 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,44 +25,56 @@ jobs:
lint:
name: Lint Code
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod
cache: true

- name: Run golangci-lint
run: make lint

unit-test:
name: Unit Tests
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod
cache: true

- name: Run unit tests
run: make unit-test

integration-test:
name: Integration Tests
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod
cache: true

- name: Run integration tests
run: make integration-test
Expand All @@ -72,14 +84,18 @@ jobs:
security-scan:
name: Security Scan
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod
cache: true

- name: Install govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
Expand Down
16 changes: 12 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,37 @@ jobs:
build:
name: Build Release Binaries
runs-on: ubuntu-latest
env:
GOTOOLCHAIN: auto

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.25"
go-version-file: go.mod

- name: Build binaries
run: |
mkdir -p dist
platforms=("linux/amd64" "linux/arm64" "windows/amd64" "windows/arm64" "darwin/amd64" "darwin/arm64")
VERSION=${{ github.ref_name }}
platforms=("linux/amd64" "linux/arm64" "windows/amd64" "windows/arm64" "darwin/amd64" "darwin/arm64" "freebsd/amd64" "freebsd/arm64")
for platform in "${platforms[@]}"; do
GOOS=${platform%/*}
GOARCH=${platform#*/}
output_name="dist/launchpad_${GOOS}_${GOARCH}"
output_name="dist/launchpad_${GOOS}_${GOARCH}_${VERSION#v}"
if [ "$GOOS" = "windows" ]; then
output_name+=".exe"
fi
echo "Building $output_name"
GOOS=$GOOS GOARCH=$GOARCH go build -o "$output_name" ./main.go
done
- name: Generate checksums
run: |
cd dist
sha256sum launchpad_* > checksums.sha256

- name: Upload artifacts
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -68,4 +76,4 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# TODO: Add Digicert signing here.
# TODO: Push signed artifacts to S3 here.
# TODO: Push signed artifacts to S3 here.
6 changes: 6 additions & 0 deletions AI_AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ This document defines guidelines for AI agents working on the Launchpad project.
1. **Generalization**: Support all AI agents, not just specific providers.
2. **Consistency**: Follow Launchpad’s architectural patterns and conventions.
3. **Clarity**: Document decisions and reasoning for human reviewers.
4. **Branching**: NEVER work on, push to, or merge to the `main` branch. All work MUST be done on feature branches.

---

Expand All @@ -29,13 +30,18 @@ Documentation is organized to minimize context overhead for agents:
- Read `docs/guidance/project.md` to understand core architectural principles.
- For feature requests, review the relevant PRD in `docs/requirements/`.
- For bug fixes, review the relevant specification in `docs/specifications/`.
- **Environment**: Ensure `GOTOOLCHAIN=auto` is used for all `go` commands to support the required toolchain.

### 2. Strategy Phase
- **ALWAYS** create a new feature branch from `main`.
- Propose changes that align with the **Phase Manager** architecture (`docs/specifications/architecture.md`).
- Ensure changes are backwards compatible or include migrations (`docs/specifications/architecture.md`).
- Document trade-offs and decisions in the PR description.

### 3. Execution Phase
- **NEVER** push directly to `main`.
- **NEVER** merge into `main`.
- All work MUST be pushed to a remote feature branch for human review.
- All commits MUST be signed.
- Follow the testing strategy outlined in `docs/development/workflow.md`.
- Use `make local` for rapid iteration and validation.
Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

# Ensure we use auto toolchain
export GOTOOLCHAIN=auto


.PHONY: clean
clean:
rm -fr dist
Expand Down
3 changes: 3 additions & 0 deletions version/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ func (a *Asset) IsForHost() bool {
}

parts := strings.Split(strings.TrimSuffix(a.Name, ".exe"), "_")
if len(parts) < 3 {
return false
}
return parts[1] == runtime.GOOS && parts[2] == runtime.GOARCH
}

Expand Down
Loading