中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用CODING DevOps部署Serverless 應用

發布時間:2021-11-19 16:56:23 來源:億速云 閱讀:217 作者:柒染 欄目:云計算

這篇文章給大家介紹如何使用CODING DevOps部署Serverless 應用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

從 GitHub Actions 到 CODING DevOps

CI/CD 已成為軟件開發環節的標配,倡導將一切自動化,這里期待在代碼提交到 master 分支后就會自動部署應用。

因為代碼 托管在 GitHub 上,首先考慮的是使用 GitHub Actions 部署應用。

然而在使用 GitHub Actions 時,總是會超時失敗,這是因為 GitHub Actions 官方托管服務器在國外,在部署到國內的環境時,網絡延遲很大,從而導致失敗。

于是暫時放棄使用 GitHub Actions 部署戰點,并考慮使用國內的免費 CI/CD 工具,在調研后選擇了騰訊旗下的 CODING DevOps。

考慮到國內拉取 GitHub 代碼會比較慢, 這里首先使用 GitHub Actions 將代碼自動同步到 coding.net  的代碼倉庫,然后再使用 CODING 持續集成進行自動化部署。

使用 GitHub Actions 將代碼自動同步到 CODING

GitHub Actions 有一個特別好的功能是:有一個 GitHub Marketplace,目前有 7000 多個 Action,開發者可以從中挑選適合自己的 Action。

開發者也可以定義自己的 Action,也可以將自己的 Action 發布到 GitHub Marketplace。

這里定制了一個 Action 用于同步代碼到 CODING: https://github.com/marketplace/actions/sync-repo-to-coding

每個倉庫可以配置多個 workflow,在 GitHub 倉庫的 .github/workflows 下添加用來定義 workflow 的 YAML 文件即可。

同步代碼到 CODING 的 workflow 的 YAML 文件內容如下:

name: sync-to-coding

on:
  push:
    branches:
      - master  # Set a branch to deploy

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
    - name: Sync to CODING
      uses: serverlesslife-cn/sync-repo-to-coding@master
      env:
          # 在 GitHub Settings->Secrets 配置 CODING_PRIVATE_KEY
          SSH_PRIVATE_KEY: ${{ secrets.CODING_PRIVATE_KEY }}
      with:
          # 注意替換為你的 GitHub 源倉庫地址
          github-repo: "git@github.com:serverlesslife-cn/serverlesslife.git"
          # 注意替換為你的 CODING 目標倉庫地址
          coding-repo: "git@e.coding.net:donghui1/serverlesslife/serverlesslife.git"

每次提交代碼到 master 分支后,都會觸發 sync-to-coding 任務,Actions 日志截圖如下:

如何使用CODING DevOps部署Serverless 應用

準備 CI 所需的 Docker 鏡像

CODING 構建部署過程中需要用到 Docker 鏡像,如:hugo 和 serverless,分別用于構建與部署階段。

從 DockerHub 挑選了下面符合要求的兩個鏡像:

https://hub.docker.com/r/cibuilds/hugo/

https://hub.docker.com/r/amaysim/serverless/

然后從 DockerHub 下載到本地,再手動上傳到了 CODING 的 Docker 制品倉庫。

這樣在構建過程中可以快速下載鏡像(如果從 DockerHub 下載,不僅速度慢,還有下載次數限制)。

如何使用CODING DevOps部署Serverless 應用

配置 CODING 持續集成構建計劃

CODING 持續集成功能是基于 Jenkins 二次開發的,支持 Jenkins Pipeline。

如果熟悉 Jenkins,那么上手 CODING 持續集成就會很容易。

值得一提的是 CODING 持續集成提供了圖形化編輯生成 Jenkinsfile 的功能,大大降低了使用成本。

當然圖形化編輯器也有美中不足之處,它不會支持所有 Jenkins 步驟。

下面是使用圖形化編輯器可視化編輯 Jenkins Pipeline 的截圖:

如何使用CODING DevOps部署Serverless 應用

添加所需的環境變量:

