Skip to content

Commit a2946a7

Browse files
authored
Merge pull request #402 from MiniMax-AI/release-compose-assets
Simplify Core installation onto Compose and a Go oac command
2 parents 28d34ff + fd61a9e commit a2946a7

173 files changed

Lines changed: 2957 additions & 8760 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/api-acceptance.yml‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,9 @@ jobs:
4040
with:
4141
go-version-file: go.mod
4242
cache: true
43-
- name: Build standalone commands and verify migration entrypoints
44-
env:
45-
OAC_TEST_DATABASE_URL: postgres://agents_api:agents_api_test_only@127.0.0.1:${{ job.services.postgres.ports['5432'] }}/oac_ci_tests?sslmode=disable
43+
- name: Build standalone commands
4644
run: |
4745
OAC_DEV_CORE_BUILD_DIR="$RUNNER_TEMP/oac-core-build" make build-core
48-
OAC_DATABASE_URL="$OAC_TEST_DATABASE_URL" "$RUNNER_TEMP/oac-core-build/oac-core-migrate"
4946
"$RUNNER_TEMP/oac-core-build/oac-core-device" --help
5047
"$RUNNER_TEMP/oac-core-build/oac-core-environment-key" --help
5148
- uses: actions/setup-python@v6

‎.github/workflows/check.yml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,12 @@ jobs:
190190
- uses: actions/checkout@v7
191191
with:
192192
ref: ${{ inputs.ref || github.sha }}
193+
- uses: actions/setup-go@v7
194+
with:
195+
go-version-file: go.mod
193196
- name: Allocate an isolated Compose project
194197
run: python3 -c 'import uuid; print("COMPOSE_SMOKE_PROJECT=oac-smoke-" + uuid.uuid4().hex)' >> "$GITHUB_ENV"
195-
- name: Start published images and verify the installation
198+
- name: Build the images, start the installation and verify it
196199
timeout-minutes: 17
197200
run: python3 scripts/compose-smoke.py
198201
- name: Remove test containers and volumes

‎.github/workflows/release.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ jobs:
132132
for asset in "$HOME/.oac/build/core-distribution/"*; do
133133
if [[ -f "$asset" ]]; then ln "$asset" "$HOME/.oac/build/release-upload/"; fi
134134
done
135-
cp deploy/install-release.sh "$HOME/.oac/build/release-upload/install.sh"
135+
cp deploy/install.sh "$HOME/.oac/build/release-upload/install.sh"
136136
(cd "$HOME/.oac/build/release-upload" && sha256sum install.sh > install.sh.sha256)
137137
- uses: actions/upload-artifact@v6
138138
with:
@@ -141,8 +141,8 @@ jobs:
141141
compression-level: 0
142142
if-no-files-found: error
143143

144-
- name: Sign in to GHCR for version releases
145-
if: github.event_name == 'push'
144+
- name: Sign in to GHCR
145+
if: github.event_name == 'push' || inputs.draft_release
146146
env:
147147
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
148148
run: |
@@ -159,5 +159,5 @@ jobs:
159159
RELEASE_MODE: ${{ github.event_name == 'push' && 'publish' || 'draft' }}
160160
run: python3 scripts/publish-core-release.py --assets "$HOME/.oac/build/release-upload"
161161
- name: Remove registry credentials
162-
if: always() && github.event_name == 'push'
162+
if: always() && (github.event_name == 'push' || inputs.draft_release)
163163
run: rm -f "$RUNNER_TEMP/oac-release-docker/config.json"

‎AGENTS.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ OpenAgentCore is pre-release. Replace superseded interfaces, execution paths and
6565
## Working in this repository
6666

