树洞剪藏#剪藏#树洞剪藏

别再本地 docker build 了!教你用 GitHub Actions 搭建全自动流水线,真香

2025 年 12 月 22 日1 分钟
分享Twitter / XTelegram微博
别再本地 docker build 了!教你用 GitHub Actions 搭建全自动流水线,真香 封面

同步来源:树洞剪藏 源站剪藏 ID:627 原文地址:https://mp.weixin.qq.com/s?__biz=MzIxODI1MzYyNQ==&mid=2247487555&idx=1&sn=1489ea40871d1e7f227c324b2d2a20e0&chksm=964ab4afd2c42c406728a83c8bdcacd45eed4783a73f0f4c97a9aad42c2c86a3864d8423fe47&mpshare=1&scene=1&srcid=1222x0zeokYWEq7S027EgUGu&sharer_shareinfo=3cddd9791c265fc82af2cc9b64da8c9c&sharer_shareinfo_first=3cddd9791c265fc82af2cc9b64da8c9c#rd

打开原文 · 打开源站剪藏快照


别再本地 docker build 了!教你用 GitHub Actions 搭建全自动流水线,真香

set 限制解除

别再本地 docker build 了!教你用 GitHub Actions 搭建全自动流水线,真香

原创

小明同学的笔记

小明同学的笔记

2025年12月19日 12:04 陕西

(摘要/推荐语:写完代码还要守着电脑等打包?上传镜像还要忍受家里的小水管?今天教你一招,把这些脏活累活全扔给 GitHub 免费帮你干。建议收藏实操。) 说实话,你是不是也经历过这种“垃圾时间”: 代码终于写完了,兴冲冲地在本地终端敲下 docker build ,然后…… 电脑风扇开始狂转,CPU 温度飙升,你甚至不敢切出去看视频,生怕卡顿。好不容易构建完了,还要 docker push ,盯着那个慢吞吞的进度条,祈祷网络别断。 这一套流程下来,少说十几二十分钟没了。如果中间发现有个标点符号写错了?好家伙,推倒重来。 这就叫“被工具玩了”,而不是“玩工具”。 今天我要给大家安利一个我用了很久、相见恨晚的神器组合: GitHub Actions + Docker Hub 。 简单说,就是把“构建”和“上传”这两件费时费力的事,从你的本地电脑,转移到 GitHub 的服务器上去做。 Github Action 是 Github 推出的一个持续集成和持续交付的平台,能够让你自动化你的编译、测试和部署流程。 重点是:它完全免费,速度飞快,而且全自动。 这就好比你写好菜谱(代码),不用自己进厨房(本地构建),直接把菜谱扔给微软请的免费大厨(GitHub Actions),他做好了直接端上桌(发布到 Docker Hub)。 怎么搞?我不整那些虚头巴脑的概念,直接上实操,保姆级教程,包教包会。 第一步:准备好你的“菜谱”和“厨房” 首先,你得有个 GitHub 账号,和一个 Docker Hub 账号(存镜像的地方)。 在你的 GitHub 项目里,必须得有一个 Dockerfile 。这个大家都懂,就是告诉机器怎么打包你的程序。 第二步:把“钥匙”交给 GitHub(关键!) 这是很多新手最容易卡住的地方。 你要让 GitHub 帮你上传镜像,你得给它权限,但你肯定不能把密码直接写在代码里吧?那样全世界都看见了。 正确做法是这样: 1.打开你的 GitHub 仓库,点击 Settings (设置)。

2.找到左侧的 Secrets and variables -> Actions 。

3.点击 New repository secret 。

我们需要添加两个“暗号”:

DOCKER_USERNAME :填你的 Docker Hub 用户名。

DOCKER_PASSWORD :填你的 Docker Hub 密码(或者 Access Token,建议用 Token 更安全)。

这样,GitHub 就在后台悄悄记住了你的身份,别人看代码是绝对看不到的。 第三步:告诉保姆“该干活了” 接下来,我们要写一个脚本,告诉 GitHub: “嘿,只要我更新了代码,你就立刻帮我干活!” 在你的项目根目录下,建立一个文件夹: .github/workflows (注意前面的点)。 在里面新建一个文件,名字随便取,比如 docker-publish.yml 。 复制下面这段代码进去(虽然是代码,但很好懂,我加了人话注释): YAML

