当前位置: 首页 > news >正文

GitHub Actions 流水线注入敏感配置完整方案(Antora + Docker Compose)

核心安全准则

  1. 敏感信息全部存仓库 Secrets,绝不写代码、不提交.env
  2. 密钥只通过环境变量透传给容器,不落地明文文件;
  3. 日志自动掩码 Secrets,不会打印 Token/AK 明文;
  4. 构建完成无残留凭证。

一、第一步:存储敏感密钥(仓库 Secrets)

  1. 仓库 → Settings → Secrets and variables → Actions → New repository secret
  2. 添加你项目需要的密钥,示例清单:
    | Secret 名称 | 用途 |
    |------|------|
    | DOC_GIT_PAT | GitHub Personal Token,拉取私有 AsciiDoc 文档仓库 |
    | DOC_GIT_USER | 私有仓库用户名 |
    | DEPLOY_SITE_TOKEN | 静态站点部署密钥(如 Pages/OSS/CDN) |
    | DOCKER_REG_PWD | 私有镜像仓库密码(自定义 Antora 镜像才需要) |

二、两种注入方案(按需选择)

方案1:环境变量直接透传容器(推荐,无 .env 临时文件)

原理:Actions 读取 Secrets → 作为环境变量传给docker-compose run -e→ Antora 构建容器内直接读取,全程无磁盘明文。

1. 流水线文件.github/workflows/build-docs.yml
name:Build Antora Docson:push:branches:[main]pull_request:branches:[main]jobs:build:runs-on:ubuntu-lateststeps:-name:Checkout 构建工程代码(docker-compose/playbook等)uses:actions/checkout@v4-name:拉取文档源码私有仓库(可选,也可交给Antora内置Git拉取)uses:actions/checkout@v4with:repository:your-org/fortigate-doc-srcpath:docs-srctoken:${{secrets.DOC_GIT_PAT}}-name:使用Docker Compose构建文档env:# 把仓库Secrets注入当前Action环境变量GIT_DOC_USER:${{secrets.DOC_GIT_USER}}GIT_DOC_TOKEN:${{secrets.DOC_GIT_PAT}}TZ:Asia/Shanghairun:|# 将Action环境变量透传给Antora容器 docker-compose run --rm \ -e GIT_DOC_USER="$GIT_DOC_USER" \ -e GIT_DOC_TOKEN="$GIT_DOC_TOKEN" \ -e TZ="$TZ" \ antora-builder-name:上传构建产物(网页+PDF)uses:actions/upload-artifact@v4with:name:docs-outputpath:build-output/
2. antora-playbook.yml 读取容器内环境变量拉取私有仓库
content:sources:# 私有Git仓库,拼接Token鉴权-url:https://${GIT_DOC_USER}:${GIT_DOC_TOKEN}@github.com/your-org/fortigate-doc-src.gitbranches:HEADstart_path:docs

方案2:动态生成临时 .env(需要.env文件场景)

仅适合部分扩展工具必须读取.env文件的场景,构建后立刻删除,不会留存敏感文件:

run:|# 运行时临时生成.env,不提交仓库 cat > .env << EOFGIT_DOC_USER=$GIT_DOC_USER GIT_DOC_TOKEN=$GIT_DOC_TOKEN EOF docker-compose run--rm antora-builder# 构建完成立即销毁敏感文件rm-f .env

三、扩展场景:私有Docker镜像仓库鉴权

如果你自己打包 Antora 私有镜像,需要登录镜像仓库再构建:

-name:登录私有容器仓库env:DOCKER_USER:${{secrets.DOCKER_REG_USER}}DOCKER_PWD:${{secrets.DOCKER_REG_PWD}}run:|echo "$DOCKER_PWD" | docker login ghcr.io -u $DOCKER_USER --password-stdin

四、产物自动部署 GitHub Pages(完整发布链路)

构建出静态网页后,直接推送 GitHub Pages,部署密钥无需额外配置,使用内置GITHUB_TOKEN

-name:部署静态文档到 GitHub Pagesuses:peaceiris/actions-gh-pages@v4with:github_token:${{github.TOKEN}}publish_dir:./build-output/site

