【DevOps工具篇】SCM之Gitlab
@TOC
推荐超级课程:
强烈建议学习本文之前,先阅读学习此篇:
GitLab和GitHub也作为旨在改善用户体验的软件而受到关注。值得注意的是,Git使得在由信息学开发的项目中进行不同的参与和同时工作成为可能。
什么是Git?
Git是由Linux创始人Linus Torvalds生产的,是一个在软件开发过程中受到青睐的控制和源代码管理系统,它注重速度和分布式。这个系统于2005年发布了第一个版本,基本上帮助您在互联网上而不是在硬盘或计算机上保存和控制您正在编写的项目。 Git是一款遵循GNU通用公共许可证第二版的自由软件,它指的是一个完全授权的仓库。但是,有必要详细回答“Git是什么?”这个问题。Git是一个平台,它能够在没有互联网访问或集中存储的情况下管理项目的整个历史,并托管整个版本控制系统。 这款软件允许您随时访问项目的任何版本,同时也允许多人同时在同一项目上工作。因此,交换代码变得非常容易。Git也可以离线使用,由于其快速的性能和低空间消耗,也经常被用户所青睐。 随着您正在进行的项目的发展,以多种方式跟踪这些研究变得困难。如果您想在项目中回到某个点进行错误检测或保持工作安全,您需要制作备份。特别是在项目的后期阶段,建议使用Git,因为处理这些备份在它们所占的空间和问题的大小方面都变得相当困难。
Git命令有哪些?
- git init:这个命令将执行命令的目录转换为Git仓库,并创建一个带有git扩展名的目录。您有机会在这里保存更改,并随时将它们发送到远程开源或秘密服务器。
- git status:指的是显示您在管理系统中所处目录当前状态的命令。感谢这个命令,您可以查看自您上次注册以来是否有其他用户对代码进行了更改。
- git checkout -b username:这个命令创建一个名为username的分支,并允许您在管理系统中切换到这个分支。从您在这里进行的更改,直到您切换到另一个分支或与其他分支合并,都会存储在这个分支上。
- git add:帮助您选择文件以供Git管理系统跟踪。添加这个命令时,当您输入git add *时,您确保所有已修改的文件都进入Git跟踪列表。
- git commit:在仓库服务中使用git add命令后,您输入git commit命令时,会立即将所有已进入跟踪列表的文件以其当前状态保存。这个命令的确切拼写形式是commit -m “我的消息”。
- git push:这个命令将系统中所有已提交的文件发送到远程服务器,是Git命令中最常用的之一。git push是整个管理系统中执行代码交换的基本命令之一,它简化了数据流的连续性。
什么是GitHub?
GitHub可以被描述为版本控制系统选项中偏好使用Git的用户的软件项目存储服务。尽管GitHub为私有仓库提供付费使用选项,但它因对开源项目免费而脱颖而出。GitHub是最受开源项目欢迎的存储服务之一。
关于这个被称为解码者社交媒体的存储服务最常被问到的问题之一是“什么是GitHub?”GitHub在版本控制系统中扮演远程仓库的角色,代表了一个结构,来自世界不同地区的程序员可以非常舒适地参与其中,从而允许团队协作。
使用GitHub时需要注意的第一点是主文件夹命名规则。创建您的用户帐户后,您托管的项目会通过分支、分叉、仓库和版本库等名称来引用。这种情况象征着具有某种不同使用方式的主文件夹功能。在这种情况下,分支可以被视为仓库的子文件夹。
例如,分叉意味着复制由其他人制作的仓库,并同时使其准备好在计算机上克隆。在通过GitHub制作的项目中,程序员可以自我测试,将其他程序员产生的代码与自己的代码进行比较,并专注于工作的缺失方面。此外,这个远程存储服务得到了许多软件语言的支持。
什么是GitLab?
“什么是GitLab?”这个问题的答案在更好地解析GitLab和GitHub之间的区别方面非常重要。GitLab可以被定义为一个基于Web的Git仓库应用程序。这个仓库服务支持持续集成(CI)、持续交付(CD)、错误记录、代码审查和wiki支持。最初,GitLab的绝大部分是用Ruby编写的。
GitLab的后期发展
后来,一些需要性能的部分使用Go语言进行了重新编码。GitLab与GitHub最大的不同之处在于,它包括无限代码存储、无限磁盘空间和代码连续性等选项。GitLab允许您使用Git技术免费在远程服务器上保持代码的私密性或开放性。GitLab基本上是GitHub的开源版本。
GitLab允许您免费托管私有代码,并拥有非常好的需求管理系统。因此,无需额外的管理系统(如Redmine、Jira等),您就可以完成所有工作。此外,借助这个存储服务,您可以创建无限数量的私有和开源仓库,并免费存储在GitLab的服务器上。
GitLab通过整合GitHub向用户承诺的所有功能而受到关注。除了所有这些功能之外,它还开放使用特殊代码,这使得GitLab经常被程序员所青睐。还应该注意的是,在这个仓库服务的免费版本中,有一个只能通过在自有服务器上安装来供内部用户访问的服务。
为什么使用GitLab?
GitLab被IT专家青睐,以便作为团队执行软件项目。您可以通过官方网站免费作为成员开始使用这个仓库服务,而无需在计算机上安装任何东西。如果您想在自有服务器上安装GitLab并付费,您可以借助新的社区功能再次提供远程服务器存储服务,而无需付费。
GitLab为许多不同用户参与准备的项目提供无限磁盘空间和无限代码存储选项,以多种方式将编码体验提升到下一个层次。这个服务仓库在安全措施、代码审查、持续交付和错误修正方面提供最佳效率,同时也使得程序员更容易在社区内提升自己。
Docker Compose部署GitLab
这是我们最初版本的docker compose文件,用于设置GitLab容器的样子。
docker-compose.yml
version: '3.8'
services:
gitlab-server:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab-server
一旦您准备好了上面的docker-compose.yml
文件,您可以在包含docker-compose.yml
文件的同一目录下的终端中运行以下命令。
docker compose up
docker compose up
将执行两个操作。
首先,如果您的本地机器上不存在gitlab/gitlab-ce
docker镜像,它将执行docker pull gitlab/gitlab-ce
。
拉取docker镜像后,它将执行docker run gitlab/gitlab-ce
。
这样您就可以看到docker compose如何将两个独立的命令合并到一个YAML
文件中。
过了一段时间后,您的GitLab容器将准备就绪并运行,但由于我们没有像上一篇文章中使用-p 8000:80
那样在任何端口上发布它,所以您无法在浏览器中看到GitLab仪表板。如果您运行docker ps
,您将看到容器运行状况良好,并且没有从宿主机映射任何端口。它只在容器端有80端口。
让我们将端口映射添加到docker-compose.yml
文件中。
version: '3.8'
services:
gitlab-server:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab-server
ports:
- '8000:80'
要停止由docker compose管理的正在运行的容器,您可以在运行docker compose up
的同一个终端窗口尝试CTRL + C
,这应该会停止GitLab容器。
现在,为了重新运行容器并确保更改生效,即端口映射,我们需要使用额外的标志运行docker compose up
--build
和 --force-recreate
docker compose up --build --force-recreate
--build
将确保从更新的YAML文件重新构建容器,而--force-recreate
即使其配置和镜像没有变化,也会重新创建容器。
运行上述命令后,您可以通过访问 http://localhost:8000
来检查GitLab仪表板。
要登录,默认的用户名是root
,对于密码,您需要从新的终端运行这个docker compose命令。
docker compose exec -it gitlab-server cat /etc/gitlab/initial_root_password
但是等一下,我们不会那样做,因为这种获取密码的方式不是持久的,每次我们重新构建或者删除并重新创建GitLab容器时,密码都会发生变化,
所以让我们使用docker compose YAML
文件为Gitlab设置一个默认的用户名
和密码
。
version: '3.8'
services:
gitlab-server:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab-server
ports:
- '8088:80'
environment:
GITLAB_ROOT_EMAIL: "admin@example.com"
GITLAB_ROOT_PASSWORD: "Abcd@0123456789"
现在,通过CTRL + C
停止正在运行的容器,然后使用以下命令重新构建并运行容器
docker compose up --build --force-recreate
在加载GitLab到http://localhost:8000之后,现在您应该能够使用您定义的root 邮箱
和密码
登录了。
继续操作,创建一个仓库。
回到终端,按CTRL + C
。这应该会停止GitLab容器。现在通过运行以下命令重新启动容器
docker compose up --build --force-recreate
容器启动后,您应该能够使用之前的相同的邮箱
和密码
登录GitLab,并且您的仓库应该还在那里。
让我们尝试删除容器,首先使用CTRL + C
停止容器,然后运行docker compose down
。这应该会永久移除GitLab容器。
让我们通过运行以下命令重新创建容器
docker compose up
现在您应该能够使用相同的邮箱
和密码
登录,因为我们已经在YAML
文件中设置了这些信息,并且每次docker compose创建这个GitLab容器时,邮箱
和密码
都会被设置为我们在YAML
文件中定义的内容。
持久化Gitlab数据
docker volumes
如果您想在任何灾难发生或由于任何原因容器可能被删除的情况下保持数据安全,您需要通过附加一个docker卷来启动您的GitLab容器,这个docker卷将永久保存GitLab容器中的数据。
让我们使用docker compose将docker卷附加到我们的GitLab容器上:
version: '3.8'
services:
gitlab-server:
image: 'gitlab/gitlab-ce:latest'
container_name: gitlab-server
ports:
- '8088:80'
environment:
GITLAB_ROOT_EMAIL: "admin@example.com"
GITLAB_ROOT_PASSWORD: "Abcd@0123456789"
volumes:
- ./gitlab/config:/etc/gitlab
- ./gitlab/data:/var/opt/gitlab
volume
用于指定卷,使用源
和目标
路径,其中源路径位于宿主机上,目标路径位于容器中。
在这种情况下,我试图将GitLab容器中的/etc/gitlab
持久化到宿主机的文件夹./gitlab/config
中。
/etc/gitlab
包含初始root密码以及其他一些秘密和证书。
我还试图将GitLab容器中的/var/opt/gitlab
持久化到宿主机的文件夹./gitlab/data
中。
/var/opt/gitlab
包含所有数据,包括仓库、缓存、注册表等。
通过附加卷启动GitLab容器后,一切都将保持持久,无论容器重新启动、终止还是被删除。