返回 CodeWhale
cnb.yml.example
根目录 / deploy / tencent-lighthouse / cnb / cnb.yml.example
1 # Historical CNB config template for the Tencent Lighthouse remote-first path.
2 # The active pipeline now lives in the repository-root .cnb.yml so the GitHub
3 # -> CNB one-way mirror cannot overwrite CNB-only pipeline edits.
4
5 main:
6 push:
7 - docker:
8 image: node:22-bookworm
9 stages:
10 - name: feishu bridge tests
11 script: |
12 cd integrations/feishu-bridge
13 npm install
14 npm run check
15 npm test
16
17 - docker:
18 image: rust:1.88-bookworm
19 stages:
20 - name: release version check
21 script: |
22 ./scripts/release/check-versions.sh
23
24 web_trigger_lighthouse:
25 - docker:
26 image: cnbcool/default-build-env:latest
27 stages:
28 - name: deploy to lighthouse
29 script: |
30 set -euo pipefail
31
32 : "${LIGHTHOUSE_HOST:?Set LIGHTHOUSE_HOST in CNB secrets}"
33 : "${LIGHTHOUSE_SSH_TARGET:?Set LIGHTHOUSE_SSH_TARGET in CNB secrets}"
34 : "${LIGHTHOUSE_SSH_PRIVATE_KEY:?Set LIGHTHOUSE_SSH_PRIVATE_KEY in CNB secrets}"
35
36 if ! command -v ssh >/dev/null 2>&1 || ! command -v ssh-keyscan >/dev/null 2>&1; then
37 apt-get update
38 apt-get install -y openssh-client
39 fi
40
41 LIGHTHOUSE_SSH_PORT="${LIGHTHOUSE_SSH_PORT:-22}"
42 CODEWHALE_REPO_BRANCH="${CODEWHALE_REPO_BRANCH:-main}"
43 CODEWHALE_REPO_URL="${CODEWHALE_REPO_URL:-https://cnb.cool/codewhale.net/codewhale.git}"
44
45 install -m 700 -d ~/.ssh
46 printf '%s\n' "$LIGHTHOUSE_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
47 chmod 600 ~/.ssh/id_ed25519
48 ssh-keyscan -p "$LIGHTHOUSE_SSH_PORT" -H "$LIGHTHOUSE_HOST" >> ~/.ssh/known_hosts
49
50 ssh -p "$LIGHTHOUSE_SSH_PORT" "$LIGHTHOUSE_SSH_TARGET" \
51 "CODEWHALE_REPO_BRANCH='$CODEWHALE_REPO_BRANCH' CODEWHALE_REPO_URL='$CODEWHALE_REPO_URL' bash -s" <<'REMOTE'
52 set -euo pipefail
53
54 if [ ! -d /opt/whalebro/codewhale/.git ]; then
55 sudo -u codewhale git clone --branch "$CODEWHALE_REPO_BRANCH" "$CODEWHALE_REPO_URL" /opt/whalebro/codewhale
56 fi
57
58 cd /opt/whalebro/codewhale
59 if [ -n "$(sudo -u codewhale git status --porcelain)" ]; then
60 echo "Refusing to deploy over a dirty /opt/whalebro/codewhale checkout." >&2
61 sudo -u codewhale git status --short
62 exit 1
63 fi
64
65 sudo -u codewhale git fetch --all --tags
66 if sudo -u codewhale git rev-parse --verify --quiet "refs/remotes/origin/$CODEWHALE_REPO_BRANCH" >/dev/null; then
67 sudo -u codewhale git checkout -B "$CODEWHALE_REPO_BRANCH" "origin/$CODEWHALE_REPO_BRANCH"
68 elif sudo -u codewhale git rev-parse --verify --quiet "refs/tags/$CODEWHALE_REPO_BRANCH" >/dev/null; then
69 sudo -u codewhale git checkout --detach "$CODEWHALE_REPO_BRANCH"
70 else
71 sudo -u codewhale git checkout "$CODEWHALE_REPO_BRANCH"
72 sudo -u codewhale git pull --ff-only
73 fi
74
75 sudo -iu codewhale bash -lc '
76 set -euo pipefail
77 . "$HOME/.cargo/env"
78 cd /opt/whalebro/codewhale
79 cargo install --path crates/cli --locked --force
80 cargo install --path crates/tui --locked --force
81 '
82
83 sudo bash scripts/tencent-lighthouse/install-services.sh
84 sudo systemctl restart codewhale-runtime
85 sudo systemctl restart codewhale-feishu-bridge
86 sudo bash scripts/tencent-lighthouse/doctor.sh
87 REMOTE
88
88 lines Plain Text