搭建android的repo管理仓库

步骤

一、搭建GIt服务器,配置gitosis

1、说明:

服务器端:ubuntu@10.114.27.143, 简称:server端;
客户端:gitadmin@10.114.27.143, 简称:client端;
Android工程:android-10.0.0_r21

2、server端安装必要软件

sudo apt-get install git-core openssh-server openssh-client

3、安装配置gitosis

3.1、下载gitosis(server)

下载gitosis(server)

如果失败,则:


下载gitosis(server)

最后都没down下来,从同事那吧copy过来了。

3.2、安装gitosis(server)

安装gitosis(server)

3.3、为mitosis创建系统用户(server)

创建一个禁用密码的用户git,如果git已经存在,需删除git用户,再重新创建。


创建禁用密码的git用户

3.4、新建并配置gitosis管理员(client端),创建一个gitadmin用户

配置gitosis管理员

3.4.1、client端生成pub.key

client端生成pub.key

将生成的id_rsa.pub拷贝到server端的tmp目录下


id_rsa.pub拷贝到server端

3.4.2、执行gitosis-init (server端)

gitosis-init

此时会在/home/git目录下生成一些目录,如果其他用户需要clone gitosis-admin.git的权限,需要执行


Screen Shot 2022-02-23 at 10.19.07 AM.png

3.4.3、从server端clone gitosis-admin.git(client端)

clone gitosis-admin.git

其他用户需要clone gitosis-admin.git权限

其中,gitosis.conf是gitosis的配置文件,用户配置用户和权限,keydir/是所有组成员的公钥。


配置用户和权限

二、配置git-daemon-run

Git-daemon-run实际上是一个脚本管理工具,用来启动git-daemon.

1、安装git-daemon-run (server端)

安装git-daemon-run

2、配置git-daemon-run (server端)

配置git-daemon-run

修改为


配置git-daemon-run

参数说明:
a) —export-all
使用该选项后,在git仓库中就不必创建git-daemon-export-ok文件。如果不使用该选项,则还需要创建该文件,即
touch git-daemon-export-ok

b) —enable=receive-pack

3、重启git daemon(server端)

重启git daemon

这里error了,supervisor出现异常了。


warning git-daemon unable to open superviseok file does not exist

4、配置Supervisor

Supervisor有两个主要的组成部分:
a) supervisord ,运行supervisor时会启动一个进程supervisord, 它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现奔溃时自动重启。
b) supervisorctl,是命令行管理工具,可以用来执行stop、start、reatart等命令,来对这些字进程进行管理。

4.1、安装

sudo pip install supervisor

4.2、创建配置文件

创建配置文件

4.3、配置文件说明

打开配置文件


打开配置文件

