在github上使用workflow构建docker镜像并推送阿里云

Published on 2021-05-13 10:41 in 分类: 博客 with 狂盗一枝梅
分类: 博客

本篇文章将会简单讲解如何使用github Actions功能构建workflow并且打包java程序docker镜像,最后推送到阿里免费的docker镜像仓库中。

一、注册阿里云账号,使用容器镜像服务

注册阿里云账号完成之后,在dashboard中搜索“容器镜像服务”关键字

image-20210513095921439

打开该页面,默认页面是这样

image-20210513100222305

个人版是免费的,点进去

image-20210513100348822

根据官网描述,可以免费创建3个命名空间和300个镜像仓库,对于个人开发者而言,这绝对是足够用的。

点击“访问凭证”按钮,设置固定密码

image-20210513100541072

记住账号密码待会儿会在github中用到。接下来创建命名空间。

image-20210513100823889

自动创建仓库选项:当开启自动创建后,可以在控制台仓库不存在的情况下,直接推送,系统会自动创建对应的仓库。

默认仓库类型:命名空间可以选择公开或者私有,当你开启“自动创建仓库”功能时,这个配置才有作用。这个配置将决定系统帮你创建的仓库默认是公开还是私有。

最后一步:创建仓库,这一步很重要,要特别注意

image-20210513101222122

在这一步中会确定下来仓库的类型是公开还是私有,填完相关信息点击下一步进入“代码源”页面,这里使用的是github,所以要先进行github授权,授权完成后选定github对应的项目,最后取消“代码变更自动构建镜像”选项框,勾选“海外机器构建”选项框(因为github在海外,如果不选择这个,我尝试了下,推送镜像的时候会非常慢)。

image-20210513102008506

这样,就完成了阿里云上相关的设置。

我用以上步骤创建了"xxl-job-admin"公开的镜像仓库

image-20210513102251867

二、github创建workflow

https://github.com/kdyzm/xxl-job 这个项目是我克隆的xxljob的官方项目,基于2.3.0版本修改了些东西最终新增了2.4.1版本,相关的修改可以参考我之前的文章:xxl-job滥用netty导致的问题和解决方案。我计划打包docker镜像并且以容器方式运行,所以第一步,就是要将程序打包并且构建docker镜像,最终推送阿里云。

1.创建workflow

在项目根目录创建.github目录,然后在里面创建workflows子目录,子目录中创建docker-image.yml文件,文件内容如下

name: Docker Image CI
on:
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Build with Maven
        run: mvn clean package -DskipTests

      - name: Build the Docker image
        run: |
          docker version
          # 登录阿里云镜像仓库
          docker login --username=${{ secrets.DOCKER_USERNAME }} --password=${{ secrets.DOCKER_PASSWORD }} registry.cn-hangzhou.aliyuncs.com
          cd xxl-job-admin
          # 使用Dockerfile构建镜像
          docker build . --file Dockerfile --tag registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1
          # 推送镜像到镜像仓库
          docker push registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1

其中有两个环境变量secrets.DOCKER_USERNAMEsecrets.DOCKER_PASSWORD,之前提到的账号密码,需要在运行workflow之前就设置好。设置方式如下

image-20210513103140213

2.运行workflow

点击项目的Actions按钮,选中对应的workflow,并运行即可

image-20210513103340902

点进去可以看到具体的构建日志

image-20210513103431467

构建完成之后返回阿里云控制台

image-20210513103552472

可以看到镜像已经推送成功。

点击基本信息可以看到阿里贴心的小提示:如何拉取镜像和推送镜像

image-20210513103839100

以我的镜像为例,只需要docker pull registry.cn-hangzhou.aliyuncs.com/kdyzm/xxl-job-admin:2.4.1即可拉取镜像

参考文档

《使用github actions实现自动将镜像推送到自己的镜像仓库》

《GitHub Actions 手动触发方式进化史》

《GitHub Actions: Manual triggers with workflow_dispatch》

https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch

GitHub Actions 的工作流程语法

在GitHUb上使用持续集成


#aliyun #workflow #github
目录