摘要:插件實(shí)現(xiàn)了一半,由于企業(yè)微信申請(qǐng)比較麻煩,所以也沒有進(jìn)展。今天抽出時(shí)間,研究了一下插件,主要目的是實(shí)現(xiàn)非容器項(xiàng)目的部署。其實(shí)就是借助插件,將構(gòu)建好的項(xiàng)目可執(zhí)行文件和配置文件發(fā)布到指定主機(jī)上。直接上文件插件基于實(shí)現(xiàn)。完成新項(xiàng)目的部署。
前言
最近連續(xù)996加班,一直沒有時(shí)間完成drone系列文章。drone-wechat插件實(shí)現(xiàn)了一半,由于企業(yè)微信token申請(qǐng)比較麻煩,所以也沒有進(jìn)展。今天抽出時(shí)間,研究了一下scp插件,主要目的是實(shí)現(xiàn)非容器項(xiàng)目的部署。其實(shí)就是借助scp插件,將構(gòu)建好的go項(xiàng)目可執(zhí)行文件和配置文件發(fā)布到指定主機(jī)上。本項(xiàng)目依舊基于baa-cicd項(xiàng)目。
.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實(shí)現(xiàn)。所以關(guān)鍵是ssh的相關(guān)設(shè)置比較重要。比如允許root用戶ssh登錄,以及密碼和rsa秘鑰幾種登錄方式的配置。我們這邊基本上都是openssh,所以可以先了解一下openssh的設(shè)置。這邊我主要允許root登錄,編輯 /etc/ssh/sshd_config,注意:PermitRootLogin yes。
關(guān)于rsa秘鑰登錄,這邊就不做更多介紹了。
此處deploy_rsa是放置了ssh登錄秘鑰的文件。
當(dāng)然光是拷貝了文件,并不能完成部署。所以此處引用了另外一個(gè)插件ssh,簡(jiǎn)單假設(shè)項(xiàng)目是用supervisior管理進(jìn)程,那么ssh執(zhí)行supervisorctl -c /rc/conf/supervisord.conf reload命令。完成新項(xiàng)目的部署。
其實(shí)此處再引入一個(gè)插件并不是特別合適,感覺有點(diǎn)麻煩,其實(shí)個(gè)人感覺scp引入一個(gè)script參數(shù),比較好,執(zhí)行一些拷貝完成以后的操作指令。
scp 插件介紹配置簡(jiǎn)介:
scp插件通過ssh拷貝文件到目標(biāo)主機(jī),下面是如何在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
項(xiàng)目需要從多個(gè)文件拷貝到目的主機(jī)多個(gè)文件的配置示例:
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
此處注意的就是一一對(duì)應(yīng)關(guān)系。我理解的場(chǎng)景是,在項(xiàng)目中配置文件和可執(zhí)行文件處于不同的文件夾下,或多個(gè)配置文件。
一般項(xiàng)目部署為了高可用,會(huì)將項(xiàng)目部署在多臺(tái)主機(jī)上,所以下面是一個(gè)多目標(biāo)主機(jī)的配置示例:
pipeline: scp: image: appleboy/drone-scp - host: example.com + host: + - example1.com + - example2.com target: /home/deploy/web source: release.tar.gz
當(dāng)然文件比較多的時(shí)候,如果一一寫出就過于麻煩了,該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
當(dāng)然依舊可以定義觸發(fā)條件:
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz + when: + status: success + event: tag
參數(shù)簡(jiǎn)介:
host 目的主機(jī)的域名或是ip port 目標(biāo)主機(jī)的ssh端口 username 目的主機(jī)ssh用戶名 password 目的主機(jī)ssh密碼 key 訪問主機(jī)的秘鑰 target 目的主機(jī)目的文件路徑 source 想要拷貝的文件列表 rm 在拷貝之前刪除原文件的開關(guān) timeout 建立tcp連接的最大超時(shí)時(shí)間插件源碼
該插件作者貌似是一個(gè)臺(tái)灣同胞。貢獻(xiàn)了其他很多的drone插件,比如k8s 和telegram。這里源碼地址,大致可以看看,主要是了解drone插件的編寫思路。等不忙的時(shí)候,繼續(xù)完成我的drone-wechat。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27166.html
摘要:插件實(shí)現(xiàn)了一半,由于企業(yè)微信申請(qǐng)比較麻煩,所以也沒有進(jìn)展。今天抽出時(shí)間,研究了一下插件,主要目的是實(shí)現(xiàn)非容器項(xiàng)目的部署。其實(shí)就是借助插件,將構(gòu)建好的項(xiàng)目可執(zhí)行文件和配置文件發(fā)布到指定主機(jī)上。直接上文件插件基于實(shí)現(xiàn)。完成新項(xiàng)目的部署。 前言 最近連續(xù)996加班,一直沒有時(shí)間完成drone系列文章。drone-wechat插件實(shí)現(xiàn)了一半,由于企業(yè)微信token申請(qǐng)比較麻煩,所以也沒有進(jìn)展。...
摘要:擴(kuò)展性好當(dāng)集群的資源嚴(yán)重不足而導(dǎo)致排隊(duì)等待時(shí),可以很容易的添加一個(gè)到集群中,從而實(shí)現(xiàn)擴(kuò)展。用法,選擇盡可能使用這個(gè)節(jié)點(diǎn)鏡像,填寫,這個(gè)容器鏡像是我們的運(yùn)行環(huán)境。更新文件,這里我們只是將中的鏡像更換成最新構(gòu)建出的鏡像。基于Jenkins的CI/CD實(shí)踐[TOC]一、概要提到K8S環(huán)境下的CI/CD,可以使用的工具有很多,比如Jenkins、Gitlab CI、新興的drone等,考慮到大多公司...
摘要:本節(jié)主要介紹利用部署應(yīng)用到中。利用部署一個(gè)應(yīng)用,需要原生資源文件如或等。最后一般都會(huì)引用通知插件,將構(gòu)建結(jié)果通知部署人員。說到部署策略,不得不說,實(shí)現(xiàn)的功能很多,但是足夠的復(fù)雜,目前來(lái)看,國(guó)內(nèi)只有小紅書用起來(lái)了。 前言 本小節(jié)應(yīng)該是這個(gè)系列剩下的兩個(gè)小節(jié)之一了。剩下一個(gè)是之前承諾好的drone-wechart插件。本節(jié)主要介紹利用helm部署應(yīng)用到kubernetes中。至于helm,...
摘要:本節(jié)主要介紹利用部署應(yīng)用到中。利用部署一個(gè)應(yīng)用,需要原生資源文件如或等。最后一般都會(huì)引用通知插件,將構(gòu)建結(jié)果通知部署人員。說到部署策略,不得不說,實(shí)現(xiàn)的功能很多,但是足夠的復(fù)雜,目前來(lái)看,國(guó)內(nèi)只有小紅書用起來(lái)了。 前言 本小節(jié)應(yīng)該是這個(gè)系列剩下的兩個(gè)小節(jié)之一了。剩下一個(gè)是之前承諾好的drone-wechart插件。本節(jié)主要介紹利用helm部署應(yīng)用到kubernetes中。至于helm,...
閱讀 1547·2021-11-04 16:10
閱讀 2806·2021-09-30 09:48
閱讀 2848·2019-08-29 11:31
閱讀 1586·2019-08-28 18:22
閱讀 3238·2019-08-26 13:44
閱讀 1329·2019-08-26 13:42
閱讀 2854·2019-08-26 10:20
閱讀 763·2019-08-23 17:00