一、准备工作

1、Gogs

概念:
Gogs 是一款极易搭建的自助 Git 服务。
目的:
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

2、搭建前环境准备

1、docker环境,192.168.1.20
2、nginx服务器 192.168.1.10
3、mysql数据库5.7,192.168.1.20
4、电脑安装:intellij IDEA 开发人员编写代码工具
       git        开发人员将本地代码用git提交到git远程仓库。

二、Docker搭建gogs,并上传项目

1、安装gogs

mkdir -p /server/docker/gogs
docker run --name=gogs -p 10022:22 -p 10080:3000 \
-v /home/docker/server/gogs/data:/data \
-itd gogs/gogs:latest
chmod -R 777 /server/docker/gogs/data      #为运行gogs程序做的目录授权,下文会提到 
访问gogs页面:192.168.1.20:10080

gogs搭建完成,配置nginx域名访问: http://git.test.com

server {
server_name git.test.com;
listen 80; location / {
proxy_pass http://192.168.1.20:10080;
}
}

首次运行gogs安装程序需填写数据库信息,首先在mysql数据库创建gogs用户:  

登录mysql数据库:
create database gogs; #创建gogs数据库
create user gogs; #创建gogs用户
grant all privileges on gogs.* to gogs@'%' identified by 'gogs'; #为gogs用户授权

禁止用户注册并设置gogs页面的管理员账号:

注:上图的应用基本设置
应用名称:可以换成自定义名称
仓库根目录:使用默认就行了,默认/data/git/gogs-repositories。如果采用了数据卷映射,比如我这里因为/server/docker/gogs/data映射/data,需要给这个目录777权限,负责会创建失败。
域名:使用ssh时使用的域名或者IP
SSH 端口号:gogs启用ssh时使用的端口号,默认22端口,如果修改了这个端口号,那么在上面创建容器时要对应的将10022端口映射到修改的端口号,如果不启用ssh,则置空
HTTP 端口号:gogs应用启动的http端口,默认3000,如果修改了这个端口号,那么在上面创建容器时要对应的将10080端口映射到修改的端口号
应用 URL:即打开应用的url地址,因为这里采用了docker,所以我们要修改成宿主机的地址转发去访问,比如这里我的宿主机地址:192.168.1.20,它的10080端口会转发到容器的3000端口,所以这里填:http://192.168.1.20:10080/
日志路径:gogs的日志保存路径,默认就行了 ##安装程序运行完成后,会生成一个app.ini文件,在宿主机映射目录/server/docker/gogs/data/gogs/conf/app.ini,其中有相关的配置信息,尽量不要修改此文件,可能导致服务无法访问。

2、管理、配置gogs页面

创建仓库:

上传项目代码:根据提示操作(后文有相关的命令补充)

代码上传完毕,就可以进行仓库设置,下图圈住的这几个选项是比较常用的,可以自己设置一下。

gogs管理面板:可以创建用户、组织等,可以根据自己需求添加

三、相关知识补充

1、代码在本地仓库和远程仓库之间上传、下载的方法

(1)本地git工具: Git操作命令

