自建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. jquery ajax一个坑爹的问题

    问题描述: jquery ajax dataType为json时,如果json数据不严格,不进入success方法,控制台也不会报错. data.json {"result":&q ...

  2. HTML | CSS | JavaScript 常见错误

    持续更新 超链接鼠标悬浮后的状态 a:hover 拼写 图片文件的路径问题

  3. GoCN每日新闻(2019-10-12)

    GoCN每日新闻(2019-10-12) 1. Go 1.13中sync.Pool是如何优化的 https://colobu.com/2019/10/08/how-is-sync-Pool-impro ...

  4. javascript预览本地图片

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CF1221G Graph And Numbers(折半搜索+图论)

    答案=总数-无0-无1-无2+无01+无02+无12-无012 直接详细讲无0和无2 无0为 01和11,无2为01和00,显然二者方案数相同,以下考虑无0 考虑折半搜索,后半段搜索,二进制点权0的位 ...

  6. nRF51822 配对之device_manager_init 调用,以及保证 用户数据存储 的Flash 操作不与device manager 模块冲突

    昨天 遇到了一个烦心的问题,被老外客户怼了两句,恼火,很想发火,发现英文不够用,算了,就不跟直肠的鬼佬一般见识.说正事. 最近的一个nRF51822+MT2503 钱包防丢项目,准备接近量产了.昨天做 ...

  7. Kubernetes Pod概述

    Pod简介 Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程. 一个Pod封装一个应用容器,Pod代表部署的一个单位. Pods提供两种共享资源: ...

  8. Spring Cloud Eureka配置文件详解

    本篇内容用来说明Eureka 常用配置的含义. 以下配置都是以 eureka.server 开头: 参数 描述 备注 eureka.server.eviction-interval-timer-in- ...

  9. Python3基础 yield 在无返回值的函数中的简单示例

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  10. QStackedWidget居中布局

    QStackedWidget* m_pStackedWidget= new QStackedWidget(this); QWidget* btnWidget = new QWidget; QWidge ...