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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwxsp.html