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/checkout@master 8 - name: Publish to Docker Repository 9 uses: elgohr/Publish-Docker-Github-Action@master 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/
