摘要:插件實現了一半,由于企業微信申請比較麻煩,所以也沒有進展。今天抽出時間,研究了一下插件,主要目的是實現非容器項目的部署。其實就是借助插件,將構建好的項目可執行文件和配置文件發布到指定主機上。直接上文件插件基于實現。完成新項目的部署。
前言
最近連續996加班,一直沒有時間完成drone系列文章。drone-wechat插件實現了一半,由于企業微信token申請比較麻煩,所以也沒有進展。今天抽出時間,研究了一下scp插件,主要目的是實現非容器項目的部署。其實就是借助scp插件,將構建好的go項目可執行文件和配置文件發布到指定主機上。本項目依舊基于baa-cicd項目。
.drone.yml直接上.drone.yml 文件
workspace: base: /go path: src/gogs.xxx.com/baa-cicd pipeline: build: image: golang:latest commands: - go build -o baa-cicd # publish: # image: plugins/docker # registry: registry.xxx.com # repo: registry.xxx.com/test/baa-cicd # tags: latest # secrets: [ docker_username, docker_password ] # insecure: true scp: image: appleboy/drone-scp host: 10.xx.xx.170 username: root key_path: deploy_rsa rm: true target: - /rc/local source: - baa-cicd ssh: image: appleboy/drone-ssh host:10.xx.xx.170 username: root key_path: deploy_rsa script: - supervisorctl -c /rc/conf/supervisord.conf reload notify: image: plugins/slack webhook: https://hooks.slack.com/services/xxx/xxx/xxx channel: dev template: > {{#success build.status}} build {{build.number}} succeeded. Good job. {{else}} build {{build.number}} failed. Fix me please. {{/success}}
scp 插件基于ssh實現。所以關鍵是ssh的相關設置比較重要。比如允許root用戶ssh登錄,以及密碼和rsa秘鑰幾種登錄方式的配置。我們這邊基本上都是openssh,所以可以先了解一下openssh的設置。這邊我主要允許root登錄,編輯 /etc/ssh/sshd_config,注意:PermitRootLogin yes。
關于rsa秘鑰登錄,這邊就不做更多介紹了。
此處deploy_rsa是放置了ssh登錄秘鑰的文件。
當然光是拷貝了文件,并不能完成部署。所以此處引用了另外一個插件ssh,簡單假設項目是用supervisior管理進程,那么ssh執行supervisorctl -c /rc/conf/supervisord.conf reload命令。完成新項目的部署。
其實此處再引入一個插件并不是特別合適,感覺有點麻煩,其實個人感覺scp引入一個script參數,比較好,執行一些拷貝完成以后的操作指令。
scp 插件介紹配置簡介:
scp插件通過ssh拷貝文件到目標主機,下面是如何在drone中使用的sample
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz
自定義用戶名和密碼以及端口的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com + username: appleboy + password: 12345678 + port: 4430 target: /home/deploy/web source: release.tar.gz
項目需要從多個文件拷貝到目的主機多個文件的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com target: + - /home/deploy/web1 + - /home/deploy/web2 source: + - release_1.tar.gz + - release_2.tar.gz
此處注意的就是一一對應關系。我理解的場景是,在項目中配置文件和可執行文件處于不同的文件夾下,或多個配置文件。
一般項目部署為了高可用,會將項目部署在多臺主機上,所以下面是一個多目標主機的配置示例:
pipeline: scp: image: appleboy/drone-scp - host: example.com + host: + - example1.com + - example2.com target: /home/deploy/web source: release.tar.gz
當然文件比較多的時候,如果一一寫出就過于麻煩了,該scp支持模式匹配:
pipeline: scp: image: appleboy/drone-scp host: - example1.com - example2.com target: /home/deploy/web source: - - release/backend.tar.gz - - release/images.tar.gz + - release/*.tar.gz
當然依舊可以定義觸發條件:
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz + when: + status: success + event: tag
參數簡介:
host 目的主機的域名或是ip port 目標主機的ssh端口 username 目的主機ssh用戶名 password 目的主機ssh密碼 key 訪問主機的秘鑰 target 目的主機目的文件路徑 source 想要拷貝的文件列表 rm 在拷貝之前刪除原文件的開關 timeout 建立tcp連接的最大超時時間插件源碼
該插件作者貌似是一個臺灣同胞。貢獻了其他很多的drone插件,比如k8s 和telegram。這里源碼地址,大致可以看看,主要是了解drone插件的編寫思路。等不忙的時候,繼續完成我的drone-wechat。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32603.html
摘要:插件實現了一半,由于企業微信申請比較麻煩,所以也沒有進展。今天抽出時間,研究了一下插件,主要目的是實現非容器項目的部署。其實就是借助插件,將構建好的項目可執行文件和配置文件發布到指定主機上。直接上文件插件基于實現。完成新項目的部署。 前言 最近連續996加班,一直沒有時間完成drone系列文章。drone-wechat插件實現了一半,由于企業微信token申請比較麻煩,所以也沒有進展。...
摘要:擴展性好當集群的資源嚴重不足而導致排隊等待時,可以很容易的添加一個到集群中,從而實現擴展。用法,選擇盡可能使用這個節點鏡像,填寫,這個容器鏡像是我們的運行環境。更新文件,這里我們只是將中的鏡像更換成最新構建出的鏡像。基于Jenkins的CI/CD實踐[TOC]一、概要提到K8S環境下的CI/CD,可以使用的工具有很多,比如Jenkins、Gitlab CI、新興的drone等,考慮到大多公司...
摘要:本節主要介紹利用部署應用到中。利用部署一個應用,需要原生資源文件如或等。最后一般都會引用通知插件,將構建結果通知部署人員。說到部署策略,不得不說,實現的功能很多,但是足夠的復雜,目前來看,國內只有小紅書用起來了。 前言 本小節應該是這個系列剩下的兩個小節之一了。剩下一個是之前承諾好的drone-wechart插件。本節主要介紹利用helm部署應用到kubernetes中。至于helm,...
摘要:本節主要介紹利用部署應用到中。利用部署一個應用,需要原生資源文件如或等。最后一般都會引用通知插件,將構建結果通知部署人員。說到部署策略,不得不說,實現的功能很多,但是足夠的復雜,目前來看,國內只有小紅書用起來了。 前言 本小節應該是這個系列剩下的兩個小節之一了。剩下一個是之前承諾好的drone-wechart插件。本節主要介紹利用helm部署應用到kubernetes中。至于helm,...
閱讀 2337·2021-11-16 11:52
閱讀 2322·2021-11-11 16:55
閱讀 750·2021-09-02 15:41
閱讀 2981·2019-08-30 15:54
閱讀 3142·2019-08-30 15:54
閱讀 2251·2019-08-29 15:39
閱讀 1507·2019-08-29 15:18
閱讀 968·2019-08-29 13:00