日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • 準備
  • 安裝drone ci
    • 1、docker-compose配置文件
    • 2、docker-compose配置文件主要參數詳解
      • drone server
      • DRONE_SERVER_PROTO和DRONE_SERVER_HOST
      • DRONE_RPC_SECRET
      • DRONE_USER_CREATE
      • DRONE_DATABASE_DRIVER
      • DRONE_DATABASE_DATASOURCE
      • DRONE_GITEE_CLIENT_ID和DRONE_GITEE_CLIENT_SECRET
      • drone runner
    • 3、執行部署
    • 進入管理界面
      • 添加.drone.yml文件
        • 總結

          前言

          一直想自動化部署博客,但一直沒有實施計劃,直到最近有時間,就搞了起來。ci/cd的工具很多,我想drone ci應該是一款非常適合前端的工具,簡單,輕量級,基于docker,支持主流代碼托管網站,比如github,gitee,gitlab等等。

          準備

          我們需要一個已備案的域名和服務器,并申請好ssl證書,用于https證書。我是使用騰訊云的輕量級服務器,大家可以自行選擇。至于域名備案和ssl證書申請,各個平臺大同小異,大家按照其文檔說明弄,應該不會有太多問題,就不一一贅述了。

          在有了服務器后,我們需要安裝docker和docker-compose,這樣我們直接運行docker-compose配置文件就可以輕松安裝好drone ci。本文主要是講解drone ci,所以docker和docker-compose的安裝和使用,大家可以自行學習,在此當做默認已經安裝。

          代碼托管網站使用了gitee碼云。

          安裝drone ci

          1、docker-compose配置文件

          通過docker-compose配置文件可以輕松安裝drone ci,新建一個docker-compose.yml文件,內容如下

          version: "3.7"
          # 創建自定義網絡
          networks:
            drone:
              # external: false
              driver: bridge
          services:
            # 數據庫服務
            db:
              image: postgres:latest
              container_name: drone_db
              restart: always
              networks:
                - drone # 加入到drone網絡
              ports:
                - "8081:5432" # 8081為容器暴露到服務器的端口,5432為容器內改應用的端口
              environment:
                - POSTGRES_USER=username # PGSQL默認用戶名
                - POSTGRES_PASSWORD=password # PGSQL默認密碼
                - POSTGRES_DB=db_name # PGSQL默認數據庫的名字
              volumes:
                - /volumes/drone/db:/var/lib/postgresql/data # 數據卷,前者為服務器真實位置,后者為改應用在容器內的位置
            # Drone Server 服務
            server:
              image: drone/drone:latest
              container_name: drone_server
              restart: always
              networks:
                - drone # 加入到drone網絡
              ports:
                - "7929:80"
                - "4443:443"
              environment:
                - DRONE_SERVER_PROTO=https # 訪問協議,創建webHooks和重定向
                - DRONE_SERVER_HOST=xxxx.com # 主機名稱,創建webHooks和重定向
                - DRONE_RPC_SECRET=xxxxxxxxx # 與 drone runner 通訊的密鑰
                - DRONE_USER_CREATE=username:xxxxxx,admin:true # 管理員賬戶
                - DRONE_DATABASE_DRIVER=postgres # 數據庫類型
                - DRONE_DATABASE_DATASOURCE=postgres://username:password@db/db_name?sslmode=disable # 數據庫連接
                - DRONE_GIT_ALWAYS_AUTH=true # 使用 oauth 身份驗證信息拉取代碼
                - DRONE_GITEE_CLIENT_ID=xxxxxxxx # GITEE 客戶端 id
                - DRONE_GITEE_CLIENT_SECRET=xxxxxxxxxxxx # GITEE 客戶端 密鑰
                - DRONE_GITEE_SKIP_VERIFY=false # 禁用 GITEE 鏈接時 tls 驗證
          
              volumes:
                - /volumes/drone/server:/data
                - /var/run/docker.sock:/var/run/docker.sock
              depends_on:
                - db
            # Drone Docker Runner
            runner:
              image: drone/drone-runner-docker:latest # 目前drone-runner-docker最新版本為 1.8.0
              container_name: drone_runner
              restart: always
              networks:
                - drone # 加入到drone網絡
              ports:
                - "7930:3000"
              environment:
                - DRONE_RUNNER_NAME=docker-runner
                - DRONE_RUNNER_CAPACITY=10 # 限制runner可執行的并發管道數量
                - DRONE_RPC_PROTO=https # 訪問drone server 協議
                - DRONE_RPC_HOST=xxxxx.com # 訪問drone server 服務器地址
                - DRONE_RPC_SECRET=xxxxxxx # 與 drone server 通訊的密鑰
                - DRONE_UI_USERNAME=username # Drone Runner 的 UI 用戶賬號
                - DRONE_UI_PASSWORD=password # Drone Runner 的 UI 用戶密碼
                # - DRONE_RUNNER_NETWORKS=drone_net
              volumes:
                - "/var/run/docker.sock:/var/run/docker.sock"
              depends_on:
                - server

          2、docker-compose配置文件主要參數詳解

          配置文件里一些常用參數在上面的注釋里已經有解釋,這里只講解drone server和drone runner的配置項

          drone server

          基礎的鏡像版本,端口設置,網絡設置不再贅述,這些都是docker compose最常見的配置,主要是environment里面的參數說明

          DRONE_SERVER_PROTO和DRONE_SERVER_HOST

          這個參數是在代碼托管網站的配置里設置的,詳細配置會在后面說明,每個代碼托管網站的配置大同小異,這個網址是drone ci的管理網站,可以查看drone ci運行的詳細流程等

          DRONE_RPC_SECRET

          這個參數是drone server與drone runner通訊的秘鑰,在服務器使用OpenSSL生成,生成方法如下

          $ openssl rand -hex 16

          DRONE_USER_CREATE

          這個參數非常重要,為drone ci管理網站的登錄賬號,這個賬號名一定要與代碼托管網站的用戶名一致,這樣才能登錄管理員賬號,如果無法登錄管理員賬號,將無法授權拉取代碼時的權限,運行時將會報錯

          利用drone?ci自動化部署靜態博客的完整步驟

          DRONE_DATABASE_DRIVER

          數據庫類型,就是上面自己配置的數據庫

          DRONE_DATABASE_DATASOURCE

          postgres://username:password@db/db_name?sslmode=disable,這個參數中username為數據設置的用戶名,password為數據庫登錄密碼,db/db_name中db為固定值,db_name為創建的表名稱,這些參數都是上面數據庫的配置參數

          DRONE_GITEE_CLIENT_ID和DRONE_GITEE_CLIENT_SECRET

          這兩個參數是在代碼托管網站獲取,我使用的是gitee碼云。如何申請?

          1、注冊碼云

          2、創建OAuth應用

          進入碼云設置中心,找到第三方應用

          利用drone?ci自動化部署靜態博客的完整步驟

          點擊創建應用

          利用drone?ci自動化部署靜態博客的完整步驟

          填寫創建應用所需信息

          利用drone?ci自動化部署靜態博客的完整步驟

          創建成功后,進入應用詳情

          利用drone?ci自動化部署靜態博客的完整步驟

          其中的Client ID和Client Secret便是DRONE_GITEE_CLIENT_ID和DRONE_GITEE_CLIENT_SECRET

          drone runner

          DRONE_RPC_PROTO和DRONE_RPC_HOST

          和DRONE_SERVER_PROTO,DRONE_SERVER_HOST相同

          DRONE_UI_USERNAME和DRONE_UI_PASSWORD

          改賬號信息為drone runner的賬號信息,不同于drone server,drone runner的管理界面主要查看server運行的一些信息,而drone server的管理界面是管理應用的

          3、執行部署

          在docker-compose配置文件的當前目錄下,執行docker-compose up,drone ci就會自動安裝

          進入管理界面

          如果安裝沒有報錯,那么進入瀏覽器,輸入你配置過的DRONE_SERVER_HOST(前提是這個域名已經通過解析),便能進入

          利用drone?ci自動化部署靜態博客的完整步驟

          登錄成功后進入主頁面,此時會同步你代碼托管網站下的所有項目

          利用drone?ci自動化部署靜態博客的完整步驟

          點擊未激活項目,會直接進入到setting配置頁

          利用drone?ci自動化部署靜態博客的完整步驟

          點擊Activate Repository按鈕,激活項目,激活項目便會進入配置詳情頁

          利用drone?ci自動化部署靜態博客的完整步驟

          如果是管理員登入,project settings中的5個選項都會出現,不然只會出現第一個選項,打開第二個選項Trusted

          利用drone?ci自動化部署靜態博客的完整步驟

          最后save changes一下,保存更改,此時項目即為激活項目

          添加.drone.yml文件

          到此整個drone ci的服務已經配置完成,那么如何持續部署我們的項目呢?對于cd有一定了解的人,都知道當我們git push的時候項目會通過webhooks通知ci服務,然后就會拉取代碼,重新部署代碼,從而完成一次ci/cd,這其中一個重要的配置文件起到重要作用,通常會向我們的項目中添加一個yaml文件,ci服務會讀取這個文件,從而執行一個流程,完成部署。在drone ci中會向項目的根目錄添加一個.drone.yml文件,這個文件如何編寫,我以我的blog項目為例,下面是其配置文件內容

          kind: pipeline # 定義一個管道
          type: docker # 當前管道的類型
          name: test # 當前管道的名稱
          
          volumes: # 聲明數據卷(此為服務器中的實際目錄)
            - name: node_modules # 數據卷名稱
              host: # Host Volume
                path: /volumes/drone/volumes/blog/node_modules # 宿主機目錄    #絕對路徑
            - name: deploy_path
              host: 
                path: /workspace/blog
          
          clone:
            disable: false # 啟用代碼拉取
          
          steps: # 定義管道的執行步驟
            - name: deploy # 步驟名稱
              image: node:16.13.2 # 當前步驟使用的鏡像
              depends_on: [clone] # 依賴的步驟
              volumes: # 掛載數據卷(此為容器內的目錄)
                - name: node_modules # 數據卷名稱
                  path: /drone/src/node_modules # 容器內目錄 絕對路徑
                - name: deploy_path
                  path: /drone/src/html
              commands: # 當前步驟執行的命令
                - pwd # 查看當前目錄
                - npm config set registry https://registry.npm.taobao.org # 切換淘寶鏡像
                - npm install # 安裝node_modules包
                - npm run build # 執行編譯
                # - rm -fr ./blog
                - ls /drone/src
                - cp -r ./public/* ./html
          
            - name: dingtalk-push
              image: lddsb/drone-dingtalk-message
              depends_on: [deploy]
              settings:
                token: xxxxxxxxxxxxxxxxxxxxxxxxxxx
                type: markdown
                message_pic: true
                sha_link: true
              when:
                event: [push]
                status: [success, failure]

          .drone.yml文件的編寫較為復雜,具體請查詢drone文檔。其中dingtalk-push,是部署完成后通知釘釘,釘釘機器人的配置請查看釘釘的文檔,該插件的詳細配置請查閱該插件文檔

          總結

          分享到:
          標簽:完整 步驟 自動化 部署 靜態
          用戶無頭像

          網友整理

          注冊時間:

          網站:5 個   小程序:0 個  文章:12 篇

          • 51998

            網站

          • 12

            小程序

          • 1030137

            文章

          • 747

            會員

          趕快注冊賬號,推廣您的網站吧!
          最新入駐小程序

          數獨大挑戰2018-06-03

          數獨一種數學游戲,玩家需要根據9

          答題星2018-06-03

          您可以通過答題星輕松地創建試卷

          全階人生考試2018-06-03

          各種考試題,題庫,初中,高中,大學四六

          運動步數有氧達人2018-06-03

          記錄運動步數,積累氧氣值。還可偷

          每日養生app2018-06-03

          每日養生,天天健康

          體育訓練成績評定2018-06-03

          通用課目體育訓練成績評定