[小團隊自動化] (三) 輕量化自建 Drone CI For Gitea —— 打造本身的CI/CD工做流

(三) 輕量化自建 Drone CI For Gitea —— 打造本身的CI/CD工做流


寫在前邊mysql

這一篇文章是基於 Gitea+Drone CI+Vault 打造屬於本身的CI/CD工做流系列文章第三篇,讓咱們一塊兒來完成 dronegitea 的搭配使用,這篇內容比較簡單和容易,也是最終篇。nginx

在第一篇文章中(一) Drone CI For Github —— 打造本身的CI/CD工做流,咱們一塊兒瞭解了Drone For Github 的部署和使用,一塊兒感覺了 Drone的簡單強大的功能帶來的方便和快捷。git

在第二篇文章中(二) Drone CI使用Vault做爲憑據存儲 —— 打造本身的CI/CD工做流,咱們一塊兒瞭解了Vault 的部署和使用,並瞭解和學習了怎麼爲 Drone 指定 Secret 的存儲爲 Vault ,解決了在實際的應用中,不一樣項目的敏感數據重複使用以及權限控制問題。github

在更早的一篇文章中基於Gitea打造一個屬於你本身的代碼託管平臺,咱們一塊兒瞭解了 Gitea 的部署和使用,感覺 Gitea 做爲一個輕量化的代碼託管平臺,依然擁有豐富的功能和美觀的界面。web

咱們分別瞭解了 DroneVaultGitea 的部署和使用,那麼咱們爲何不把它們結合起來,打造一個專屬於本身的CI/CD工做流呢?sql

廢話少說,說幹就幹,開始搞事。docker

組合DroneVaultGitea

接來下,咱們開始將DroneVaultGitea組合到一塊兒,構建一個專屬於本身的CI/CD工做流json

若是你對它們還不瞭解,請參考我以前的文章。tcp

編寫 docker-compose.yml

這裏咱們結合以前三篇文章的docker-compose.yml分佈式

加入 gitea 以後,只須要修改 drone-serverenvironment

  1. 刪除 DRONE_GITHUB_SERVER DRONE_GITHUB_CLIENT_ID DRONE_GITHUB_CLIENT_SECRET

  2. 加入 DRONE_GITEA_SKIP_VERIFY DRONE_GITEA_SERVER

