Fix Gitea quality gate portability
Staging Backend Quality Gate / validate (pull_request) Failing after 19m39s
Staging Backend Quality Gate / publish (pull_request) Has been cancelled

This commit is contained in:
Jesse_Chen
2026-08-05 11:52:38 +08:00
parent b6fd860fb4
commit 7fe29dcf01
4 changed files with 39 additions and 3 deletions
+23
View File
@@ -53,8 +53,31 @@ jobs:
python3 --version python3 --version
node --version node --version
npm --version npm --version
curl --version
docker version docker version
- name: Install and verify Docker Compose v2
env:
DOCKER_COMPOSE_VERSION: v2.39.1
run: |
set -euo pipefail
case "$(uname -m)" in
x86_64) compose_arch=x86_64; compose_sha=a5ea28722d5da628b59226626f7d6c33c89a7ed19e39f750645925242044c9d2 ;;
aarch64|arm64) compose_arch=aarch64; compose_sha=7b2627ed76f7dcb0d93f649f185af912372229b4c09762a3cd1db5be5255632b ;;
*) echo "Unsupported Docker Compose architecture: $(uname -m)" >&2; exit 1 ;;
esac
compose_dir="${DOCKER_CONFIG:-$HOME/.docker}/cli-plugins"
compose_bin="$compose_dir/docker-compose"
mkdir -p "$compose_dir"
curl -fsSL \
"https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-$compose_arch" \
-o "$compose_bin"
printf '%s %s\n' "$compose_sha" "$compose_bin" | sha256sum -c -
chmod +x "$compose_bin"
docker compose version
docker compose version --short | grep -Eq '^v?2\.'
docker compose --help | grep -q -- '--project-name'
- name: Install dependencies - name: Install dependencies
run: | run: |
set -euo pipefail set -euo pipefail
+3 -1
View File
@@ -1,13 +1,15 @@
"use client"; "use client";
import { useGSAP } from "@gsap/react"; import { useGSAP } from "@gsap/react";
import { gsap } from "gsap"; import gsapModule from "gsap";
import { useRef } from "react"; import { useRef } from "react";
import { AgentActivityStatus } from "@/components/agent-activity-status"; import { AgentActivityStatus } from "@/components/agent-activity-status";
import { ChatMessageContent } from "@/components/chat-message-content"; import { ChatMessageContent } from "@/components/chat-message-content";
import type { ChatMessageView } from "@/lib/chat-message-view"; import type { ChatMessageView } from "@/lib/chat-message-view";
const gsap = (gsapModule as typeof gsapModule & { gsap?: typeof gsapModule }).gsap ?? gsapModule;
gsap.registerPlugin(useGSAP); gsap.registerPlugin(useGSAP);
export function AgentAvatar() { export function AgentAvatar() {
@@ -83,10 +83,15 @@ test("changed staging workflows are syntactically valid YAML", () => {
giteaMigrationWorkflow, giteaMigrationWorkflow,
]) { ]) {
const result = spawnSync( const result = spawnSync(
"ruby", "python",
["-e", "require 'yaml'; YAML.parse_file(ARGV.fetch(0))", fileURLToPath(workflow)], [
"-c",
"import sys,yaml; yaml.safe_load(open(sys.argv[1], encoding='utf-8'))",
fileURLToPath(workflow),
],
{ encoding: "utf8" }, { encoding: "utf8" },
); );
assert.ifError(result.error);
assert.equal(result.status, 0, result.stderr); assert.equal(result.status, 0, result.stderr);
} }
}); });
@@ -126,6 +131,11 @@ test("Gitea quality gate validates before publishing an immutable ACR manifest",
assert.equal((workflow.match(/git status --porcelain --untracked-files=all/g) ?? []).length, 2); assert.equal((workflow.match(/git status --porcelain --untracked-files=all/g) ?? []).length, 2);
assert.match(workflow, /python3 -m venv \.venv/); assert.match(workflow, /python3 -m venv \.venv/);
assert.match(workflow, /python -m playwright install --with-deps chromium/); assert.match(workflow, /python -m playwright install --with-deps chromium/);
assert.match(workflow, /DOCKER_COMPOSE_VERSION: v2\.39\.1/);
assert.match(workflow, /docker-compose-linux-\$compose_arch/);
assert.match(workflow, /sha256sum -c -/);
assert.match(workflow, /docker compose version --short/);
assert.match(workflow, /docker compose --help \| grep -q -- '--project-name'/);
assert.equal((workflow.match(/npm test --prefix frontend/g) ?? []).length, 1); assert.equal((workflow.match(/npm test --prefix frontend/g) ?? []).length, 1);
assert.equal((workflow.match(/npm run lint --prefix frontend/g) ?? []).length, 1); assert.equal((workflow.match(/npm run lint --prefix frontend/g) ?? []).length, 1);
assert.equal((workflow.match(/npm run build --prefix frontend/g) ?? []).length, 1); assert.equal((workflow.match(/npm run build --prefix frontend/g) ?? []).length, 1);
+1
View File
@@ -6,3 +6,4 @@ ruff>=0.6.0
build>=0.9 build>=0.9
twine>=4.0 twine>=4.0
wheel>=0.40 wheel>=0.40
PyYAML>=6.0