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

摘要:
本文将简要介绍如何使用githubActions函数构建工作流并打包java程序的Docker映像。在您向容器映像服务注册阿里云帐户后,您可以自动创建仓库选项:系统将自动创建相应的仓库。此配置将确定默认情况下系统创建的存储库是公共的还是私有的。我使用上述步骤创建了“xxl job admin”II公开的图像存储库。Github创建工作流:

本篇文章将会简单讲解如何使用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上使用workflow构建docker镜像并推送阿里云》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux 基础教程 33-硬盘分区及挂载如何在Ubuntu 20.04 LTS Focal Fossa上安装Grafana下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

查看npm仓库版本号

http://repo.inspur.com:8081/artifactory/webapp/#/artifacts/browse/simple/General/thirdparty iop 找到现在的版本号 222222222222222222...

SpringBoot 学习记录 2021.05.13 Started

环境搭建 Spring Boot 2.x Java JDK 需要安装 JDK java8 也就是 1.8, 用 jdk-8u271-windows-x64.exe 网上有很多安装java8的教程,很简单。我已经安装完了。注意配置环境变量。 C:UsersReciter>java -version java version "1.8.0_211" Ja...

【转】 【新】Docker实战总结

【转】 【新】Docker实战总结 >>> 目录 <<< Docker简介 Docker优势 Docker基本概念 Docker安装使用 Docker常用命令 Docker镜像构建 Docker本地仓库 Docker图形管理工具Portainer Docker集群管理工具Swarm Docker运维流程图 Docker...

【Jenkins系列教程】流水线通过SSH方式操作Git仓库

主旨 实践 Jenkins 流水线使用SSH方式操作 Git 仓库,包含基于 SSH 私钥认证的服务器 准备 需要提前安装 SSH Agent Plugin,可以通过 Manage Jenkins-> Manage Plugins-> Installed 使用 filter 搜索查看是否安装,如没有则通过 Available处搜索安装 使用 本...

利用增强tinycorelinux remaster tool打造你的硬盘镜像及一种让tinycorelinux变成Debian install体的设想

本文关键字:增强tinycorelinux remaster tool,tinycorelinux 开机加载module,x509: certificate signed by unknown authority 在前面很多云主机装机相关的文章中,我们都讲到debian的netinstall实现云主机装机,它并不利用pxe这种cs结构和另外的装机服务器之类...

Docker中的镜像分层技术详解

早在集装箱没有出现的时候,码头上还有许多搬运的工人在搬运货物,在集装箱出现以后,码头上看到更多的不是工人,而且集装箱的搬运模式更加单一,更加高效,还有其他的好处,比如:货物多打包在集装箱里面,可以防止货物之前相互影响。并且到了另外一个码头需要转运的话,有了在集装箱以后,直接把它运送到另一个容器内即可,完全可以保证里面的货物是整体的搬迁,并且不会损坏货物本身...