Compare commits
95 Commits
codex/cicd
...
codex/grow
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15c62b04dc | ||
|
|
420a086f3b | ||
|
|
715f901331 | ||
|
|
cf58531ec7 | ||
|
|
0e8ef28c8a | ||
|
|
f64aa93f64 | ||
|
|
e56c613399 | ||
|
|
a301bef7fe | ||
|
|
25f4029df1 | ||
|
|
4e2f37ecf4 | ||
|
|
ca0cadef24 | ||
|
|
c0182b28bf | ||
|
|
5278ef080e | ||
|
|
a9bf72c87a | ||
|
|
9a5428ff4e | ||
|
|
72db3629c1 | ||
|
|
de0d63609a | ||
|
|
7a5bee7b08 | ||
|
|
963a02a92b | ||
|
|
4d7c9796db | ||
|
|
671c39c54a | ||
|
|
4bc5be6d2f | ||
|
|
c15c800e5d | ||
|
|
1e4221de6a | ||
|
|
99645b42cf | ||
|
|
28a554e4f8 | ||
|
|
8897a76592 | ||
|
|
fa94c31c34 | ||
|
|
00da7b62b5 | ||
|
|
2022e27af6 | ||
|
|
b1ceaac431 | ||
|
|
c6350791b0 | ||
|
|
ab68fec9ed | ||
|
|
15a2914001 | ||
|
|
3c142c1950 | ||
|
|
5cdf1403bf | ||
|
|
4bfb9dbefd | ||
|
|
2dcc2122c4 | ||
|
|
8ef25db9bd | ||
|
|
8af5cf3d54 | ||
|
|
f55a257766 | ||
|
|
3023918d61 | ||
|
|
097b3ebdb8 | ||
|
|
e7fd82111c | ||
|
|
bd5350349d | ||
|
|
2e46ee4722 | ||
|
|
779f436e01 | ||
|
|
b120230cae | ||
|
|
99bb867e05 | ||
|
|
c8aef34302 | ||
|
|
b9e4948f99 | ||
|
|
08198c290d | ||
|
|
ff47ddf02f | ||
|
|
c7906d5b80 | ||
|
|
f9c77343f3 | ||
|
|
2c167cd396 | ||
|
|
603352b88a | ||
|
|
48830d01d0 | ||
|
|
05d1b69984 | ||
|
|
2f8e54f31f | ||
|
|
107d8ed797 | ||
|
|
9125afc8a7 | ||
|
|
e80e146fa2 | ||
|
|
97ab6ea070 | ||
|
|
2bbb1e8e8b | ||
|
|
d6aeb76c4b | ||
|
|
6b8bd8bb05 | ||
|
|
cd12e48505 | ||
|
|
9bfbcf94ce | ||
|
|
d0b14577cb | ||
|
|
e2c8baf7ea | ||
|
|
8877261ae4 | ||
|
|
edd5157496 | ||
|
|
08ed67eee4 | ||
|
|
4775743f2a | ||
|
|
905667ff4c | ||
|
|
39d9918f12 | ||
|
|
4982819493 | ||
|
|
199c857353 | ||
|
|
83f6d2e255 | ||
|
|
c491723961 | ||
|
|
9c7eb6f895 | ||
|
|
2059ab3cc2 | ||
|
|
9cf8b55b72 | ||
|
|
bed3a8a8ee | ||
|
|
d1ca067054 | ||
|
|
c82bfc1835 | ||
|
|
ab07eb903d | ||
|
|
55ce12e6b0 | ||
|
|
e34c9d777b | ||
|
|
a72713af1e | ||
|
|
1bbf73a176 | ||
|
|
cc3c0697a7 | ||
|
|
df5593c1fb | ||
|
|
079832f2a4 |
@@ -60,66 +60,13 @@ on:
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
# Gitea 1.25 不可靠執行 workflow concurrency;root selector 會在 deploy
|
||||
# 前以 main tip 做 coalescing。不要中途取消 rsync / migration。
|
||||
# 新 push 立即取消舊 job,只部署最新版本
|
||||
concurrency:
|
||||
group: cd-deploy-${{ gitea.ref }}
|
||||
cancel-in-progress: false
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
select-latest-carrier:
|
||||
runs-on: ewoooc-host
|
||||
timeout-minutes: 3
|
||||
outputs:
|
||||
selected: ${{ steps.carrier.outputs.selected }}
|
||||
source_sha: ${{ steps.carrier.outputs.source_sha }}
|
||||
latest_sha: ${{ steps.carrier.outputs.latest_sha }}
|
||||
steps:
|
||||
- name: Select latest main carrier
|
||||
id: carrier
|
||||
env:
|
||||
GITEA_TOKEN: ${{ gitea.token }}
|
||||
GITEA_SERVER_URL: ${{ gitea.server_url }}
|
||||
GITEA_REPOSITORY: ${{ gitea.repository }}
|
||||
GITEA_SHA: ${{ gitea.sha }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
: "${GITEA_TOKEN:?missing Gitea token}"
|
||||
: "${GITEA_SERVER_URL:?missing Gitea server URL}"
|
||||
: "${GITEA_REPOSITORY:?missing Gitea repository}"
|
||||
[[ "${GITEA_SHA}" =~ ^[0-9a-f]{40}$ ]] || {
|
||||
echo "BLOCKER ewoooc_cd_source_sha_invalid"
|
||||
exit 1
|
||||
}
|
||||
sleep "${EWOOOC_CD_CARRIER_DEBOUNCE_SECONDS:-15}"
|
||||
source_url="${GITEA_SERVER_URL%/}/${GITEA_REPOSITORY}.git"
|
||||
auth_header="Basic $(printf 'x-access-token:%s' "${GITEA_TOKEN}" | base64 | tr -d '\n')"
|
||||
latest_sha="$(
|
||||
GIT_CONFIG_COUNT=1 \
|
||||
GIT_CONFIG_KEY_0=http.extraHeader \
|
||||
GIT_CONFIG_VALUE_0="Authorization: ${auth_header}" \
|
||||
git \
|
||||
ls-remote --heads "${source_url}" refs/heads/main | awk 'NR == 1 {print $1}'
|
||||
)"
|
||||
unset auth_header GITEA_TOKEN
|
||||
[[ "${latest_sha}" =~ ^[0-9a-f]{40}$ ]] || {
|
||||
echo "BLOCKER ewoooc_cd_main_tip_unresolved"
|
||||
exit 1
|
||||
}
|
||||
selected=false
|
||||
status=superseded_by_latest_main_carrier
|
||||
if [ "${GITEA_SHA}" = "${latest_sha}" ]; then
|
||||
selected=true
|
||||
status=selected_latest_main_carrier
|
||||
fi
|
||||
echo "selected=${selected}" >> "${GITHUB_OUTPUT}"
|
||||
echo "source_sha=${GITEA_SHA}" >> "${GITHUB_OUTPUT}"
|
||||
echo "latest_sha=${latest_sha}" >> "${GITHUB_OUTPUT}"
|
||||
echo "EWOOOC_CD_CARRIER status=${status} source=${GITEA_SHA} latest=${latest_sha}"
|
||||
|
||||
deploy:
|
||||
needs: [select-latest-carrier]
|
||||
if: ${{ needs.select-latest-carrier.outputs.selected == 'true' }}
|
||||
timeout-minutes: 20
|
||||
runs-on: ewoooc-host
|
||||
|
||||
@@ -239,16 +186,7 @@ jobs:
|
||||
# rsync --inplace 避免 app.py/config.py 單檔 bind mount 因 inode replacement 卡住舊版本
|
||||
- name: 安裝 rsync / ssh
|
||||
run: |
|
||||
missing=()
|
||||
command -v rsync >/dev/null 2>&1 || missing+=(rsync)
|
||||
command -v ssh >/dev/null 2>&1 || missing+=(openssh-client)
|
||||
if [ "${#missing[@]}" -eq 0 ]; then
|
||||
echo "ewoooc_deploy_tools_ready=1 install_performed=0"
|
||||
else
|
||||
apt-get update -qq
|
||||
apt-get install -y -qq "${missing[@]}"
|
||||
echo "ewoooc_deploy_tools_ready=1 install_performed=1"
|
||||
fi
|
||||
apt-get update -qq && apt-get install -y -qq rsync openssh-client
|
||||
|
||||
- name: AI 觀測台 Pre-deploy 靜態 QA
|
||||
if: steps.observability_qa.outputs.needed == 'true'
|
||||
|
||||
Reference in New Issue
Block a user