猫猫说了算
理解是偶然,误解是常态。

Github Aciton 迁移阿里云容器自动部署流程

远浅发表于: 2020-01-02 16:17分类: 技术

本站使用的阿里云容器服务大部分情况下能满足我的需求,但是它有一个毛病,在容器构建失败的时候无法使得用户得到通知,使得我在推送了新代码的情况下,需要我去关注构建状态。这使得我无法专注于其他事情,于是动了迁移的念头。

大致流程如下。

1、阿里云容器镜像服务创建镜像仓库,选择代码源为本地仓库。

2、在Github的代码仓库中添加Github Action自动化CI的配置,构建容器并且推送到阿里云镜像仓库,定义流程失败和成功的行为。

其中最重要的就是编写Github Action的配置文件

一个简单的demo地址 

name: Docker镜像构建!

on: push

jobs:
  build:
    name: build&&push
    runs-on: ubuntu-latest
    env:
      REGISTRY: "registry.cn-hongkong.aliyuncs.com"
      TAG: "unliar/app-happysooner-next-web:latest"
    steps:
      - name: "复制文件"
        uses: actions/checkout@v1
      - name: "列出文件"
        run: ls
      - name: "容器构建"
        run: |
          docker login --username=${{ secrets.ALIYUN_DOCKER_NAME }} $REGISTRY --password=${{ secrets.ALIYUN_DOCKER_PASS }}
          docker build -t build:latest . 
          docker tag build:latest $REGISTRY/$TAG
          docker push $REGISTRY/$TAG
      - name: "构建失败 - 通知远浅排查问题"
        if: failure()
        run: curl -H "Content-Type:application/json" -X POST 通知服务
      - name: "构建成功 - 通知远浅让他开心"
        if: success()
        run: curl -H "Content-Type:application/json" -X POST 集群更服务
      - name: "构建成功 - 通知服务集群更新服务"
        if: success()
        run: curl -X POST ${{ secrets.DOCKER_HOOK }}

其中配置文件的secrets.XXX变量 需要在项目的Settings/Secrets里面添加。

具体的文件配置不多赘述,都还算比较简单,请查看官方文档

如果一切顺利,我们的工作流程就从 【代码变更 -> 阿里云容器服务检测到代码变更 -> 触发构建流程 -> 触发器通知】修改为 【代码变更 -> 触发Github Action构建 -> 构建结果通知。

Github Action 真香!

赠人玫瑰, 手有余香。🌹
打赏
特别鸣谢
感谢以下用户对本文的支持与鼓励
加载打赏用户中
发表评论
文章评论
暂无任何评论,快去发表吧~