成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

搭建Gitea+Drone輕量級代碼管理和CI服務

開源
Gitea 是一個開源社區驅動的輕量級代碼托管解決方案,后端采用 Go 編寫,采用 MIT 許可證,它是從Gogs發展而來的

使用環境

IP地址 端口 所屬服務 10.10.9.208 3000 Gitea網頁管理服務 10.10.9.208 2222 SSH、HTTP下載代碼服務 10.10.9.208 7500 Drone-Server服務 10.10.9.208 3100 Drone-Runner。

Gitea

簡介

Gitea 是一個開源社區驅動的輕量級代碼托管解決方案,后端采用 Go 編寫,采用 MIT 許可證,它是從Gogs發展而來的,因為Gogs由單一管理者做決定,因此誕生了Gitea,它采用社區管理模式,增加了諸多新特性,而且由社區眾多的維護者來決定它的發展方向,因此擁有更強的生命力和發展潛力。

Gitea 的首要目標是創建一個極易安裝,運行非常快速,安裝和使用體驗良好的自建 Git 服務。采用 Go 作為后端語言,只要生成一個可執行程序即可。并且他還支持跨平臺,支持 Linux, macOS 和 Windows 以及各種架構,除了 x86,amd64,還包括 ARM 和 PowerPC。

功能特性

  • 支持活動時間線。
  • 支持 SSH 以及 HTTP/HTTPS 協議。
  • 支持 SMTP、LDAP 和反向代理的用戶認證。
  • 支持反向代理子路徑。
  • 支持用戶、組織和倉庫管理系統。
  • 支持添加和刪除倉庫協作者。
  • 支持倉庫和組織級別 Web 鉤子(包括 Slack 集成)。
  • 支持倉庫 Git 鉤子和部署密鑰。
  • 支持倉庫工單(Issue)、合并請求(Pull Request)以及 Wiki。
  • 支持遷移和鏡像倉庫以及它的 Wiki。
  • 支持在線編輯倉庫文件和 Wiki。
  • 支持自定義源的 Gravatar 和 Federated Avatar。
  • 支持郵件服務。
  • 支持后臺管理面板。
  • 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(MySQL) 數據庫。
  • 支持多語言本地化(21 種語言)。
  • 支持軟件包注冊中心(Composer/Conan/Container/Generic/Helm/Maven/NPM/Nuget/PyPI/RubyGems)。

安裝

Gitea的官方文檔有中文版,其中介紹了多種安裝方式,我們以docker部署為例,采用最基本的部署方式,即使用內部sqlite3為數據庫,docker-compose部署配置文件如下:

version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.17.2
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- SSH_PORT=2222
restart: always
networks:
- gitea
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"

其中環境變量的配置很多,我們可以在官方文檔中查看,這里主要修改一下SSH_PORT的端口,因為默認使用22端口,這會和主機的ssh服務端口沖突,因此我們修改一下端口為2222,3000端口為網頁管理端口,其他的配置在第一次訪問時會通過網頁的方式配置。

使用命令啟動鏡像:

docker-compose up -d

配置

因為比較輕量級,所以啟動速度非常快,第一次訪問網頁端會進入初始配置頁面。

這里需要配置的項目有以下幾個:

  • 站點名稱:名稱隨意配置。
  • 服務器域名:就是宿主機的IP地址或者綁定的域名。
  • 基礎URL:這里就是網頁訪問地址,把localhost改為宿主機IP或者域名即可。

在可選設置中需要修改一些配置,服務器和第三方服務設置和管理員賬號設置。

服務器和第三方服務設置

這里主要是啟用本地模式,因為默認會使用CDN連接一些外網的資源,對于服務器不能連接外網的公司,必須要啟用本地模式。一般我們都是企業內使用,因此不需要用戶注冊,通過管理員創建賬號即可。

管理員賬號設置

默認第一個注冊用戶會成為管理員,我們直接在這里創建好管理員信息,這里要注意的是用戶名有一些保留字是不能使用的,例如admin

配置好以后點擊“立即安裝”就可以進入用戶頁面。

導入外部倉庫代碼

Gitea支持從以下代碼管理倉庫導入代碼庫

如果要支持導入,還要進行一些配置,在gitea/conf/app.ini文件中增加如下配置。

[migrations]
ALLOW_LOCALNETWORKS = true
[webhook]
ALLOWED_HOST_LIST = 10.10.9.208/16

然后重啟容器。

docker-compose restart

Drone

簡介

Drone 是一款基于 Docker 的 CI/CD 工具,所有編譯、測試、發布的流程都在 Docker 容器中進行。

開發者只需在項目中包含 .drone.yml 文件,將代碼推送到 git 倉庫,Drone 就能夠自動化地進行編譯、測試、發布。