6767
- For each new task, create a new Git worktree. Name its directory after that change's commit subject, in kebab-case, beside the checkout. Run `git pull --ff-only` on the base branch, and create the feature branch in that worktree before development.
68+
- After every push to a pull request, wait 60 seconds, then run `gh pr checks` and confirm CI passes. Fix any failure before reporting the work as done.
6869
- [CONTRIBUTING.md](CONTRIBUTING.md): documentation ownership, repository boundary, workflow, independent review, required checks and naming.
6970
- [Develop OpenAgentCore](docs/development.md): setup, the repository map, focused checks and [each extension boundary](docs/development.md#choose-an-extension-boundary).
7071
- [API index](docs/api/index.md): each route's caller and credential.

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ This guide owns how to work in the repository: documentation ownership, the repo
3333
| Distribution builds, Runtime image builds, CI and publication | [Maintainer guide](docs/maintainers.md) |
3434
| Website: landing page, bilingual documentation maintenance, documentation site build and GitHub Pages publication | [Website guide](website/README.md) |
3535
| Self-hosted Runtime installation, recovery and local operation | [Self-hosted execution](docs/getting-started/self-hosted.md) |
36-
| Installer lifecycle, locking, generated state, managed HTTPS and downloads | [Installer design rules](deploy/install/README.md) |
36+
| Installer lifecycle, locking, generated state, managed HTTPS and downloads | [Deployment](deploy/README.md) and [Node installer](deploy/node/README.md) |
3737
| Operator installation and alternatives | [Installation](docs/getting-started/install.md), [installation options](docs/getting-started/install-options.md) |
3838
| Settings, defaults, files and installation layout | [Configuration](docs/configuration.md) |
3939
| Operator commands, keys, backup and version policy | [Operations](docs/getting-started/operations.md) |

‎Makefile‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,13 @@ check-microsandbox-provider:
178178
check-distribution:
179179
node --test scripts/build-native-catalog.test.mjs
180180
go test ./services/web -count=1
181-
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s deploy/install -p 'test_*.py'
181+
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s deploy/node -p 'test_*.py'
182+
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s deploy/compose -p 'test_*.py'
183+
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s scripts/acceptance -p 'test_*.py'
184+
PYTHONDONTWRITEBYTECODE=1 python3 deploy/test_install.py
182185
PYTHONDONTWRITEBYTECODE=1 python3 scripts/core-distribution-manifest.test.py
183186
PYTHONDONTWRITEBYTECODE=1 python3 scripts/publish-core-release.test.py
184-
PYTHONDONTWRITEBYTECODE=1 python3 scripts/install-release.test.py
185-
PYTHONDONTWRITEBYTECODE=1 python3 scripts/config-reference.py --check
186-
bash -n deploy/install/install.sh deploy/install-release.sh scripts/build-web.sh scripts/build-core-distribution.sh scripts/build-core-image-context.sh scripts/prepare-release-runtimes.sh
187+
bash -n deploy/install.sh scripts/build-web.sh scripts/build-core-distribution.sh scripts/build-core-image-context.sh scripts/prepare-release-runtimes.sh
187188
./scripts/build-web.sh
188189

189190
build-core-distribution:

‎apps/web/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pnpm --filter @oac/web build
3636
pnpm test:web:acceptance
3737
```
3838

39-
`pnpm test:web:acceptance` runs the Playwright tests in `apps/web/e2e` in Chrome against the fixture console. After each test, every spec except `domain.spec.ts` checks that the browser sent nothing to `/v1` and no `Authorization` header. The tests do not exercise `services/web` or a real Core; the console server has its own Go tests. `make check-web` runs all of these; [CONTRIBUTING.md](../../CONTRIBUTING.md) lists the repository's required checks.
39+
`pnpm test:web:acceptance` runs the Playwright tests in `apps/web/e2e` in Chrome against the fixture console. After each test, every spec checks that the browser sent nothing to `/v1` and no `Authorization` header. The tests do not exercise `services/web` or a real Core; the console server has its own Go tests. `make check-web` runs all of these; [CONTRIBUTING.md](../../CONTRIBUTING.md) lists the repository's required checks.
4040

4141
## README screenshots
4242

‎apps/web/e2e/domain.spec.ts‎

Lines changed: 0 additions & 95 deletions
This file was deleted.

‎apps/web/e2e/nodes.spec.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ test("issues no command before the installation is read, for a loopback public U
125125
await page.unroute("**/core/v1/installation");
126126
await add.getByRole("button", { name: "Try again" }).click();
127127
// Nodes on other machines can't reach a loopback public_url.
128-
await expect(add.getByRole("status")).toHaveText("Configure a domain and HTTPS in System before adding nodes.");
128+
await expect(add.getByRole("status")).toHaveText("Set a public HTTPS address before adding nodes.");
129129
await expect(add.getByRole("button", { name: "Generate command" })).toHaveCount(0);
130130
await add.getByRole("button", { name: "Close dialog" }).click();
131131
await expect(page.getByRole("button", { name: "Add node", exact: true })).toBeDisabled();

‎apps/web/e2e/overview-readiness.spec.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ test("successful empty reads preserve true zero counts and empty states", async
7777
await expect(failed(page)).toHaveCount(0);
7878
});
7979

80-
test("local-only address has a domain setup link on all three pages and blocks Add node", async ({ page, request }) => {
80+
test("local-only address links to System on other pages and blocks Add node", async ({ page, request }) => {
8181
await openConsole(page, request, "overview", { installation: "local" });
8282
const notice = page.getByRole("status", { name: "Public address needs attention" });
83-
await expect(notice.getByRole("button", { name: "Configure domain and HTTPS" })).toBeVisible();
83+
await expect(notice.getByRole("button", { name: "Review the public address" })).toBeVisible();
8484
await expect(page.locator(".getting-started-step").first()).toContainText("To do");
8585
await expect(page.locator(".getting-started-step").first()).toContainText("Configure HTTPS");
8686
await page.getByRole("button", { name: "Nodes", exact: true }).click();
@@ -89,7 +89,7 @@ test("local-only address has a domain setup link on all three pages and blocks A
8989
await expect(page.getByText("Add node is unavailable while the public address is local only.")).toBeVisible();
9090
await page.getByRole("button", { name: "System", exact: true }).click();
9191
await expect(notice).toBeVisible();
92-
await expect(page.getByRole("button", { name: "Configure domain and HTTPS" })).toHaveCount(1);
92+
await expect(notice.getByRole("button", { name: "Review the public address" })).toHaveCount(0);
9393
expect(await writes(request)).toEqual([]);
9494
});
9595

@@ -102,7 +102,7 @@ for (const language of ["en", "zh-CN"] as const) {
102102
await page.getByRole("menuitemradio", { name: "简体中文" }).click();
103103
}
104104
await expect(page.locator(".overview-activity .error-state")).toContainText(language === "en" ? "Could not read the data" : "无法读取数据");
105-
await expect(page.locator(".installation-notice")).toContainText(language === "en" ? "Configure HTTPS before connecting" : "连接外部应用和节点前");
105+
await expect(page.locator(".installation-notice")).toContainText(language === "en" ? "Set a public HTTPS address before connecting" : "连接外部应用和节点前");
106106
if (language === "zh-CN") await expect(page.locator("body")).not.toContainText("Core request failed");
107107
await expect(page.getByRole("article").first()).toContainText(language === "en" ? "Down" : "不可用");
108108
for (const width of [1280, 1440]) {

0 commit comments

Comments
 (0)