默认的配置文件有一个大坑需要注意,supervisord.pid以及supervisor.sock是放在/tmp目录下的,但是/tmp目录是存放临时文件的,里面的文件会被linux系统删除,一旦这些文件丢失就无法在通过supervisorctl来执行restart和stop命令了,将只会得到[unix://tmp/supervisor.sock不存在的错误]

配置文件有一个大坑

默认情况下,进程的日志文件大道50M时将进行分割,最多保留10个文件。当然这些配置可以针对每个进程单独配置。


针对每个进程单独配置

使用include,在配置文件的最后有一个[include]的配置项,跟Nginx一样,可以include某个文件夹下的所有配置文件,这样我们就可以为每个进程或相关的几个进程配置单独写成一个文件。

4.4、启动supervisord

执行supervisord命令,将会启动supervisord进程,同时在配置文件中设置的进程会相应的启动。


supervisord -u user

更多参数请参考文档

supervisorctl 命令介绍

supervisorctl stop groupworker

注意:显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。也可以参考这里
开机自动启动 Supervisord
Supervisord 默认情况下并没有被安装成服务,它本身也是一个进程。官方已经给出了脚本可以将 Supervisord 安装成服务,可以参考这里查看各种操作系统的安装脚本
centos7+上面可以使用 initscripts/centos-systemd-etcs 这个脚本
把这个文件重命名并放到 /usr/lib/systemd/system/supervisord.service 路径下。
然后执行一下命令,重新加载系统服务:
systemctl daemon-reload
执行这个命令,启动服务:
systemctl start supervisord
查看服务状态:
systemctl status supervisord
可以看到服务以正常启动:

Main PID 4076 (supervisord)

开机启动

centos
vim supervisord.service
#supervisord.service start
[Unit] 
Description=Supervisor daemon
[Service] 
Type=forking 
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf 
ExecStop=/usr/bin/supervisorctl shutdown 
ExecReload=/usr/bin/supervisorctl reload 
KillMode=process 
Restart=on-failure 
RestartSec=42s
[Install] 
WantedBy=multi-user.target
#supervisord.service end

将文件拷贝到/usr/lib/systemd/system/
cp supervisord.service /usr/lib/systemd/system/
启动服务
systemctl enable supervisord
验证一下是否为开机启动
systemctl is-enabled supervisord

依旧未解决git-daemon-run的问题。

但可以使用另一个版本的 git-daemon: git-daemon-sysvinit.
使用命令:sudo aptitude install git-daemon-sysvinit
安装 git-daemon,然后修改配置文件 /etc/default/git-daemon如下:

# Defaults for git-daemon initscript
# sourced by /etc/init.d/git-daemon
# installed at /etc/default/git-daemon by the maintainer scripts
#
# This is a POSIX shell fragment
#
#GIT_DAEMON_ENABLE=false
GIT_DAEMON_ENABLE=true
GIT_DAEMON_USER=gitdaemon
#GIT_DAEMON_BASE_PATH=/var/lib
GIT_DAEMON_BASE_PATH=/home/repo
#GIT_DAEMON_DIRECTORY=/var/lib/git
GIT_DAEMON_DIRECTORY=/home/repo
 
# Additional options that are passed to the Daemon.
#GIT_DAEMON_OPTIONS=""
GIT_DAEMON_OPTIONS="--export-all --enable=upload-pack --enable=upload-archive --enable=receive-pack --informative-errors"

然后重启服务:
sudo service git-daemon restart

三、配置搭建Android repo服务器

1、配置repo (client端)

配置repo (client端)

2、创建版本根目录(server端)

创建版本根目录

3、配置default.xml文件(client端)

default.xml文件时跟android源码配套的,根据google 的android源码下的default.xml(.repo/manifests/default.xml)进行修改。

3.1、clone manifest.git

配置default.xm

Git clone可能会报权限的异常,需要先登陆gitosis配置权限。


先登陆gitosis配置权限

添加members并增加权限


添加members并增加权限

建立本地与远程的关联


本地与远程的关联

3.2、下载android-10.0.0_r21代码

下载android-10.0.0_r21代码

3.3、从aosp源码找到所有git仓库

因为厂商不用repo管理,所以源码里面也没有manifest/default.xml。
default.xml是跟Android代码配套的,可参考google Android源码下的default.xml(.repo/manifests/default.xml)进行修改。直接从google源码里复制default.xml


从aosp源码找到所有git仓库

配置default.xml


配置default.xml

将default.xml文件push到仓库 (client端)


将default.xml文件push
建立相关的git仓库(client端)

用gitadmin用户添加权限
复制default.xml和mitosis.py到管理员的gitoso-admin目录下,执行脚本 ./gitosis.py default.xml gitosis.conf。生成的gitosis.conf需要手动修改一下。删掉default.xml和gitosio.py。
git add .
git commit -m “allow .git”
git push
初始化源码,并于远程仓库关联,提交后push。
将default.xml和脚本文件gennames_and_init_push_git.proj.py复制到已经删除掉.repo和所有.git目录的源码根目录下,并执行脚本:./getnames_and_init_push_git_proj.py default.xml

等待。。。。。。脚本的目的是遍历default.xml里的每一个project,进入到目录里,init git,提交git,关联远程仓库,push到原程仓库。
更新manifest.git(用于控制repo init时拉取哪些git)
将更新后的default.xml复制到管理员的manifest目录下提交到原程服务器,更新manifest.git.
用户拉取代码
repo init -u git@10.114.27.143:17435/manifest.git -m default.xml
repo sync

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容