云社区 博客 博客详情
云社区 博客 博客详情

如何多账号使用Git访问CodeHub代码库

伦语春秋 发表于 2020-03-23 09:55:56 03-23 09:55
伦语春秋 发表于 2020-03-23 09:55:56 2020/03/23
0
2

【摘要】 在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。本文将产生如何使用多个账号通过Git客户端访问CodeHub代码库

引言:在“DevOps能力之屋(Capabilities House of DevOps中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。本文由作者与浩初协同完成,对浩初的工作表示感谢。

越来越多的企业或者开发者在使用华为云DevCloud进行软件交付,很多用户在公司项目或者个人项目开发场景,经常需要使用不同的华为云账号通过Git客户端向DevCloud CodeHub提交代码。对于多账号访问CodeHub代码仓库的场景,用户一方面希望减少输入认证凭据(用户名/密码或者SSH密钥)、修改仓库地址等手工操作,另一方面在使用不同的用户名向相应的代码仓库进行提交,例如公司项目的仓库使用某个用户名,而个人项目的仓库使用另一个用户名。

通常情况下,用户第一时间想到的方法是在.ssh目录下配置conf文件中为不同的用户创建对应的密钥。在代码仓库的Git地址中的服务器地址不同时,这种方法是可行的。但是对于华为云DevCloud来讲,不同的代码仓库的服务器地址都是codehub.devcloud.huaweicloud.com,使用这种方法是不可行的,仍然需要修改地址。

如何解决多账户访问使用Git访问CodeHub呢?方案需要结合Git config文件、Conditional includesCredential helperHTTS访问方式等能力来实现。首先,让我们先了解一下相关基础知识。

对于ConfigGit3个级别,分别是systemgloballocal。整个系统有一个system配置,每个用户有一个global配置,而每个git仓库对应一个local配置,只有在仓库目录才能看到此配置文件。一般来讲,可以通过global配置来设置用户信息、密码存储机制等,此配置文件是用户宿主目录下的~/.gitconfig。通过命令git config --global -l查看相关的配置,如图1所示:

                                               

1 git命令查看global配置

Git2.13.0版本以后提供了conditional includes功能,可以在配置文件中包含另外一个配置文件。详情可以参考https://git-scm.com/docs/git-config

为了存储认证凭证,Git提供了小帮手Credential helperCredential Helper主要有managerwincredstore等几种方式。若安装Git时安装了GitGUI,自动会在system级别中设置credential.helpermanager

1       准备工作

1.1     安装合适的Git版本

如前所述,此方案需要Git版本不低于2.13,因此首先要确认下是否安装了满足要求的Git版本。

如果没有安装Git,请参考华为云DevCloud帮助中Git客户端安装与配置

1.2     创建代码仓库

本文使用了2个华为云DevCloud账号:一个是TenetA,是个人租户账号,一个是TenetB/User1,是企业TenetB的子用户User1

本文使用了2个代码仓库:(1)个人租户TenetA在项目iBlog中“从模板创建”创建代码仓库NodeJsIBlog,模板为iBlog-OpenSource;(2)企业TenetB子用户User1GalleryAPP中“从模板创建”创建代码仓库KotlinGallery,模板选择KotlinGallery-OpenSource

2       多账号访问方案

本部分将涉及本地目录如何规划、如何配置git以实现多账号访问代码仓库。

2.1     规划本地目录

为实现多账号访问,规划好本地目录是非常重要的一步。本地目录结构与文件建议如下:

|--D:
|   |--workspace

|       |--DevCloud
|            |-- TenetA
|                |--config_TenetA
|            |-- User1
|                |--config_User1

本地目录与文件说明如下:

n  DevCloudGit源文件夹,本文涉及的所有代码仓库远端仓库均为DevCloudCodeHub

n  TenetA是租户TenetA在本地的代码仓库文件夹,其中config_TenetA是此租户的Git配置文件。

n  User1是租户TenetB在本地的代码仓库文件夹,其中config_User1是次用户的Git配置文件。

2.2     配置Git

对于租户TenetAconfig_TenetA,配置内容如下:

[user]
name = TenetA
email = TenetA@company.com
[credential]
helper = store --file=D:/workspace/DevCloud/TenetA/cred_TenetA

cred_TenetATenetA的认证凭据存储文件,用户首次输入用户名密码时将自动创建。

对于租户TenetB的子用户User1config_User1,配置内容如下:

[user]
name = User1
email = User1@company.com
[credential]
helper = store --file=D:/workspace/DevCloud/User1/cred_User1

cred_User1是企业子用户的密码存储文件,用户输入用户名密码时会自动创建。

接着,在系统当前用户的用户文件夹下,在配置文件.gitconfig文件,修改内容如下:

[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[color]
    ui = true
#
删除内容Start

#[user]

#name = XXX

#email = XXX @company.com

#[credential]

#helper = manager

#删除内容End

#新增内容Start

[includeIf "gitdir:D:/workspace/DevCloud/TenetA/"]

       path = D:/workspace/DevCloud/TenetA/config_TenetA

[includeIf "gitdir:D:/workspace/DevCloud/User1/"]

       path = D:/workspace/DevCloud/User1/config_User1

#新增内容End

如前文所述,此修改主要是使用conditional includes 的功能,通过includeIf关键字分别针对不同用户引用特定的config文件。

在修改完成后,使用git命令进行确认:

git config --golbal –l

3       场景验证

3.1     使用TenetA拉取NodeJsIBlog

我们可以进入TenetA文件夹,执行如下命令:

git pull https://codehub.devcloud.cn-north-4.huaweicloud.com/iBlog00002/NodeJsIBlog.git

需要指出的是本处使用HTTPS方式访问代码仓库。代码仓库的HTTPS地址可以从DevCloud CodeHub的代码仓库列表中获取,如下图所示:

执行上述的pull命令后,会提示输入用户名、密码,如下图所示:

用户名与密码从DevCloudCodeHub中获取,如下图所示:

输入用户名、密码后,点击OK按钮,应该可以成功拉取代码,如下图所示:

3.2     使用User1拉取KotlinGallery

进入TenetA文件夹,执行如下命令:

git pull https://codehub.devcloud.cn-north-4.huaweicloud.com/GalleryAPP00001/KotlinGallery.git

注意:这里需要使用代码仓库的HTTPS地址,文中地址可以从DevCloudCodeHub中进行获取,如下图所示

执行上述的pull命令后,会提示输入用户名、密码,如下图所示:

注意:这里的用户名密码可以从DevCloudCodeHub中进行获取,如下图所示:

输入用户名、密码后,点击OK按钮,成功拉取代码,如下图所示:

3.3     使用User1KotlinGallery提交代码

进入KotlinGallery文件夹,修改任意文件,然后执行如下命令:

git status
git add *
git commit -m "gradle file modify"
git push

执行完毕后,可以通过以下两种方式进行验证,

方式一:执行git log指令

方式二:进入华为云DevCloudCodeHub的相应仓库进行查看,如下图所示:

3.4     使用TenetANodeJsIBlog提交代码

进入NodeJsIBlog文件夹,修改任意文件,然后执行如下命令

git status
git add *
git commit -m "file app.js modify"
git push

执行完毕后,可以通过以下两种方式进行验证,

方式一:执行git log指令



方式二:进入华为云DevCloud的CodeHub的相应仓库进行查看,如下图所示


至此,本文实现了多账号使用Git访问CodeHub,希望本方案可以帮助大家更好地使用华为云DevCloud的代码托管服务。在多账号访问CodeHub的情景下,大家务必遵守公司的信息安全要求,并定期修改华为云DevCloud代码仓库HTTPS的用户密码,降低安全风险。



华为云DevCloud作为一站式云端DevOps平台,集成华为近30年研发实践和前沿理念,面向开发者提供研发工具服务,让软件开发简单高效。



登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 2
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您没有权限执行当前操作

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消