為什么使用 Drone 作為 CI/CD 工具

  • 功能靈活強大:構建、測試、發布、部署,你想干什么都可以,一套系統全搞定。
  • 兼容性好:支持所有 SCM、所有平臺、所有語言。
  • 環境部署簡單:原生支持 Docker 容器,啟動兩個容器就完成了部署,其它構建、測試、部署工具在使用時會自動從 docker 倉庫拉取。
  • 擴展性強:強大的插件系統,豐富的插件可以免費使用,也可以自定義。
  • 配置簡單:正如官方宣傳的那樣,“configuration as a code”,所有功能、步驟、工具、命令,一個 yaml 配置文件全搞定。
  • 維護簡單:直接復用 SCM 的賬號體系和權限管理,無需注冊用戶、分配權限。

安裝

Drone 由兩部分構成:

  • Server負責任務調度。
  • Runner執行 Pipeline 的具體任務。

因此安裝有兩個鏡像drone/drone:2.13.0drone/drone-runner-docker:1.8.2,首先下載鏡像。

docker pull drone/drone:2.13.0
docker pull drone/drone-runner-docker:1.8.2

Drone和Jenkins這類CI工具不一樣,它必須綁定指定的Git倉庫,因此在啟動的時候必須配置好對應的倉庫信息。我們以Gitea倉庫為例。

準備工作

首先在Gitea里面創建好對應的驗證信息。

生成的令牌要記住,Drone使用OAuth2連接Gitea,這里創建好應用,重定向URI配置Drone服務的登錄地址,雖然我們還沒有創建好Drone服務,但是這里可以先填寫好地址和端口,后面創建Drone服務的時候注意要和這里保持一致。

記錄下客戶端ID和客戶端密鑰。Drone是包含server和runner的,他們之間的通信需要進行加密,可以通過如下方式生成密鑰:

openssl rand -hex 16

drone-server啟動文件配置

version: "3"

services:
drone-server:
image: drone/drone:2.13.0
container_name: drone-server
restart: always
ports:
- "7500:80"
volumes:
- ./data:/data
environment:
- DRONE_GITEA_SERVER=http://10.10.9.208:3000
- DRONE_GITEA_CLIENT_ID=9eedfa2e-b0aa-497e-aaee-c7434755fd9c
- DRONE_GITEA_CLIENT_SECRET=gto_zdessdivpj4gly2lqq2bby3qvsa6xbbrbrngj3rv24pzotsfjw4q
- DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e
- DRONE_SERVER_HOST=10.10.9.208:7500
- DRONE_SERVER_PROTO=http
- DRONE_USER_CREATE=username:xingxing,admin:true
  • DRONE_GITEA_CLIENT_ID(必填) Gitea OAuth 客戶端ID。
  • DRONE_GITEA_CLIENT_SECRET(必填)Gitea OAuth 客戶端密鑰。
  • DRONE_GITEA_SERVER(必填)Gitea 服務器地址,例如 http://10.10.9.208:3000。注意填寫準確的http(s)協議,否則你會看到來自 Gitea 的錯誤報告:unsupported protocol scheme
  • DRONE_RPC_SECRET(必填)在準備工作中使用 openssl rand -hex 16生成的共享密鑰。這個密鑰用于驗證 Drone Server 和 Runner 之間的 RPC 連接。因此,在 Server 和 Runner 上都必須使用相同的密鑰。
  • DRONE_SERVER_HOST(必填)訪問 Drone 時所用的域名或 IP 地址。如果使用 IP 地址,還應該包含端口。 例如 http://10.10.9.208:7500
  • DRONE_SERVER_PROTO(必填)設置服務器的協議,使用:httphttps。 默認為https
  • DRONE_USER_CREATE管理員配置,這里的管理員用戶名是Git倉庫的用戶名,不一定是Git倉庫的管理員,只要是Git倉庫的用戶即可

配置完后啟動drone-server服務。

docker-compose up -d

然后訪問http://10.10.9.208:7500會自動跳到Gitea的授權頁面,授權后填寫郵箱、用戶名、公司即可進入頁面。在這里要注意一點,Drone是沒有登錄界面的,那么它是怎么獲取到Gitea中的倉庫進行構建的呢?

Drone和Gitea共用用戶信息,當我們訪問Drone的時候,如果在相同的瀏覽器內登錄了Gitea,那么Drone就會使用當前Gitea登錄用戶的信息獲取倉庫數據;如果沒有登錄Gitea,那就會跳轉到Gitea等登錄頁面。這個地方讓我困惑了很久,一直不知道為什么有些倉庫可以獲取到,有些倉庫又獲取不到。還要注意一點,如果已經打開了Drone,我們再切換了Gitea登錄的用戶,那么Drone是不會自動進行切換的,這個時候需要在Drone中退出登錄,再刷新頁面登入即可實現切換賬號。

進入后我們就看到了當前可以構建的倉庫,如果在Gitea增加了參與的項目,而這里又看不到,可以點擊Sync按鈕進行手動同步。然后進入倉庫激活它,進行一些設置。

不要接收pull和fork的WebHook消息,Trusted這里只有Drone管理員才能看到,其他用戶是看不到的。