在本地git使用001用户建一个项目:test
进行git全局配置:
git config --global user.name "001"
git config --global user.email "xxxxxxxxxxx@163.com"
创建一个仓库:
mkdir test
cd test
git init           #生成本地.git文件
touch README.md
git add mall #mall为需要上传的文件夹或文件
git commit -m "mall" #对上传文件的描述
git branch -a #查看所有分支
git branch slave #创建slave分支
git checkout slave #切换到slave分支
git remote add origin http://git.test.com/001/test.git  #关联远程仓库,远程仓库名字是origin
git push -u origin master #上传分支 重新上传文件
git rm -r 文件夹
git rm 文件
把你要重新上传的文件放入项目中 再提交一次
git add 要上传的文件
git commit -m "删除的某文件的提示"
git push -u origin master #提交到远程仓库 Git remote 修改源
git remote -v #查看clone下来的git源
git commit -m "Change repo." # 先把所有为保存的修改打包为一个commit
git remote remove origin # 删掉原来git源
git remote add origin [YOUR NEW .GIT URL] # 将新源地址写入本地版本库配置文件
git push -u origin master # 提交所有代码 git仓库项目代码迁移(将git.test.com的项目迁移到git.prod.com中)
mkdir gitspace
cd gitspace
git clone http://git.test.com/001/test.git    #git克隆远程项目
cd test
git remote -v     #查看git源
git branch -a     #查看项目所有分支
git remote rename origin old-origin
git remote add origin http://git.prod.com/001/test.git
git push -u origin --all
git push -u origin --tags 将远端分支全部变成本地分支
1、首先将项目的所有分支clone下来,并且变成本地分支。
mkdir some_repo
cd some_repo
git clone --bare http://git.test.com/001/test.git .git
git config --unset core.bare
git reset --hard 上面的意思是,首先随便建立一个文件夹some_repo,然后在里面只将xxx的.git文件夹拷贝下来!此时,some_repo里面还是没有任何repo的文件,只有一个隐藏文件夹.git。然后解除core.bare模式,然后再恢复所有的repo文件。此时,所有的xxx的所有的分支都是本地分支了!
2、将本地分支全部推到远端
git remote rename origin old_origin
git remote add origin http://git.prod.com/001/test.git
git push -u origin --all
git push -u origin --tags

(2)intellij IDEA软件使用:(其实也是使用git工具上传)

IDEA软件添加git:
打开 Setting 界面,点击Tools —— Terminal。 修改右侧菜单栏 Shell path ,将cmd.exe设置为你自己Git安装路径下的bin\git.exe(Tab name 改为Git,这个可改可不改) 再打开首页面最底下的一栏,Terminal出现git命令界面 下载代码:file——>new——>project from version control——>git——>输入存放代码地址: http://git.test.com/001/test.git
上传代码:打开首页——>open——>选中本地代码——>右击代码目录——>git——>add——>成功后再点击git,commit directory——>成功后点击git,push

还可以在IDEA界面直接点击Terminal出现git命令界面:输入git命令上传代码(更方便)

2、git上传代码遇到的错误

1、git上传代码卡住(Total 7072 (delta 2508), reused 6844 (delta 2376), pack-reused 0)

git config --global sendpack.sideband false
git config --local sendpack.sideband false
git config --global http.postBuffer 524288000
git config --global https.postbuffer 524288000
git config --global -l
git config --local -l
执行完这些命令后,再上传git push -u origin master,可能会稍微卡一会儿,然后就成功了。

2、修改保存在本地的git用户名密码

git config --global user.name "用户名"
git config --global user.password "密码"
git config --global -l #查看

3、上传代码报错:error: failed to push some refs to 'http://git.test.com/001/test.git'

#完整报错:
error: failed to push some refs to 'http://git.test.com/001/test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因分析:这个问题是因为远程库与本地库不一致造成的
解决方法:可以把远程库同步到本地库,再把本地库推送到远程库
    git pull --rebase origin master
    git push -u origin master

4、上传代码报错:error: RPC failed; result=22, HTTP code = 413

#完整错误:
error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date
原因分析:上传文件太大,超过了最大限制
解决方法:nginx传输限制:(nginx.conf)
       client_max_body_size 400M;
     git传输限制:
       git config --global http.postBuffer 524288000
       git config --global https.postBuffer 524288000

