* LICENSE —— MIT
* THIRD-PARTY-NOTICES —— 依赖清单、再分发合规说明(含随仓库分发的
Apache ECharts 5.6.0 / Apache-2.0)与自查清单
* CONTRIBUTING.md —— 开发环境、五层验证、必须遵守的不变量、提交规范
* SECURITY.md —— 漏洞私有报告渠道、已有措施、已知非目标
* CODE_OF_CONDUCT.md —— 改编自 Contributor Covenant 2.1
* .github/ —— Bug 报告 / 功能建议表单 + PR 模板
* .editorconfig —— 与 .gitattributes 保持一致
* 全部 Python / Shell 源文件加 SPDX-License-Identifier: MIT 头
* README 增加「开源与许可」章节与许可标识
61 行
2.2 KiB
Bash
可执行文件
61 行
2.2 KiB
Bash
可执行文件
#!/bin/sh
|
||
# SPDX-License-Identifier: MIT
|
||
# Copyright (c) 2026 Wang Chuanli
|
||
|
||
# =============================================================================
|
||
# 用 Gitea Access Token 一次性完成:推代码 + 推镜像
|
||
#
|
||
# export GITEA_TOKEN=<在 Gitea「设置 → 应用 → 生成令牌」创建,勾 repo + write:package>
|
||
# tools/push-all.sh # 推 main + 镜像 latest
|
||
# tools/push-all.sh 1.1.0 # 额外打一个版本 tag 并推送
|
||
#
|
||
# 设计要点:
|
||
# * Token **只从环境变量读**,绝不写进 .git/config、URL 或任何文件。
|
||
# * 用 `-c credential.helper=` 屏蔽已配置的凭据助手(GCM),
|
||
# 否则在非交互会话里 GCM 会挂住等弹窗(连 /dev/tty 都拿不到,直接失败)。
|
||
# * 用 `http.extraHeader` 传 Basic 认证,比把 token 拼进 URL 更安全
|
||
# (不会落到 reflog / 进程列表里)。
|
||
# * git.iwali.top 有 Let's Encrypt 通配证书,**HTTPS 可用**,
|
||
# 所以镜像不需要配 insecure-registries。
|
||
# =============================================================================
|
||
set -eu
|
||
|
||
HOST="${GITEA_HOST:-git.iwali.top}"
|
||
USER="${GITEA_USER:-wangchuanli}"
|
||
REPO="${GITEA_REPO:-workbuddy-portal}"
|
||
BRANCH="${GITEA_BRANCH:-main}"
|
||
TAG="${1:-}"
|
||
IMAGE="$HOST/$USER/$REPO"
|
||
|
||
: "${GITEA_TOKEN:?请先 export GITEA_TOKEN=<Gitea Access Token(repo + write:package)>}"
|
||
|
||
cd "$(dirname "$0")/.."
|
||
|
||
# ---------- 1. 推代码 ----------
|
||
echo "==> 推送代码到 https://$HOST/$USER/$REPO.git ($BRANCH)"
|
||
AUTH="$(printf '%s:%s' "$USER" "$GITEA_TOKEN" | base64 | tr -d '\r\n')"
|
||
git -c credential.helper= \
|
||
-c http.extraHeader="Authorization: Basic $AUTH" \
|
||
push -u origin "$BRANCH"
|
||
|
||
# ---------- 2. 构建镜像 ----------
|
||
echo "==> 构建镜像 $IMAGE:latest"
|
||
docker compose build
|
||
|
||
# ---------- 3. 登录并推镜像 ----------
|
||
echo "==> 登录 $HOST"
|
||
printf '%s' "$GITEA_TOKEN" | docker login "$HOST" -u "$USER" --password-stdin
|
||
|
||
echo "==> 推送 $IMAGE:latest"
|
||
docker push "$IMAGE:latest"
|
||
|
||
if [ -n "$TAG" ]; then
|
||
echo "==> 打版本标签并推送 $IMAGE:$TAG"
|
||
docker tag "$IMAGE:latest" "$IMAGE:$TAG"
|
||
docker push "$IMAGE:$TAG"
|
||
fi
|
||
|
||
echo
|
||
echo "完成。其他机器拉取:"
|
||
echo " docker pull $IMAGE:${TAG:-latest}"
|