drone-runner啟動文件配置

version: "3"
services:
drone-runner:
image: drone/drone-runner-docker:1.8.2
restart: always
container_name: drone-runner
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=10.10.9.208:7500
- DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=runner
  • DRONE_RPC_HOST填寫 Drone Server 的主機名(以及可選填的端口號)。
  • DRONE_RPC_PROTO傳輸協議:httphttps。
  • DRONE_RPC_SECRET與 Drone Server 共享的密鑰,就是在準備工作中使用 openssl rand -hex 16生成的共享密鑰。
  • DRONE_RUNNER_CAPACITYRunner 可以并發執行的流水線數量,默認:2。
  • DRONE_RUNNER_NAME自定義 Runner 名稱。

驗證runner是否成功。

docker logs drone-runner

日志中包含以下內容則表示啟動成功。

starting the server
successfully pinged the remote server

使用構建

Drone是采用配置文件的方式進行流水線配置的,因此我們首先要在對應的倉庫根目錄下創建.drone.yml文件,內容如下:

kind: pipeline
type: docker
name: test

文件提交后就會自動觸發構建。

我們可以通過手動在Drone中創建一個流水線也可以通過配置觸發方式來自動觸發,在使用Jenkins的時候,我們需要在Git倉庫中配置WebHook,并且選擇WebHook的觸發事件,這樣才能自動觸發構建,但是在安裝配置Drone的時候我們并沒有配置觸發方式,為什么添加了.drone.yml文件就自動觸發構建了呢?原因是因為Drone是與Git倉庫綁定的,當我們在創建Drone服務的時候已經配置了Gitea倉庫的認證信息,那么當我們在Drone中激活一個項目的時候,Drone就會自動在Gitea中為對應的項目創建WebHook。

進入WebHook編輯頁面,會看到默認幫我們選中了一些觸發條件。

在這里配置一下我們的觸發條件,就可以自動觸發構建。在這里要注意一下,Gitea在觸發WebHook的時候,必須配置可以接收WebHook消息的列表,還記得我們在上面配置的webhook.ALLOWED_HOST_LIST嗎?主要就是在這里使用的,如果沒有配置,那么觸發以后就會報錯,報錯信息可以在WebHook配置頁面的下方看到。

到這里我們的Gitea+Drone自動化構建系統就完成了,下面還有一個小技巧。在Drone的項目配置頁面,我們會看到Badges選項。

把里面的內容復制出來,添加到項目的README.md文件頭部,這樣我們就可以在Gitea項目頁面中看到當前流水線的狀態,就像右上角紅框中顯示的那樣。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-06-06 15:18:41

開源GiteaDrone

2018-09-12 09:00:00

數據庫Redis微服務

2012-08-10 14:59:01

代碼

2011-09-08 10:42:38

Web服務器Nginx

2022-01-14 15:42:20

Docker托管代碼

2009-07-14 18:05:28

輕量級Swing組件

2009-07-17 14:38:51

輕量級Swing組件

2024-12-16 07:10:00

DockerDrone開發

2023-02-13 23:52:18

2013-05-15 10:20:16

Paas虛擬化

2011-10-11 20:06:08

2014-06-11 20:46:51

Monitorix監控系統

2022-10-10 12:15:38

CentOSgit服務器

2011-06-08 14:21:02

Java中間件SIwpas

2011-10-11 15:54:57

2009-09-11 08:26:49

Linux系統CRUX 2.6Linux

2023-08-09 08:01:38

場景Redis接口

2024-02-26 07:46:54

Markdown語法標記語言有序列表

2010-07-02 10:14:36

2023-08-29 15:07:35

無服務器計算云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久免费观看 | 亚洲视频二区 | 成人毛片视频免费 | 99这里只有精品视频 | 欧美xxxⅹ性欧美大片 | 成人午夜精品 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产黄视频在线播放 | 国产精品永久免费视频 | 国产精品久久久久久影院8一贰佰 | 拍拍无遮挡人做人爱视频免费观看 | 国产精品免费在线 | 亚洲精品播放 | 国产精品中文字幕在线 | 亚洲91精品 | 久草网址 | 免费在线看a | 国产羞羞视频在线观看 | 国产在线网址 | 国产在线一区二区三区 | 国产精品一区二区三区久久久 | 99只有精品 | 资源首页二三区 | 欧美日韩精品 | 91久久精品一区二区二区 | 国产精品久久久久久久岛一牛影视 | 国产亚洲欧美在线视频 | 国产免费播放视频 | 综合色播| 在线视频一区二区三区 | 国产精品欧美一区二区 | 一区二区免费视频 | 日韩看片 | 久久99国产精品 | 夜夜骚| 成人精品毛片国产亚洲av十九禁 | 久草高清视频 | 国产一区二区视频在线 | 草久在线视频 | 一区二区小视频 | 欧洲精品久久久久毛片完整版 |