GitHub Actions构建Docker镜像
GitHub Actions是为GitHub上的项目添加CI / CD工作流的自动化工具。注意:在本文中,我们将讨论将CI / CD工作流程集成到使用Docker的项目中的各个步骤。在使用docker的项目中,我们将重点介绍GitHub动作配置-Docker的基本知识及其用途不在本文范围之内。
本教程假定您知道docker的工作原理,并有一个使用它的项目。确保您Dockerfile
在项目的根文件夹中。这里使用的示例项目是一个非常基本的项目,只有一个Python文件。完整的代码可以从github仓库中下载。
首先,我们将介绍在项目中配置GitHub操作所需的基本步骤。这对于在任何平台上运行的所有项目都是常见的。
1. 创建项目并添加workflow文件
显而易见的第一步是创建GitHub项目并将Flutter项目与存储库连接。应该能够在拉取请求旁边看到项目的新Actions 选项卡 。
GitHub为许多最受欢迎的平台提供了预定义的工作流,您还可以在可视化编辑器中自定义或创建全新的工作流。不过,在这个项目中,我们将采用手动方法命令创建YAML文件来使用工作流。
在Pytho项目的根文件夹中,创建一个新文件夹.github
并创建子文件夹workflows
。这是我们的工作流YAML文件所在的位置。
一个项目可以有多个工作流文件,例如构建,发行等,但是为了简单起见,我们将仅对该项目使用一个文件。main.yml
在工作流文件夹中创建一个名为的最终文件:
2. 编写流水线
现在,我们必须在main.yml文件中添加命令以执行所需的操作。这是的完整代码main.yml.
:
1 name: Build and Publish Docker
2 on: [push]
3 jobs:
4 build:
5 runs-on: ubuntu-latest
6 steps:
7 - uses: actions/aaa@qq.com
8 - name: Publish to Docker Repository
9 uses: elgohr/aaa@qq.com
10 with:
11 name: ispeakcode/docker-githubaction
12 username: ${{ secrets.DOCKER_USERNAME }}
13 password: ${{ secrets.DOCKER_PASSWORD }}
为了更好地理解,我们将仔细研究每一行及其用法:
line 1
:要显示在“actions”选项卡中的工作流的名称。
line 2
:当某人将代码推送到我们的仓库时,触发我们的工作流程。
lines 3–6
:我们正在定义一项持续进行的工作ubuntu-latest
。每个作业都在虚拟环境的新实例中运行。一份工作可以包含一个或多个steps
。
line 7
:这是我们工作流程的第一步。我们使用名为checkout的GitHub Action从存储库中提取源代码。该操作将您的存储库签出到$GITHUB_WORKSPACE
,以便您的工作流可以访问存储库的内容。
lines 8–9
:这里我们使用GitHub动作publish docker,它构建一个docker镜像并将其推送到docker hub。
lines 8–9
:这里我们定义了推送到docker hub所需的参数:
name是您要推送到docker hub的映像或存储库的名称。
username registry的登录用户名(docker hub用户名)。
password registry 的登录密码(docker hub密码)。
3. 添加秘钥
您可能会想知道:我们不能在yml文件中直接提及用户名和密码,因为这对安全性非常不利。因此,我们将这些凭据添加到我们项目的秘密中。要添加此代码,请转到您的项目的存储库设置/settings/secrets
。在“ 秘密”选项卡中,从工作流文件(*DOCKER_USERNAME*
和*DOCKER_PASSWORD*
)中添加具有相同名称的秘***,然后粘贴以下值:
就这样-提交您的代码并推送它。这将触发docker构建并自动推送映像-在几分钟之内,具体取决于您的项目大小。
4. 检查工作流执行和镜像
推送代码后,您可以通过以下步骤检查工作流的执行情况,/actions
并通过以下步骤查看图像:https://cloud.docker.com/repository/
推荐阅读
-
GitHub Actions构建Docker镜像
-
Docker学习笔记(三):DockerFile简介、DockerFile构建镜像、发布镜像
-
Springboot(十二)构建docker images镜像
-
SpringBoot+Docker实现项目的Maven打包&镜像构建&容器中运行==简单自动化部署
-
Docker教程(四) Docker镜像构建
-
构建docker镜像基本教程
-
Docker从零构建php-nginx-alpine镜像
-
使用 docker buildx 构建多 CPU 架构镜像
-
浅谈使用Maven插件构建Docker镜像的方法
-
浅谈使用Maven插件构建Docker镜像的方法