五、关键安全注意事项

  1. 禁止在日志打印密钥
    不要写echo $GIT_DOC_TOKEN,GitHub 会自动掩码 Secrets,但主动打印无意义且有风险。
  2. 不要将 .env 提交进仓库
    .gitignore必须包含.env,本地开发用的.env仅本地留存,不推远程。
  3. 细粒度 PAT 权限
    拉取私有文档仓库的 PAT 只赋予repo权限,不要给全局高权限。
  4. 不缓存构建目录
    Actions 默认不会缓存build-output,避免密钥意外存入缓存快照。
  5. 容器内禁止输出凭证
    adoc、PDF、网页产物中不要打印 Git Token、AK/SK 等敏感字段。

六、本地开发与CI区分小技巧

本地写文档时使用本地.env(不提交),CI流水线自动覆盖注入正式密钥,一套 compose 同时适配本地+线上流水线,无需修改配置。

http://www.zskr.cn/news/1527233.html

相关文章:

  • ArcMap启动卡死闪退?别急着重装!这5个亲测有效的修复方法帮你搞定(附详细步骤)
  • WPF DataGrid中的精细按钮控制
  • 从项目复盘到面试通关:我是如何用‘电源设计’项目拿下硬件Offer的
  • 拆解华为OD机试B卷新题库:从‘星际篮球’到‘猜字谜’,150+题背后的算法考点与复习路线图
  • 2026年沈阳名表回收市场格局解析:哪些机构值得关注? - 优质品牌商家
  • DIY四轴无人机硬件避坑指南:从MPU6050布线到电源模块设计的那些事儿
  • 地信/遥感专业转开发,面试官到底想听什么?——以天津测绘院24春招为例拆解求职策略
  • 告别黑屏!手把手教你用易至天工插件在ArcMap 10.8稳定加载谷歌影像(附离线文件加载技巧)
  • 给技术人的实验室认证扫盲贴:CNAS、CMA、CAL到底有啥区别?看完这篇就懂了
  • 2026年不锈钢管道修补器行业选择参考:多品牌维度分析与应用案例分享 - 优质品牌商家
  • 2026 中山管道疏通与异味治理机构精选 5 家 马桶 / 厨卫下水 / 地漏除臭服务参考 - 宅安选房屋修缮
  • 联想机器学习岗面试官亲述:我们如何在45分钟技术面里考察你的真实水平?
  • 车载以太网之要火系列 - 番外篇6:四十岁学艺不算晚,AI相伴破万难
  • 读懂AI Agent:颠覆当下AI格局,从被动聊天到主动帮你搞定一切
  • 软考高级系统架构师备考:信号量与PV操作常考题型的3种破解思路与避坑指南
  • RWKV 批量推理中 Prefill 的正确打开方式
  • Spring Cloud Alibaba 速成笔记,普通程序员必备!
  • 用 Gemini 3.5 Flash 做 Bug 排查和测试用例生成:一套适合开发者的 AI 辅助工作流
  • VCS dump波形的两种方式
  • 2024年算法竞赛日历:ICPC、CCPC、蓝桥杯、天梯赛全年备赛时间线(附CSP认证)
  • 第10篇:颜色系统与透明度
  • 实战分享:用Hook open()这招,轻松绕过Android App对/data/local/tmp的变态检测
  • 避开这些坑!UDS 0x2F服务开发中的NRC 13/22/31/33错误详解与排查指南
  • 2026 珠海管道疏通与异味治理机构精选 5 家 马桶 / 厨卫下水 / 地漏除臭服务参考 - 宅安选房屋修缮
  • 2026 北京十大猫舍犬舍测评排名|伴西西猫舍犬舍稳居榜首,新手购宠首选 - 同城宠物优选基地
  • ASTRAL 5.7.8 终极实战手册:从基因树混乱到物种树清晰的完整解决方案
  • ADB无线连接翻车实录:从‘无法连接:10061’到稳定调试,我踩了哪些坑?
  • 机器学习面试官最爱问的10个基础概念:从过拟合到集成学习,一次讲清
  • 2026嘉兴上门奢侈品回收机构综合实力排行 - 互联网科技品牌测评
  • 2026年常州真丝面料厂家电话最新汇总:产业链格局与采购评测指南 - 优质品牌商家