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. #这里的版本是我代码的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 action 实现CI/CD
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用
使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...
- 使用CI/CD工具Github Action发布jar到Maven中央仓库
之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...
- Github原生CI/CD,初尝Github Actions
Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...
- Github Packages和Github Actions实践之CI/CD
概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...
- 使用.NET 6开发TodoList应用(31)——实现基于Github Actions和ACI的CI/CD
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求和目标 在这个系列的最后一节中,我们将使用GitHub Actions将TodoList应用部署到Azure Container ...
- 用 GitHub Action 构建一套 CI/CD 系统
缘起 Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 r ...
- 技术番外篇丨Github Action CI/CD
起源 看到.Net群里再聊CI/CD,我就这里分享一下我目前自己一些小东西的做法,我目前在Github有一个自己私有的组织,里面存放了我的部分商业化项目,早期我采用Jenkins用Webhooks进行 ...
- 好代码是管出来的——使用GitHub实现简单的CI/CD
软件开发一般来说是一项团队作业,在本系列文章开始就提到过软件的编码是由一个团队“并行”完成的,为了保证编码任务正常完成,首先引入版本控制工具来完成代码管理,为了保证代码质量引入了代码分析器以及代码测试 ...
随机推荐
- libpcap的下载与安装(apt-get安装unable to locate package 的解决方法(Ubantu))
因为网络安全课的实验课要求,我们得下载libcap我们得做一个类似于tcpdump的一个东西.具体要求就不贴出来了. libpcap只能在官网(www.tcpdump.org)下到,我用的os是Ubu ...
- nyoj 655-光棍的yy (python, 未A)
655-光棍的yy 内存限制:64MB 时间限制:1000ms 特判: No 通过数:4 提交数:7 难度:2 题目描述: yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结 ...
- Python3.7.1学习(七)mysql中pymysql模块详解(一)
pymysql是纯用Python操作MySQL的模块,其使用方法和MySQLdb几乎相同.此次介绍mysql以及在python中如何用pymysql操作数据库, 以及在mysql中存储过程, 触发器以 ...
- 力扣(LeetCode)整数形式的整数加法 个人题解
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组.例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]. 给定非负整数 X 的数组形式 A,返回整数 X+K 的 ...
- 20191114-2 Beta事后诸葛亮会议
此作业要求:http://edu.cnblogs.com/campus/nenu/2019fall/homework/10005 组名:扛把子 组长:孙晓宇 组员:宋晓丽.梁梦瑶.韩昊.刘信鹏 扛把子 ...
- ASP.NET Core +Highchart+ajax绘制动态柱状图
一.项目介绍利用前端Highchart,以及ajax向后台获取数据,绘制动态柱状图.hightchart其他实例可查看官网文档.[Highchart](https://www.highcharts.c ...
- C#Windows Forms窗体、按钮-xdd
1.更换窗体图标 方法:单击窗体,更改icon属性. 2.调整窗体打开时默认位置 方法:单击窗体,更改StartPotion属性. 3.修改窗体大小 方法:单击窗体,更改Size属性. 4.设置窗体的 ...
- http_web_cache
HTTP Web Cache 程序资源的访问具有局部性 时间局部性:一个被访问过的资源很有可能在近期被再次访问. 空间局部性:一个被访问过的资源,它的周边资源很有可能被访问到. 如何衡量缓存的有效性? ...
- linux网络配置(iproute2)
iproute2家族 ip命令:show / manipulate routing,devices,policy routing and tunnels(显示/操纵路由.设备.策略路由和隧道) 语法 ...
- 04_seaborn基本使用
1.seaborn设置整体风格 seaborn提供5中主题风格: darkgrid whitegrid dark white ticks 主要通过set()和set_style()两个函数对整体风格进 ...