⏰ 自动更新源码发布容器
👉 自动更新源码发布容器
[ Releases ] 👈
DockerHub
·
Action
·
提出新特性
| 项目 | 类别 | Repo | Action | 状态 | 统计 | 入口 |
|---|---|---|---|---|---|---|
| 3x-ui | Docker | 🚩 | 🍕 | ✔ | ||
| Admin.NET | 镜像库 | 🚩 | 🍕 | ✔ | ||
| OpenWRT | Build | 🚩 | 🍕 | ✔ | ||
| WarpPlus-Traffic | Task | 🚩 | 🍕 | ✔ | ||
| WarpPlus-Docker | Docker | 🚩 | 🍕 | ✔ |
ActionBot 是一个监听自动化执行项目,支持两种运行模式:
- Trigger 模式(默认):检测当前仓库下的
Workflow并自动根据条件批量触发它们 - Check 模式:单个工作流内独立检查源仓库更新,若无更新则自动取消当前工作流运行
可用于跨平台(GitHub <-> Gitee)同步仓库、自动发布Releases、编译Docker和定时任务等;对于一些没有提供适合自己的容器或应用进行二次独立发布Demo。
steps:
- name: Checkout
uses: actions/checkout@v4
- name: AutoTrigger
uses: bigbugcc/ActionBot@maincron 定时触发后,自动抓取源仓库最新 commitId 并与缓存比对;若一致则直接取消当前工作流,若不一致则继续执行后续步骤。
name: 3x-ui-Docker
on:
schedule:
- cron: '0 */6 * * *'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check for updates
uses: bigbugcc/ActionBot@main
with:
mode: 'check'
repo_url: 'https://github.com/MHSanaei/3x-ui'
branch: 'main'
# 以下步骤仅在源仓库有更新时执行,无更新时工作流已被自动取消
- name: Build and Push Docker
run: |
echo "Source updated, building..."| 参数 | 说明 | 必填 | 默认值 |
|---|---|---|---|
token |
用于认证的 GitHub Token | ✅ | ${{ github.token }} |
repository |
仓库名称 | ✅ | ${{ github.repository }} |
workflow |
当前工作流名称 | ✅ | ${{ github.workflow }} |
workspace |
当前仓库工作目录 | ✅ | ${{ github.workspace }} |
mode |
运行模式:trigger(批量触发)/ check(单工作流检查) |
❌ | trigger |
repo_url |
监听的仓库地址(check 模式使用) | ❌ | '' |
branch |
监听的分支名称,空则为仓库默认分支 | ❌ | '' |
| 输出 | 说明 |
|---|---|
updated |
源仓库是否有更新 true / false(仅 check 模式) |
env:
repo_url: ''
force_active: 1- repo_url : 监听的仓库地址,根据该地址判断commitId是否变化,而触发当前
Workflow;可以为空。 - force_active :
0,1,2
0-> 默认值,会根据repo的值进行判断;
1-> 强制执行当前Workflow,不判断CommitId;
2-> 跳过执行,即使Repo不为空也会直接跳过;
- 手动执行 workflow 时,
version_tag可填写官方正式版本 tag(vX.Y.Z或X.Y.Z);留空或填写latest时,通过官方 latest Release 选择最新正式版,不构建main。输入不存在的 tag、分支或 commit 会在构建前失败。 - 镜像标签跟随官方版本,例如
bigbugcc/3x-ui:v3.9.0和bigbugcc/3x-ui:3.9.0。所选版本为官方最新正式版时同时发布latest;手动编译历史版本不会覆盖latest,也不会将该次 Release 设为最新。 - 自动触发通过
repo_release: latest跟踪官方正式发布及其 tag 的源码 SHA;普通main提交不再触发 3x-ui 编译。自动触发会将检测到的版本传入version_tag。 - 构建先将官方 tag(包括 annotated tag)解析为固定 commit,再检出并核对 SHA。镜像 labels、Release 说明和
source.json记录实际官方版本和源码 SHA;面板沿用官方版本信息。 - 构建首先推送唯一临时标签
build-<run_id>-<attempt>;五个平台校验和离线包导出成功后,才将同一镜像 digest 发布到对外标签,并核对发布后的 digest。校验失败不会更新latest或版本标签;Release 上传失败时已发布镜像仍然有效。 - 镜像与 Release 发布成功后,按 Docker Hub 标签推送时间保留最近 10 个版本标签(
vX.Y.Z和X.Y.Z分别计数,通常约 5 个版本),latest额外保留;重编历史版本按本次推送时间计入。清理同时删除本次成功构建的临时标签和本次构建开始前遗留的build-*标签,其他标签(如dev、sha-*)保留。删除按标签名执行,不直接删除共享 digest;GitHub Release 和离线包不受影响。 - 清理复用
DOCKERHUB_USERNAME、DOCKERHUB_TOKEN,其中 token 必须有 Read, Write, Delete 权限(Docker PAT 文档)。API 失败或标签列表不完整时停止清理并发出警告,已发布的镜像与 Release 仍有效;可能已完成部分删除,下次成功发布会再次清理。可修改 workflow 的keep_version_tags调整数量,或执行python3 bin/3x-ui/cleanup_tags.py --repo bigbugcc/3x-ui --keep 10只读预览版本标签清理计划。 - 源码 commit 时间和实际 workflow 运行时间分别记录于镜像 labels、
source.json和 Release 说明。 - 支持
linux/386、linux/amd64、linux/arm64/v8、linux/arm/v7、linux/arm/v6。各平台都提供.tar.gz离线镜像,下载后先执行sha256sum -c SHA256SUMS,再用gzip -dc 3x-ui-ARCH-VERSION.tar.gz | docker load导入;导入后的标签为bigbugcc/3x-ui:VERSION-ARCH,其中 ARCH 为386、amd64、arm64、armv7或armv6。 - 构建沿用所选官方 tag 的 Dockerfile,应用上海时区、架构映射和缓存分层补丁;上游结构变化时会明确失败,避免静默打包错误。缓存保留编译层,Xray、MTG 和规则资源在每次构建时重新下载。
Docker Usage
docker run -itd \
-e XRAY_VMESS_AEAD_FORCED=false \
-v $PWD/db/:/etc/x-ui/ \
-v $PWD/cert/:/root/cert/ \
--network=host \
--restart=unless-stopped \
--name 3x-ui \
bigbugcc/3x-ui:latest上述示例跟随官方最新正式版;固定版本时,将镜像标签改为所需的官方 tag,例如 v3.9.0。
- Port: 2053
- TimeZone: Asia/Shanghai
- Username & Password: It will be generated randomly if you skip modifying.
- Database Path:
- /etc/x-ui/x-ui.db
- Xray Config Path:
- /usr/local/x-ui/bin/config.json
- Web Panel Path w/o Deploying SSL:
- Web Panel Path w/ Deploying SSL:
Repo:https://github.com/bigbugcc/ActionBot
warp-plus:https://github.com/bepass-org/warp-plus
- Port: 1080
- Warp Config Path:
- /etc/warp/config.json
/etc/warp/config.json
NAME
warp-plus
FLAGS
-4 only use IPv4 for random warp endpoint
-6 only use IPv6 for random warp endpoint
-v, --verbose enable verbose logging
-b, --bind STRING socks bind address (default: 127.0.0.1:8086)
-e, --endpoint STRING warp endpoint
-k, --key STRING warp key
--dns STRING DNS address (default: 1.1.1.1)
--gool enable gool mode (warp in warp)
--cfon enable psiphon mode (must provide country as well)
--country STRING psiphon country code (valid values: [AT BE BG BR CA CH CZ DE DK EE ES FI FR GB HR HU IE IN IT JP LV NL NO PL PT RO RS SE SG SK UA US]) (default: AT)
--scan enable warp scanning
--rtt DURATION scanner rtt limit (default: 1s)
--cache-dir STRING directory to store generated profiles
--tun-experimental enable tun interface (experimental)
--fwmark UINT set linux firewall mark for tun mode (default: 4981)
--reserved STRING override wireguard reserved value (format: '1,2,3')
--wgconf STRING path to a normal wireguard config
-c, --config STRING path to config file
--version displays version numberModify config '/etc/warp/config.json'
docker run -itd \
-v /etc/warp/:/etc/warp/ \
--network=host \
--restart=unless-stopped \
--name warp-plus \
bigbugcc/warp-plus:latest