name: Build and Push Docker Image

on: push: branches: [ master ] # 构建的分支,可以根据需要修改 pull_request: branches: [ master ] # 触发构建的分支,可以根据需要修改 workflow_dispatch: # 添加 workflow_dispatch 事件,支持手动触发

jobs: build: name: Push Docker image to multiple registries runs-on: ubuntu-latest

显式声明权限,遵循最小权限原则

permissions: packages: write # 推送镜像到 GHCR contents: read # 读取源码 attestations: write # 写入构建证明 id-token: write # OIDC 认证,用于签名 steps:

1. 检出代码

  • name: Check out the repo uses: actions/checkout@v4

2. 安装 QEMU (支持 ARM64 等多架构)

  • name: Set up QEMU uses: docker/setup-qemu-action@v3

3. 初始化 Buildx (使用 docker-container 驱动)

  • name: Set up Docker Buildx uses: docker/setup-buildx-action@v3

4. 登录 Docker Hub

  • name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }}

5. 登录 Registry

  • name: Log in to the Container registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }}

6. 生成元数据 (Tags & Labels)

  • name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | jumploop/webssh # Docker Hub仓库名称 ghcr.io/${{ github.repository }} tags: | latest ${{ github.sha }}

7. 构建并推送 (核心步骤)

  • name: Build and push Docker images id: push uses: docker/build-push-action@v6 with: context: . file: ./Dockerfile push: true platforms: linux/amd64,linux/arm64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}

8. 镜像签名与证明 (增强安全性)

  • name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: ghcr.io/${{ github.repository }} subject-digest: ${{ steps.push.outputs.digest }} push-to-registry: true

第四步:见证奇迹 保存,提交代码,Push 到 GitHub。 现在,你可以关掉终端,去倒杯咖啡,或者刷刷手机。 打开 GitHub 仓库的 Actions 标签页,你会看到一个小绿点在转圈。点进去,你会发现 GitHub 的服务器正在疯狂为你通过云端宽带拉取依赖、编译代码。

通常几分钟后,那个圈圈变成绿色的对号。

这时候你去 Docker Hub 刷新一下,崭新的镜像已经躺在那儿了。

写在最后 为什么要折腾这个? 除了省电省网费,更重要的是它能让你 养成“自动化”的思维 。 以后无论你在哪里,用着多烂的电脑,甚至是用 iPad 写代码,只要你把代码往 GitHub 一推,云端的流水线就开始自动运转。 等哪天服务器挂了,你只需要一条拉取命令就能恢复,而不是满头大汗地在本地重新打包。 把重复的工作交给机器,把时间留给自己。 这才是程序员该有的“偷懒”方式。 趁热打铁,现在就去给你的项目加个 Actions 吧,那种看着绿灯自动亮起的感觉,真的很爽。

小明同学的笔记 分享好玩有用的技术,共同进步! 139篇原创内容

公众号 ,

预览时标签不可点

小明同学的笔记

微信扫一扫赞赏作者 喜欢作者

关闭

0人付费 更多

正在加载...

关闭

更多

系统错误,请稍后重试

返回 其它金额 更多

赞赏金额 ¥ 最低赞赏 ¥0

1 2 3 4 5 6 7 8 9 0 .

关闭

更多

搜索「」网络结果

当前内容可能存在未经审核的第三方商业营销信息,请确认是否继续访问。

继续访问 取消 微信公众平台广告规范指引

小明同学的笔记

赞 分享 推荐 写留言

: , , , , , , , , , , , , 。

视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看 分享 留言 收藏 听过

可在「公众号 > 右上角 > 划线」找到划线过的内容

我知道了

留言

关闭

更多

关闭

确认提交投诉

你可以补充投诉原因(选填)

确定

文档下载

导出为Markdown

下载

导出为Word

下载

相关文章