自建Git服务Gogs和CI/CD服务Drone

项目:https://gogs.io

Gogs运行

docker run -d --name=gogs -p 10022:22 -p 10088:3000 -v /storage/app/gogs:/data gogs/gogs

挂载在/storage/app/gogs

配置文件:

APP_NAME = 内部协作开发仓库
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = 192.:13306
NAME     = gogs
USER     = root
PASSWD   =
SSL_MODE = disable
PATH     = data/gogs.db

[repository]
ROOT = /data/git/gogs-repositories
ENABLE_LOCAL_PATH_MIGRATION = true
FORCE_PRIVATE = false
DISABLE_HTTP_GIT = false

[server]
DOMAIN           = 192.
HTTP_PORT        = 3000
ROOT_URL         = http://192.:10088/
DISABLE_SSH      = false
SSH_PORT         = 10022
START_SSH_SERVER = false
OFFLINE_MODE     = false

[mailer]
ENABLED = true
HOST= smtp.exmail.qq.com:465
USER=
PASSWD=
FROM=`xx <xx@xxx.com>`
SUBJECT_PREFIX=`[xxx提醒你]`

[service]
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL     = true
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = true

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /data/logs

[security]
INSTALL_LOCK = true
SECRET_KEY   = Tgjni2mMDkKqB88

Gogs备份容灾

需要定时备份数据库:

# gogs_backup.sh

mysqldump -uroot -pxxx -h192. -P13306 gogs > /backup/sql/mygogs_`date +%Y%m%d_%H%M%S`.sql

#删除一周之前的备份文件
find /backup/sql/mygogs* -type f -mtime +7 -exec rm -f {} \;

定时器:

#每天凌晨5点备份
0 5 * * * /bin/bash -x /backup/gogs_backup.sh > /dev/null 2>&1

和同步/storage/app/gogs文件夹:

# gogs_backup2.sh

nohup rsync -e 'ssh -p 22' -avL --delete --exclude "logs" --exclude "ssh" --exclude "gogs/data/sessions" --exclude "gogs/git/.ssh" superpika@192.168.0.101:/storage/app/gogs /backup/data >> /backup/data/rsync.log 2>&1 &

定时器:

# 每30分一次同步
30 * * * * /bin/bash -x /backup/gogs_backup2.sh > /dev/null 2>&1

需要添加:

vim ~/.ssh/authorized_keys

搭建Drone

编辑以下 docker-compose.yaml, 只需更改http://192.:10088:

version: '2'
services:
  # 服务器主端
  drone-server:
    container_name: "mydrone-server"
    image: drone/drone:latest
    # 端口开放8080
    ports:
      - 8080:8000
      - 9000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=http://127.0.0.1
      # Gogs必备
      - DRONE_GOGS=true
      - DRONE_GOGS_URL=http://192.:10088
      - DRONE_SECRET=xxxigogo

  # 从端
  drone-agent:
    container_name: "mydrone-agent"
    image: drone/agent:latest

    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=xxxigogo

启动:

docker-compose up -d

我们开放了8080端口, 打开127.0.0.1:8080登录使用gogs帐号!

Drone实践

我们先登录Gogs:http://192.:10088, 建立一个仓库testmydrone.

先提交:

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin ssh://git@192.:10022/xxxx/testmydrone.git
git push -u origin master

然后登录http://127.0.0.1:8080勾选项目!

勾选完之后, 我们在我们的仓库新建一个文件.drone.yml

pipeline:
  backend:
    image: golang
    commands:
      - go build

还有一个源码main.go:

package main

func main(){
}

提交:

git add --all
git commit -m "push"
git push

自建Git服务Gogs和CI/CD服务Drone的更多相关文章

  1. 微服务架构下 CI/CD 如何落地

    本文系云原生应用最佳实践杭州站活动演讲稿整理.杭州站活动邀请了 Apache APISIX 项目 VP 温铭.又拍云平台开发部高级工程师莫红波.蚂蚁金服技术专家王发康.有赞中间件开发工程师张超,分享云 ...

  2. drone 0.8.8 集成gogs 进行ci/cd 处理

    drone 是一个不错的基于容器的ci/cd 工具,运行简单,同时插件也挺多,基本常见的轻量级的任务都是可以搞定的 环境准备 使用docker in docker docker-compose 文件 ...

  3. Salesforce学习之路(四)利用Jenkins和Git实现Salesforce的CI/CD功能

    上文提到,基于CRM的二次开发是必不可少的,但是在实际项目中CI/CD是不可忽略的一个重要部分,与传统的Java,Python项目不同,如果对Salesforce进行持续集成和持续部署呢? 结合找到的 ...

  4. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

  5. DevOps - CI&CD

    1 - CI与CD的联系与区别 持续集成(Continuous Integration).持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的过 ...

  6. 近期关于CI/CD策略以及git分支模型的思考

    近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...

  7. 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD

    什么是CI/CD 持续集成(Continous Intergration,CI)是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每 ...

  8. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

  9. 唱吧DevOps的落地,微服务CI/CD的范本技术解读

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

随机推荐

  1. Web前端鼠标悬停实现显示与隐藏效果

    css定义,偏移量,相对定位,绝对定位 显示与隐藏 二维码相对于微信图标定位 鼠标悬停微信图标上显示 鼠标离开微信图标时隐藏 什么是定位,就是定义网页标签在运行时显示的位置 css提供Position ...

  2. Python 企业面试题集锦之Python基础

    △字符串.列表.元组.字典每个常用的5个方法? 字符串: 字符串用单引号(')或双引号(")括起来,不可变. s.strip(c):去除空格或指定的字符c:lstrip/rstrip: s. ...

  3. 微信小程序 base64格式图片的显示及保存

    当我们拿到如下base64格式的图片(如下图)时, base64格式的图片数据: 如何显示 ? 使用image标签,src属性添加data:image/png;base64, (注意:若imgData ...

  4. java JBDC操作

    类似:c# 里面的ado.net  增删改查,动手做Demo  (当然实际企业开发很少用这种方式 ). ps:以前从一开始 搞ssm spring Boot spring Mvc 什么都懂一点.什么都 ...

  5. ubuntu之路——day12.1 不用tf和torch 只用python的numpy在较为底层的阶段实现简单神经网络

    首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...

  6. [BUAA软工]Alpha阶段事后分析

    设想和目标 虽然我们是从零开始的一个自定义项目,但语音Coding助手从一开始的设计与目标就很明确:加入语音接口使其能在shell端实现命令语音实现以及编辑运行脚本,设计前端编辑器并将后端shell与 ...

  7. elastic stack安装运行(docker)

    https://www.docker.elastic.co 注:目前阿里云为7.4 elasticsearch 参考https://www.elastic.co/guide/en/elasticsea ...

  8. Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition

    Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition IC ...

  9. mysql增删改查sql语句

    未经允许,禁止转载!!!未经允许,禁止转载!!! 创建表   create table 表名删除表    drop table 表名修改表名   rename table 旧表名 to 新表名字创建数 ...

  10. Qt QSplitter任意拆分窗口

    Qt拆分窗口可以使用QSplitter,也可以使用比较容易使用布局控件来完成,本文章给出使用QSplitter分割窗口的例子. QSplitter 继承自QFrame,而QFrame又继承自QWidg ...