欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

程序员文章站 2022-01-09 09:52:30
一、准备工作 1、Gogs 概念: Gogs 是一款极易搭建的自助 Git 服务。 目的: Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS ......

一、准备工作

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用户授权

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

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

Docker搭建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页面

创建仓库:

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

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

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

代码上传完毕,就可以进行仓库设置,下图圈住的这几个选项是比较常用的,可以自己设置一下。Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

gogs管理面板:可以创建用户、组织等,可以根据自己需求添加Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)Docker搭建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)

Docker搭建Gogs代码仓库——代码自动化运维部署平台(一)

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代码仓库——代码自动化运维部署平台(一)

 

 

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