version: "3.7"
services:
 nginx:
 image: nginx:alpine
 container_name: dronetest_nginx
 ports:
 - "80:80"
 restart: always
 networks:
 - dronenet
 mysql:
 image: mysql:5.7
 restart: always
 container_name: dronetest_mysql
 environment:
 - MYSQL_ROOT_PASSWORD=root_password
 - MYSQL_DATABASE=drone
 - MYSQL_USER=drone
 - MYSQL_PASSWORD=drone_password
 networks:
 - dronenet
 volumes:
 - /path/to/conf/my.cnf:/etc/mysql/my.cnf:rw
 - /path/to/data:/var/lib/mysql/:rw
 - /path/to/logs:/var/log/mysql/:rw
 vault:
 image: vault:latest
 container_name: vault
 restart: always
 networks:
 - dronenet
 volumes:
 - ./vault/file:/vault/file
 - ./vault/config:/vault/config
 - ./vault/logs:/vault/logs
 cap_add:
 - IPC_LOCK
 environment:
 - VAULT_ADDR=http://127.0.0.1:8200
 command: vault server -config=/vault/config/local.json #這句很是重要,必定要替換原有的Dockerfile中的CMD,否則會自動初始化,生成的數據都在docker logs中,不說你確定找不到。dog.jpg,因此我選擇手動初始化
 memcache:
 image: memcached:alpine
 container_name: test_memcache
 restart: always
 networks:
 - dronenet
 gitea:
 image: gitea/gitea:latest
 restart: always
 container_name: test_gitea
 networks:
 - dronenet
 ports:
 - "22:22"			#git服務對外使用22端口會更加方便
 volumes:
 - /var/lib/gitea:/data:rw	#gitea的data數據應該作持久化,映射到宿主機磁盤上
 drone-server:
 image: drone/drone:1.0.0-rc.5 #不要用latest,latest並不是穩定版本
 container_name: dronetest_server
 networks: 
 - dronenet
 volumes:
 - ${DRONE_DATA}:/var/lib/drone/:rw
 - /var/run/docker.sock:/var/run/docker.sock:rw
 restart: always
 environment:
 - DRONE_DEBUG=true
 - DRONE_DATABASE_DATASOURCE=drone:drone_password@tcp(dronetest_mysql:3306)/drone?parseTime=true   #mysql配置,要與上邊mysql容器中的配置一致
 - DRONE_DATABASE_DRIVER=mysql
 - DRONE_GITEA_SKIP_VERIFY=false
 - DRONE_GITEA_SERVER=http://test_gitea:3000
 - DRONE_GIT_ALWAYS_AUTH=false
 - DRONE_RUNNER_CAPACITY=2
 - DRONE_RPC_SECRET=YOU_KEY_ALQU2M0KdptXUdTPKcEw  #RPC祕鑰
 - DRONE_SERVER_PROTO=http			#這個配置決定了你激活時倉庫中的webhook地址的proto
 - DRONE_SERVER_HOST=dronetest.yiranzai.top
 - DRONE_USER_CREATE=username:yiranzai,admin:true  #管理員帳號,是你想要做爲管理員的Gitea用戶名
 drone-vault:
 image: drone/vault
 container_name: dronetest_vault
 restart: always
 networks:
 - dronenet
 environment:
 - SECRET_KEY=7890bcce69bb685a9a424767fe9d1be1	 #和drone-agent通訊的加密
 - DEBUG=true									
 - VAULT_ADDR=http://vault:8200
 - VAULT_TOKEN_RENEWAL=84h
 - VAULT_TOKEN_TTL=168h
 - VAULT_TOKEN=s.mx4KQycrFAfiaHIuPnNLhFCy		#這裏不要用root token,用上邊生成的只讀token
 drone-agent:
 image: drone/agent:1.0.0-rc.5
 container_name: dronetest_agent
 restart: always
 networks:
 - dronenet
 depends_on:
 - drone-server
 volumes:
 - /var/run/docker.sock:/var/run/docker.sock:rw
 environment:
 - DRONE_SECRET_SECRET=7890bcce69bb685a9a424767fe9d1be1
 - DRONE_SECRET_ENDPOINT=http://dronetest_vault:3000
 - DRONE_RPC_SERVER=http://dronetest_server
 - DRONE_RPC_SECRET=YOU_KEY_ALQU2M0KdptXUdTPKcEw
 - DRONE_DEBUG=true
 - DRONE_LOGS_DEBUG=true
 - DRONE_LOGS_PRETTY=true
 - DRONE_LOGS_NOCOLOR=false
networks:
 dronenet:
複製代碼

結束了?

是的結束了,若是你仔細看了前兩篇文章的話,會明白,這一點都不奇怪,從 github 切換到 gitea 只須要簡單改動配置便可。

本系列前兩篇文章是重中之重,請着重閱讀。

總結


本篇文章簡單歸簡單,可是總體的配合仍是有一些須要注意的點須要說明一下

  • gitea 的帳號就是用來登錄 drone 的帳號,在 drone-server 中的 environment : DRONE_USER_CREATE 指明管理員的用戶名
  • 全部的url都要寫上協議
  • Vault 初始化生成的五個 unseal keyroot token 必定要記住而且不能泄露
  • drone-agent 能夠有多個,作分佈式。
  • vault 也是能夠分佈式的

系列文章

有什麼問題,歡迎評論或郵件。 好了,繼續划水去了。

相關文章
相關標籤/搜索