一、准备工作

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. 搭建LAMP环境部署GLPI资源管理系统

    搭建LAMP环境部署GLPI资源管理系统 一.关闭防火墙和Selinux [root@localhost ~]# systemctl disable --now firewalld [root@loc ...

  2. Linux 系统定时任务:crontab,anacron

    Linux 系统定时任务:crontab,anacron 一.Cron 服务 1. 启动服务 service cron start 2. 关闭服务 service cron stop 3. 重启服务 ...

  3. 数据库权限grant

    数据库权限grant 创建授权grant 权限类型(priv_type) 权限类型 代表什么? ALL 所有权限 SELECT 读取内容的权限 INSERT 插入内容的权限 UPDATE 更新内容的权 ...

  4. Spark 集群安装部署

    安装准备 Spark 集群和 Hadoop 类似,也是采用主从架构,Spark 中的主服务器进程就叫 Master(standalone 模式),从服务器进程叫 Worker Spark 集群规划如下 ...

  5. 安装了Python2.X和Python3.X后Python2.X IDLE打不开解决办法总结

    安装了Python2.X和Python3.X后Python2.X IDLE打不开,两个版本都卸载后重装仍然打不开,在网上找了几种办法,希望对大家能有所帮助 1.首先查看环境变量是否配置正确 配置方法网 ...

  6. 若依框架前端使用antd,IE11浏览器无法正常显示问题

    话不多说,直接上才艺,找到vue.config.js,把第11行的 mock 删除掉就 IE11就正常显示了, 然而项目还是不支持IE10 以及以下版本,哪位小伙伴有解决方法,可以留言交流下

  7. NOIP 模拟4 T2

    本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spf ...

  8. GO学习-(9) Go语言基础之切片

    Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...

  9. 分布式调度任务-ElasticJob

    一:问题的引出与复现 在一个风和日丽的工作日,公司运营发现系统的任务数据没有推送执行,整个流程因此停住了.我立马远程登陆服务器,查看日志,好家伙,系统在疯狂的打印相同的一段日志:c.d.d.j.i.e ...

  10. ARM NEON指令集优化理论与实践

    ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...