Drone自动化打包镜像至Harbor私有仓库

Drone自动化打包镜像至Harbor私有仓库

       上一篇介绍了如何通过docker部署Harbor私有仓库,今天跟大家分享如何通过Drone自动化打包镜像至我们搭建的Harbor私有仓库,流程大致如下

Gitea->Drone->Harbor

       一、创建仓库

       我们先在Gitea创建我们的代码仓库,然后在Drone面板激活。

       二、项目准备

       这里我打算部署一个Go项目,大家根据自己实际情况进行准备,访问端口是9922,我们在项目根目录创建一个Dockerfile文件,用于构建镜像

# Version 1.0
FROM alpine:latest
# 维护者信息
MAINTAINER hzx790254812@gmail.com
# 设置工作目录
WORKDIR /home
COPY project-go-api /home/
# 暴露端口
EXPOSE 9922
# 执行命令
ENTRYPOINT ./project-go-api

       三、创建镜像项目

       我们到自己部署的Harbor仓库创建一个项目镜像,截图如下

微信截图_20220411201458.png

       四、配置Docker

       因为Docker推送镜像默认是走https,由于我部署的镜像仓库是http,所以我们需要修改一下配置,登陆到要推送镜像的服务器上,输入以下命令

vi /etc/docker/daemon.json

 输入以下配置,记得修改为自己的ip或者域名,假设我们的Harbor地址是1.1.1.1:8091。

{
    "insecure-registries": ["1.1.1.1:8091"]
}

重启Docker,配置生效

sudo service docker restart

       五、配置Drone配置

       由于我们的Harbor仓库是http,所以我们需要添加一行配置

insecure: true

配置如下,假设我们的Harbor地址是1.1.1.1:8091,镜像项目地址是1.1.1.1:8091/docker,这里每次提交镜像会生成两个版本,latest跟Drone自定义生成

kind: pipeline
type: docker
name: project-go-api

#构建步骤
steps:
#构建镜像
- name: build
  image: golang:latest
  pull: if-not-exists
  environment:
    GOPROXY: "https://goproxy.cn,direct"  # 懂的都懂
  volumes:                                # 缓存 go mod & pkg,可以大幅度提高速度,避免每次都下载
    - name: pkgdeps
      path: /go/pkg
  commands:
    - CGO_ENABLED=0 go build -o project-go-api
#推送镜像至镜像仓库
- name: publish
  image: plugins/docker
  settings:
    registry: 1.1.1.1:8091
    repo: 1.1.1.1:8091/docker/project-go-api
    insecure: true
    username: admin
    password: admin
    use_cache: true
    tags:
      - latest
      - ${DRONE_COMMIT}

       六、检验

       我们尝试提交项目,看看效果

微信截图_20220411202114.png

微信截图_20220411202156.png

这样我们就成功通过Drone推送镜像到Harbor私有仓库。

0条评论

发表评论