GitHub Actions 完成CI CD

Posted anang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitHub Actions 完成CI CD相关的知识,希望对你有一定的参考价值。

在之前我的部署、版本控制、CI、CD都是在Jenkins 下来完成的

在前几天看到github上的一个新玩具actions,简直惊为天人

它能在你的仓库触发事件(Push,Pull,issue,...)的时候给你分配一台服务器执行一些预定好的命令

并且它的脚本编写非常简单只要半个小时就能学会

这篇文章主要讲述

使用github actions 做CI AND CD 以跳过jenkins的环节

 

1、首先 需要拉取代码到它分配的服务器

2、添加编译环境

3、代码编译

4、将编译好的结果上传到dockerhub(镜像仓库)

5、连接k8s集群

6、通知k8s进行镜像更换并做一个版本记录

 

有关actions 的使用入门不在累述

 

 

name: .NET Core #名字

on: [push]  #触发事件
jobs:  
  build:
    runs-on: ubuntu-latest #分配的服务器系统
    steps:
    - uses: actions/checkout@v1 #执行一个checkout@v1 脚本
    - name: Setup .NET Core  #将要执行的命令组名称
      uses: actions/setup-dotnet@v1 #执行一个setup-dotnet@v1 脚本 它的主要作用是安装net dotnet 编译环境
      with: #参数 传递给setup-dotnet@v1 脚本的
        dotnet-version: 2.2.108 #这里的版本是我代码的net core 版本
    - name: Build with dotnet #自定义的命令组名称
      run: dotnet build --configuration Release #执行构建操作
    - name: docker push bash 
      env: #这里 类似于 readonly 添加一个临时变量 个人感觉没啥用 添加的临时变量只能在当前命令组下使用
        IMAGE_TAG: ${{ secrets.kube_deployment_name }}:${{ github.sha }}  #类似于 readonly IMAGE_TAG=xxx.xxx ${{secrets.xx}} 是本人在后台配置的变量 
        DOCKER_NAME: ${{ secrets.docker_name }} #同上
      run: |
        docker login -u ${{ secrets.docker_name }} -p ${{ secrets.docker_pwd }}  #登录到dockerhub 感觉不妥 但是我没有找到更改后的方法了
        docker build . --file Dockerfile --tag $IMAGE_TAG #进行构建 并添加tag
        docker tag $IMAGE_TAG $DOCKER_NAME/$IMAGE_TAG #修改仓库地址
        docker push $DOCKER_NAME/$IMAGE_TAG  #推到镜像仓库  我这里是公有库 各位可以换成自己私有的
    - name: deploy to cluster 
      uses: steebchen/kubectl@master #执行一个setup-dotnet@v1 脚本 它的主要作用是安装kubectl
    - name: ConnectionKubeCtl #连接到k8s集群
      run: |
        kubectl config set-credentials tf-admin --token=${{ secrets.kube_token }} #配置登录方式 这里我使用的是token登录 通过kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1}) 命令可以查看一条
        kubectl config set-cluster tf-cluster --insecure-skip-tls-verify=true --server=${{ secrets.kube_server }} #配置连接地址
        kubectl config set-context tf-system --cluster=tf-cluster --user=tf-admin 
        kubectl config use-context tf-system  
    - name: Kube Deployment Update Image #通知k8s 更新镜像版本并产生一个记录
      run: |
        kubectl set image deployment/${{ secrets.kube_deployment_name }} ${{ secrets.kube_deployment_name }}=${{ secrets.docker_name }}/${{ secrets.kube_deployment_name }}:${{ github.sha }} --record -n aspnetcore 

 

在这里有一些入门脚本

各个语言的编译等..

 

技术图片

 

 

在这里可以搜索到非常多的命令组 并查看到执行命令 作为一个参考 也就是yml文件的uses执行 命令组

技术图片

 

 

 

 

技术图片

 

在之后我可以有两个个分支

debug 和 Release 分支

开发环境则监听debug分支的 push 事件 做到 CI  持续集成

生产黄金则监听Release分支的合并请求 并完成自动化构建 做到CD 持续交付 当然 你也可以做到持续部署

 

谢谢你的阅读

以上是关于GitHub Actions 完成CI CD的主要内容,如果未能解决你的问题,请参考以下文章

Github原生CI/CD,初尝Github Actions

用于 Github Actions 和 AWS 的 nextJS、MongoDB 和 Cypress 的 CI/CD [关闭]

CI/CD1jenkins,actions,daocloud

Github Actions 持续集成服务

Github Actions 持续集成服务

记录在使用 GitHub Actions 时出现的 Permission Denied 问题及办法