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 持續交付 當然 你也可以做到持續部署

 

謝謝你的閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章