這里需要添加兩個環境變量:TENCENT_SECRET_ID、TENCENT_SECRET_KEY,用于登錄騰訊云。

為了避免密碼明文顯示在控制臺,添加這里的環境變量時要勾選「保密」。

如何使用CODING DevOps部署Serverless 應用

如何使用CODING DevOps部署Serverless 應用

最終的 Jenkinsfile 內容如下:

pipeline {
  agent any
  stages {
      stage('Checkout') {
        steps {
          checkout([
            $class: 'GitSCM',
            branches: [[name: GIT_BUILD_REF]],
            userRemoteConfigs: [[
              url: GIT_REPO_URL,
              credentialsId: CREDENTIALS_ID
            ]]])
          }
      }

      stage('EnvSetUp') {
        steps {
          sh 'touch .env'
          sh 'echo TENCENT_SECRET_ID=${TENCENT_SECRET_ID} >> .env'
          sh 'echo TENCENT_SECRET_KEY=${TENCENT_SECRET_KEY} >> .env'
        }
      }

      stage('Build') {
        agent {
          docker {
            reuseNode 'true'
            registryUrl 'https://donghui1-docker.pkg.coding.net'
            registryCredentialsId "${env.DOCKER_REGISTRY_CREDENTIALS_ID}"
            image 'serverlesslife/hugo/hugo:latest'
          }
        }
        steps {
          sh 'HUGO_ENV=production hugo'
        }
      }


      stage('Deploy') {
        agent {
          docker {
            reuseNode 'true'
            registryUrl 'https://donghui1-docker.pkg.coding.net'
            registryCredentialsId "${env.DOCKER_REGISTRY_CREDENTIALS_ID}"
            image 'serverlesslife/serverless/serverless:2.28.0'
            args '-e TZ="Asia/Shanghai"'
          }
        }
        steps {
          sh 'serverless deploy'
        }
      }
  }
}

對于 Jenkinsfile 做如下說明:

  • pipeline 由 agent 、stages 和 post 組成,其中 stages 下包括一系列 stage,而 stage 下又有 steps,steps 下則是一些指令

  • stages 下包括多個 stage:Checkout、EnvSetUp、Build、Deploy


    • Checkout 階段用于檢出代碼,這里是私有倉庫,用到了 Credentials 插件

    • EnvSetUp 階段用于生成 .env 文件,用于自動登錄騰訊云

    • Build 階段主要是用于構建,這里使用 hugo 鏡像以及 hugo 命令進行構建

    • Deploy 階段則是使用 serverless 鏡像以及 serverless deploy 命令部署應用,其中 docker args 中 TZ="Asia/Shanghai” 表示設置時區中國區,這樣 serverless 命令行將會將應用部署到騰訊云,否則默認部署到 AWS

  • 需要特別說明的是用于拉取代碼的 CREDENTIALS_ID 環境變量和用于拉取 Docker 鏡像的 DOCKER_REGISTRY_CREDENTIALS_ID 是 CODING 持續集成平臺提供的,無需手動設置

設置觸發規則:

這里設置在代碼推送到 master 分支時,自動觸發構建。

如何使用CODING DevOps部署Serverless 應用

至此,整個持續集成構建計劃的配置就完成了。

此后,每次提交代碼到 GitHub 倉庫的 master 后,GitHub Actions 便會將代碼自動同步到 CODING 的代碼倉庫,然后便會觸發 CODING 持續集成來自動部署網站。

如何使用CODING DevOps部署Serverless 應用

關于如何使用CODING DevOps部署Serverless 應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永吉县| 二手房| 马龙县| 保定市| 行唐县| 观塘区| 临泽县| 荥阳市| 洛川县| 新建县| 明星| 西华县| 股票| 莱州市| 独山县| 正镶白旗| 罗甸县| 平远县| 陇南市| 同江市| 大方县| 金阳县| 略阳县| 泾源县| 宕昌县| 札达县| 崇左市| 开平市| 鹰潭市| 兴安盟| 稷山县| 西和县| 三台县| 太和县| 九台市| 泽库县| 乳山市| 塘沽区| 遵义县| 财经| 常山县|