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/[email protected] #执行一个[email protected] 脚本
    - name: Setup .NET Core  #将要执行的命令组名称
      uses: actions/[email protected] #执行一个setup-[email protected] 脚本 它的主要作用是安装net dotnet 编译环境
      with: #参数 传递给setup-[email protected] 脚本的
        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/[email protected] #执行一个setup-[email protected] 脚本 它的主要作用是安装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 持续交付 当然 你也可以做到持续部署

谢谢你的阅读

原文地址:https://www.cnblogs.com/AnAng/p/12046864.html

时间: 2024-10-14 20:32:02

GitHub Actions 完成CI CD的相关文章

Github原生CI/CD,初尝Github Actions

Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure DevOps Pipelines 对开发者来说更友好,使用起来更好用. Github Actions 核心概念 总体看下来感觉是从 Azure Pipelines 迁移过来的东西,有许多概念和 Azure Pipelines 是类似的,如果你之前用过 azure pipelines,应该很容易上手 Run

vuepress-theme-reco + Github Actions 构建静态博客,部署到第三方服务器

最新博客链接 Github链接 查看此文档前应先了解,vuepress基本操作 参考官方文档进行配置: vuepress-theme-reco VuePress SamKirkland / FTP-Deploy-Action 最终效果 最终效果链接 思路 下载vuepress-theme-reco官方的主题模板(脚手架),再根据自己的需要进行相应的修改,再根据自己的服务器配置Github Actions文件,最后上传到Github,触发Github Actions自动构建部署到第三方服务器.以后

如何使用Docker实现PHP命令行程序的CI/CD?

本文标签: Docker PHP命令行程序的CI/CD Codeship 内容要点: - 使用Jet设置环境并在本地运行测试 - 配置CodeshipPro每次新代码提交时,自动运行测试 - 上一步的测试通过后,自动将更新部署到服务器 持续集成 应用程序和测试套件已经在本地运行,下一步要做的是建立一些持续集成系统.虽然可以设置服务器来执行此操作,但这个过程工作量略大,因此推荐一个像CodeshipPro的服务. 使用Jet进行本地测试 代码提交到Codeship测试前,建议先安装其本地版本的持续

如何使用GitLab和Rancher构建CI/CD流水线 – Part 2

这是我们使用GitLab和Rancher构建CI/CD流水线系列教程的第二部分.第一部分的内容介绍了如何部署.配置和确保GitLab在Rancher的运行.这一部分中,我们将介绍如何使用GitLab CI Multi-Runner构建容器,以及如何使用GitLab容器registry配置项目.除此之外,我们还将涉及如何用GitLab CI建立容器并部署到Rancher上. 使用GitLab CI Multi-Runner构建容器 GitLab CI是用于持续集成和持续交付的强大工具.它需要和Ra

iHealth基于Docker的DevOps CI/CD实践

本文由1月31日晚iHealth运维技术负责人郭拓在Rancher官方技术交流群内所做分享的内容整理而成,分享了iHealth从最初的服务器端直接部署,到现在实现全自动CI/CD的实践经验. 作者简介 郭拓,北京爱和健康科技有限公司(iHealth).负责公司基础服务构建与研发流程定制,曾供职于乐视.21vianet,高龄攻城狮活跃在一线研发工作中,乐此不疲. 前言 相信我,一切事情的发生都是赶鸭子上架,没有例外.人类所有伟大的变革都是迫不得已,可又是那么顺其自然.比如容器(docker)技术的

Jenkins CI/CD on Kubernetes with dynamic slaves

本文档介绍如何通过在 Kubernetes 集群上创建并配置 Jenkins Server 实现应用开发管理的 CI/CD 流程,并且利用 Kubernetes-Jenkins-Plugin 实现动态按需扩展 jenkins-slave. 步骤 1 安装 Kubernetes 集群 如果您没有 Kubernetes 集群,您需要先创建一个.具体操作参见 部署 Kubernetes 集群. 步骤 2 连接 Kubernetes 集群 有关如何连接到 Kubernetes 集群,参见 通过 kube

docker与jenkins的自动化CI/CD流水线实战

docker与jenkins的自动化CI/CD流水线实战 在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现一套CI自动化发布流程. 高效的CI/CD环境可以获得: ? 及时发现问题 ? 大幅度减少故障率 ? 加快迭代速度 ? 减少时间成本 一.发布流程设计 总结:开发===>提交代码到Git/Svn===>推送到Jenkins====>通

CI/CD持续集成/持续部署 敏捷开发

敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用. 1,CI/CD持续集

Docker和CI/CD实战

一.CICD和DevOps 前面已经了解了CI/CD,其实CI/CD已经存在多年了,只是最近软件工程方面又提出了敏捷开发.DevOps,又把CI/CD炒火了. 那么什么是DevOps?DevOps和CI/CD有又什么关系呢? 以下内容摘自https://en.wikipedia.org/wiki/DevOps DevOps (a clipped compound of "development" and "operations") is a software dev