在之前我的部署、版本控制、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 持續交付 當然 你也可以做到持續部署
謝謝你的閱讀