前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转Lighthouse】自建轻量级Git仓库Gitea并结合Drone实现CICD

【玩转Lighthouse】自建轻量级Git仓库Gitea并结合Drone实现CICD

原创
作者头像
雨落凋殇
修改2022-05-05 22:13:28
2.2K1
修改2022-05-05 22:13:28
举报
文章被收录于专栏:雨落凋殇

前言

  作为开发人员使用Git进行版本管理是必不可少的一部分,但似乎从去年开始,最大的代码仓库GitHub在大陆经常无法访问,又或者经常超时。但是国内哪些Git仓库站点如Gitee、coding等似乎对个人用户不太友好,至少我是用不习惯Gitee的。于是我有自建Git仓库的想法,但目前看来网上最流行的自建git无非就是GitLab,而GitLab对服务器的性能要求极高。作为个人开发者,一般情况下大多数人的选择是1c2g的服务器,很显然这个配置无法带动GitLab。   我发现了一款优秀的Git托管程序Gitea,它是基于Gogs衍生而来的,且使用Golang作为开发语言。在安装非常便捷,同时功能也够个人开发者使用,还能结合Drone实现CICD。

服务器准备

这里我使用一台全新的腾讯云轻量云服务器基于Docker安装。你需要登录腾讯云平台,进入轻量应用服务器控制台如下图。找到你的服务器,在更多菜单下选择重装系统(如果你不是新服务器,又或者服务器已经有数据了,请不要随意重装,请手动安装Docker)。

在接下来的操作中选择Docker基础镜像下的CentOS7.6-Docker20然后点击确定,当然你也可以按照你自己的喜好选择其他的发行版。你也选择系统镜像,然后手动安装docker。

此时带有Docker的Centos系统已经安装完成,但是目前我们是不知道密码的,你可以点击下图中的重置密码按钮来设置密码,然后使用ssh工具如xshell、finalshell等链接你的服务器来进行接下来的操作。

也可以直接使用顶部的登录按钮直接登录。我暂且就使用上面这个按钮登录方便一点。登录成功以后使用docker -v命令查看Docker是否安装成功。同时使用命令docker-compose -v检查下是否安装了docker-compose,如图所示我们的服务器上已经安装有Docker了,接下来就可以进行下一步操作了。

接下来还有尤为重要的一步,放行端口。在轻量应用服务器的详情界面有个防火墙Tab页,进入后点击添加规则。

按照如图所示添加放行规则。端口这里填30001,222,你也可以按照自己的规划,使用其他未被使用的端口。

安装Gitea代码托程序

创建Gitea所需的文件夹,并设置相关权限。

代码语言:javascript
复制
# 创建文件夹
sudo mkdir -p /opt/gitea
# 设置权限
sudo chmod 777 /opt/gitea
# 创建hosts文件
touch /opt/gitea/hosts

切换到刚创建的文件夹下。

代码语言:javascript
复制
# 切换目录cd /opt/gitea

执行下面的命令创建docker-compose.yaml文件。注意修改其中的30001和222为你自己规划的端口。USER_UID和USER_GID设置为当前用户的id,可以使用命令id查询。

代码语言:javascript
复制
cat > docker-compose.yaml <<EOF
version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: gitea/gitea:1.13.3
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ${PWD}:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ${PWD}/hosts:/etc/hosts
    ports:
      - "30001:3000"
      - "222:22"
EOF

接下来执行命令启动gitea,如果没有报错信息,恭喜你已经安装成功了。

代码语言:javascript
复制
# 启动 终端关闭后服务停止
docker-compose up
# 后台启动服务
docker-compose up -d 

现在你可以使用浏览器访问http://服务器ip:30001,会出现下面的界面。

)

点击上图右上角的登录按钮进入Gitea安装流程。如果你绑定有域名,你也可以将SSH 服务端口基础URL设置为你的域名,否则设置为服务器ip,最后点击立即安装按钮。如果在刚才的安装步骤中,你没有设置管理员账户,现在立即注册一个用户即可。

登录账户后,可以在右上角点击加号创建一个仓库开始使用了。

安装Drone自动构建工具

Gitea还能结合Drone实现CICD,如果你有这方面的需求,可以接着往下看。

首先登录Gitea,点击右上角头像进入设置页,找到应用Tab页。填写OAuth2应用程序信息,重定向URL填写服务器IP:Drone的端口如:http://81.2.2.217:30002/login,其中30002端口会在下面的步骤中使用到。在此之前请参考上面的方式在轻量应用服务器防火墙界面放行30002、30003端口。

点击创建以后会得到id和secret,注意这很重要,接下来会用到。

创建drone文件夹。

代码语言:javascript
复制
# 创建文件夹
sudo mkdir -p /opt/drone/data
# 设置权限
sudo chmod 777 -R /opt/drone

编写yaml文件。注意配置environment中的各项参数和密码。其中runner中的DRONE_RPC_SECRET要和server中的DRONE_RPC_SECRET保持一致。

代码语言:javascript
复制
# 切换目录
cd /opt/drone
# 创建文件
cat > docker-compose.yaml <<EOF
version: "3"

services: 
  server:
    image: drone/drone:1
    container_name: drone_server
    restart: always
    environment: 
      DRONE_GITEA_SERVER: http://Gitea服务器ip或者域名:30001
      DRONE_GITEA_CLIENT_ID: "Gitea OAuth2"
      DRONE_GITEA_CLIENT_SECRET: "Gitea OAuth2客户端密钥"
      DRONE_RPC_SECRET: a9e1160c4d69783a8fbdee4289c493as
      DRONE_SERVER_HOST: 服务器ip或者域名:30002
      DRONE_SERVER_PROTO: http
      DRONE_USER_CREATE: username:对应gitea中的管理员账号名称,admin:true
    ports:
      - "30002:80"
    volumes: 
      - "./data:/var/lib/drone"

  runner:
    image: drone/drone-runner-docker
    container_name: drone_runner_docker
    restart: always
    environment: 
      DRONE_RPC_PROTO: http
      DRONE_RPC_HOST: 服务器ip或者域名:30002
      DRONE_RPC_SECRET: a9e1160c4d69783a8fbdee4289c493as
      DRONE_RUNNER_CAPACITY: 5
      DRONE_UI_USERNAME: drone
      DRONE_UI_PASSWORD: 123456
      DRONE_RUNNER_NAME: rains
    ports:
      - "30003:3000"
    volumes: 
      - "/var/run/docker.sock:/var/run/docker.sock"
EOF

启动服务,如果没有报错,恭喜安装成功!

代码语言:javascript
复制
# 启动 终端关闭后服务停止
docker-compose up
# 后台启动服务
docker-compose up -d 

最后访问ip:30002,使用Gitea账号登录以后就可以访问到drone页面如下图。

之后在你的项目中创建.drone.yml文件,编写相关规则,并在Drone的页面中启用后就可以实现CICD,相关教程可以参见Drone官网

结语

最后希望各位都能成功自建Git仓库,摆脱GitHub无法访问的苦恼。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 服务器准备
      • 安装Gitea代码托程序
        • 安装Drone自动构建工具
          • 结语
          相关产品与服务
          轻量应用服务器
          轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档