愿你阳光开朗自信不羁,因为你从来都只是你。

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)的更多相关文章

  1. Docker搭建Jenkins+Gogs+Maven/Gradle——代码自动化运维部署平台(三)

    一.简介 1.CI/CD CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/C ...

  2. Docker搭建Jenkins+Maven/Gradle——代码自动化运维部署平台(二)

    一.简介 1.Jenkins 概述: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins ...

  3. Linux自动化运维部署+运维

    自动化部署及配置(Cobbler/Kickstart) 红帽发布的网络安装服务器套件 Cobbler可以说是一大Linux装机利器,可以快速的建立网络安装环境,据说比Kickstart还要好用. 分布 ...

  4. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  5. Telegraf+Influxdb+Grafana自动化运维监控

    概述:Telegraf收集信息,influxdb时序数据库存储数据,grafana平台展示数据,并进行监控告警,组成一个自动化运维监控平台. 一.influxdb ​ InfluxDB是一个由Infl ...

  6. 自动化运维:网站svn代码上线更新(flask+saltstack)

    阶段性总结:      跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结.   1.整体架构: 后台:nginx+uwsgi  #nginx提供w ...

  7. 自动化运维经验谈,以及为什么Docker是革命性的

    互联网+的需要 在信息越来越繁杂的互联网时代,公司所运行的项目越来越多,项目相关服务繁多,服务之间存在复杂的依赖关系,运维与管理任务越来越繁重,手工交付需要花费很多的人力与时间,且安全性和时效性均无法 ...

  8. 自动化运维工具 SaltStack 搭建

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-devops-saltstack-in-cloud/index.html#N10072 ...

  9. python网络自动化运维之环境搭建(EVE-NG+pycharm)

    参考了很多资料,发现现在很多环境用的都是GNS3加linux下的python,几乎没有是用EVE-NG加上pycharm的教程,EVE的功能如此强大,存在的教程却较少,这里我出一篇教程供使用EVE作为 ...

随机推荐

  1. Hive 默认分隔符

    引言 Hive 中的默认分隔符是 ^A (\001) ,这是一种特殊的分隔符,使用的是 ASCII 编码的值,键盘是打不出来的 查看 Hive 默认分隔符文件 Linux 上的文件 以 \001 作为 ...

  2. Cron 任务入门指南

    Cron 是您可以在任何类 Unix 操作系统中找到的最有用的实用程序之一.它用于安排命令在特定时间执行.这些预定的命令或任务被称为 "Cron 任务".Cron 通常用于运行计划 ...

  3. nginx的四层转发功能

    架构图 配置过程 配置web服务器 # 1.配置web01,更改配置文件 [root@web01 /etc/nginx/conf.d]# vi test1.conf server { listen 8 ...

  4. STM32 SWD下载口无法下载的原因和解决办法

    1.SWD的下载口在程序中被禁用,IO口被设置为普通IO口 2.芯片被锁,原因有可能是程序执行了不正确的访问导致芯片被锁 3.供电不正常 4.SWD烧了 解锁原因: 在下载程序的时候有时候会发生错误导 ...

  5. shell脚本编写习惯

    前言:在公众号看一篇比较不错的shell脚本文章,自己学习同时,加一些例子分享下,哪里做得不好,请多多指教哈一.在脚本写注释 1 #脚本的参数 2 #脚本的用途 3 #脚本的注意事项 4 #脚本的写作 ...

  6. GO学习-(28) Go语言操作influxDB

    Go语言操作influxDB 本文介绍了influxDB时序数据库及Go语言操作influxDB. InfluxDB是一个开源分布式时序.事件和指标数据库.使用Go语言编写,无需外部依赖.其设计目标是 ...

  7. Jmeter- 笔记12 - 性能测试分析 & 性能测试流程

    性能测试分析 场景设计.监视图表: 设计场景:阶梯式.波浪式 监视器: 收集用于性能分析的数据:TPS图表.聚合报告\汇总报告.察看结果树.响应时间.吞吐量 服务器资源监控:cpu.内存.磁盘io 分 ...

  8. JUC 并发编程--09, 阻塞队列: DelayQueue, PriorityBlockingQueue ,SynchronousQueue, 定时任务线程池: ScheduledThreadPoolExecutor

    先看DelayQueue 这个是用优先级队列实现的无界限的延迟队列,直接上代码: /** * 这个是 {@link DelayQueue} 延时队列 的验证使用类 */ class MyDelayed ...

  9. 码农飞升记-04-OracleJDK 与 OpenJDK 的区别和联系以及 OracleJDK builds 与其他 OpenJDK builds 的选择问题

    在前两篇 OracleJDK是什么?OracleJDK的版本怎么选择? 和 OpenJDK是什么? 中分别介绍了 OracleJDK 和 OpenJDK 的来历以及概念,那可能就有小伙伴要问了:那我到 ...

  10. InfluxDB总结

    一.简介 InfluxDB(时序数据库)influxdb是一个开源分布式时序.时间和指标数据库,使用 Go 语言编写,无需外部依赖.其设计目标是实现分布式和水平伸缩扩展,是 InfluxData 的核 ...