gitLab是一个仓库管理平台,其支持Saas和自管理安装方式。对于一般的需求,免费版本就已经足够使用。在国内环境中,我们可以使用极狐GitLab。
自托管安装
当我们对于代码有自托管要求的时候,我们就需要对GitLab进行自托管的安装了。
安装GitLab
Centos7安装
- 安装必要的服务 ``` sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd —permanent —add-service=http sudo firewall-cmd —permanent —add-service=https sudo systemctl reload firewalld
sudo firewall-cmd —permanent —add-service=http sudo firewall-cmd —permanent —add-service=https sudo systemctl reload firewalld
2. 下载并安装
```bash
wget https://omnibus.gitlab.cn/el/7/gitlab-jh-14.7.2-jh.0.el7.x86_64.rpm
sudo rpm -Uvh gitlab-jh-14.7.2-jh.0.el7.x86_64.rpm
- 访问GitLab实例
当我们安装完成了GitLab
后,要尽量早的访问GitLab
的实例。因为在我们的安装过程中没有指定管理员的自定义密码,所以GitLab
为我们初始化了一个密码。这个密码保存在/etc/gitlab/initial_root_password文件中,因为安全原因,这个文件后在24小时后自动删除。所以我们要尽早访问GitLab
实例,使用用户名root
和文件中指定的密码登录,并修改root
的密码。
- 后续配置
在我们安装完成GitLab
后,基本工作就算是完成了。下来就是我们对于GitLab
的进一步的管理和配置了。其中就有gitlab-runner
(在GitLab
中使用CI/CD功能时需要我们使用gitlab-runner
)的安装和配置。
安装 gitlab-runner
当我们使用gitlab
时,我们通常会使用到gitlab
的CI/CD功能。使用这个功能的前提是每个项目都有对应的gitlab-runner
,所以我们就需要搭建自己的gitlab-runner
,使用自己搭建的gitlab-runner
是没有分钟数限制的。
docker安装
使用docker
安装gitlab-runner
的前提是我们已经安装好了docker
。如果没有安装,可以参考docker安装。
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
注册gitlab-runner
服务:
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
命令行
常用命令行
gitlab-ctl start
gitlab-ctl stop
gitlab-ctl restart
使用
CI/CD
当我们需要在GitLab
中使用CI/CD
的时候,我们需要编写.gitlab-ci.yml
文件。我们编写的.gitlab-ci.yml
文件依据其中的配置在合适的时机触发GitLab的CI/CD。
.gitlab-ci.yml
文件
在gitlab-ci.yml
中,我们可以定义以下内容:
- 要运行的脚本
- 要包含的其他配置文件和模板
- 依赖项和缓存
- 要按顺序运行的命令和要并行运行的命令
- 将应用程序部署到的位置
- 无论是想自动运行脚本还是手动触发它们中的任何一个
当我们配置gitlab
的.gitlab-ci.yml
的时候,我们通常会通过配置stages
项来自定义运行的不同阶段。当然,gitlab
也为我们默认配置了一部分的阶段(当我们没有在.gitlab-cli.yml
中显式指定stages
时,会启用这些阶段):
- .pre
- build
- test
- deploy
- .post
在这些自定义的阶段中,执行顺序是按照.pre -> build -> test -> deploy -> .post
的顺序执行的。而各位阶段之中的脚本是并行执行的。
阶段(stages)
除了使用gitlab
中默认配置的阶段外,我们还可以通过使用stage
关键字来自定义一些阶段。比如:
stages:
- prepare
- build
- test
job prepare:
stage: prepare
script:
- echo "prepare"
build:
script:
- echo "build"
test:
script:
- echo "test"
其中的`prepare`就是我们自定义的阶段,需要注意的是,如果我们使用了自定义的阶段,那么我们就要通过在某个`job`中使用`stage`关键字来指定其阶段是属于`prepare`阶段的。如果没有job属于`prepare`阶段,那么`.gitlab-cli.yml`就是不合法的。这里需要指出的是,我们在`.gitlab-ci.yml`中指定的`job`一定要定义一个`script`,否则这个`job`就是非法的。
镜像(image)
当我们在gitlab
中要运行特定的环境时,我们就可以通过image
关键字指定特定的镜像来实现。比如:node
。如下:
image: node-latest
示例
- 使用
pnpm
自动测试用例 ```yaml image: node:latest
测试: stage: test before_script:
- curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@6
- pnpm config set store-dir .pnpm-store
- pnpm config set registry https://registry.npmmirror.com/
script:
- pnpm install
- pnpm test
cache: key: “$CI_COMMIT_REF_SLUG” paths:
- .pnpm-store
<a name="yEZG3"></a>
### 使用gitlab来自动测试Rust包
当我们要使用`gitlab`来自动测试Rust包的时候,最简单的配置文件就是这样的:
```yaml
image: "rust:latest"
test:cargo:
script:
- rustc --version && cargo --version
- cargo test --workspace --verbose
这就是我们最简单的配置文件,但是因为图内环境的原因,当我们运行cargo test
时,cargo索引会很慢,会很影响构建速度,甚至可能因为这个原因失败。那么,我们怎样才能解决这个问题呢?
其实呢,解决这个问题很简单,我们只需要在我们rust项目的根目录下创建一个.cargo
目录,并在其中建立一个config.toml
文件。在文件中配置一下cargo
的国内镜像就可以了:
[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
之所以这个方法有用,是因为在cargo
中,读取配置文件的优先级为:/projects/.cargo/config.toml > /.cargo/config.toml,所以我们在项目中指定的 .cargo/config.toml 是有效的。
欢迎赞赏
不收费阅读,但希望如果能够帮助你的话,可以给个赞赏。