We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近,在尝试 gitlab 的 ci,遇到了不少坑,特此记录一下
关于一些基础知识,参考 用 GitLab CI 进行持续集成
每个 job 结束之后,会把上一个 job 生成的一些文件,如果它被写入 .gitignore 中,那么下一个 job 就会使用不到上一个产生的文件,如 node_modules ,所以需要使用缓存,但也可以使用 artifacts
.gitignore
cache: key: ${CI_COMMIT_REF_SLUG} untracked: true paths: - node_modules/
灰色的叹号
在一次注册完 Runner 之后,在 gitlab 的 Runner 上出现了 灰色的叹号,因为在执行 gitlab-runner register 时,加了一次 sudo,而 启动 Runner (gitlab-runner start) 时没有加 Sudo ,这样通过 sudo 执行的是 root 权限,生成的配置文件路径是 /etc/gitlab-runner/config.toml ,用普通权限生成的配置文件路径是 ~/.gitlab-runner/config.toml ,这样导致普通权限配置文件里面没有相应的配置信息,所以都加上 sudo ,就可以解决
gitlab-runner register
sudo
Runner (gitlab-runner start)
root 权限
/etc/gitlab-runner/config.toml
~/.gitlab-runner/config.toml
使用 gitlab-runner list 可以查看 Runner 的一些配置信息,主要有配置文件以及 已经注册的 Runner 列表:
gitlab-runner list
如果我想删掉一个 Runner 可以使用 gitlab-runner unregister --url (runner 的url)--token (runner 的 token) 来删,更多删法参见 gitlab-runner unregister
gitlab-runner unregister --url (runner 的url)--token (runner 的 token)
但当我去删除的时候,出现了如下错误:
使用 gitlab-runner verify 查看这些注册的 Runner 是否可以连接到 gitlab,如果有些 runner 在gitlab 中移除了,可以使用 gitlab-runner verify --delete 在 register 列表中移除它们:
gitlab-runner verify
gitlab-runner verify --delete
当我再 linux 上安装 Runner 的时候,这时候添加了一个 gitlab-runner 用户,这时候 Runner 在跑的时候,用户就是 gitlab-runner
gitlab-runner
而此时,我以另一个身份用户来登录,同时linux 上的 node 使用的是 n 模块来安装的,这样 node 的路径就变成了 /home/souche/n/bin/node,但此时,我的 yarn 的路径是 /usr/bin/yarn,这样 yarn 跑命令的时候就找不到 node,从而报错。这时,可以在每个 job 在跑的时候设置下环境变量即可解决,同时我也试了下在第一个 job 中设置环境变量,本以为后面的 job 能读到改变后的环境变量,但发现并不能读取,所以使用了 before_script:
n
/home/souche/n/bin/node
/usr/bin/yarn
before_script
before_script: - export PATH=/home/souche/n/bin:$PATH
此外我也试了在 /home/gitlab-runner (Runner 在跑的时候 ~ 目录对应的是 /home/gitlab-runner) 这个文件夹下的 .bashrc 直接设置环境变量:
/home/gitlab-runner
.bashrc
但仍然无效,可能 Runner 跑的 并不是这里的 bash 脚本,是其自身的一套 shell
Runner
bash 脚本
shell
上面说到了 gitlab Runner 跑在 gitlab-runner 这个用户下,而此时souche 这个用户设置了 npm registry 以及 npm add user,但 Runner 在跑时,就是找不到这写注册信息。可以将 .npmrc 文件 拷到 /home/gitlab-runner下,并通过 chown 来修改文件所有者:
npm registry
npm add user
chown
在发布项目文档时,使用了如下命令:
rsync --compress --verbose --checksum --archive --partial --delete-after --whole-file --exclude='.*' --human-readable ./docs/.vuepress/dist/ xxxxxx:/home/souche/projects/muji-doc",
但这样却报了如下错误:
然后到了 /home/gitlabe-runner 下查看 .ssh 文件,发现是空的,所以就生成一个 sshKey ,并将公钥传入到 ~/.ssh/authorized_keys 中,最后执行 cp ~/.ssh/known_hosts /home/gitlab-runner/.ssh/ 即可
~/.ssh/authorized_keys
cp ~/.ssh/known_hosts /home/gitlab-runner/.ssh/
使用使用如下 script 来判断 lerna 发的是 latest 版还是 next 版
script: - yarn run build - if [[ $CI_COMMIT_TAG =~ "-rc." || $CI_COMMIT_TAG =~ "-beta." || $CI_COMMIT_TAG =~ "-alpha." ]]; then lerna publish from-package --dist-tag next --yes; else lerna publish from-package --yes; fi
通过此次实践,学到了不少,同时也发现自己的 linux 的知识的欠缺,所以后面要加强这方面的知识。 ps:上面如有不足或者错误,欢迎沟通交流 🤣🤣😁😁😜
The text was updated successfully, but these errors were encountered:
Sorry, something went wrong.
@mehwww 打扰了打扰了😑😑
No branches or pull requests
最近,在尝试 gitlab 的 ci,遇到了不少坑,特此记录一下
关于一些基础知识,参考 用 GitLab CI 进行持续集成
走过的坑
关于 node_modules 缓存问题
每个 job 结束之后,会把上一个 job 生成的一些文件,如果它被写入
.gitignore
中,那么下一个 job 就会使用不到上一个产生的文件,如 node_modules ,所以需要使用缓存,但也可以使用 artifacts关于注册 Runner 完之后出现
灰色的叹号
在一次注册完 Runner 之后,在 gitlab 的 Runner 上出现了 灰色的叹号,因为在执行
gitlab-runner register
时,加了一次sudo
,而 启动Runner (gitlab-runner start)
时没有加 Sudo ,这样通过 sudo 执行的是root 权限
,生成的配置文件路径是/etc/gitlab-runner/config.toml
,用普通权限生成的配置文件路径是~/.gitlab-runner/config.toml
,这样导致普通权限配置文件里面没有相应的配置信息,所以都加上 sudo ,就可以解决关于注册的 Runner 删不掉问题
使用
gitlab-runner list
可以查看 Runner 的一些配置信息,主要有配置文件以及 已经注册的 Runner 列表:如果我想删掉一个 Runner 可以使用
gitlab-runner unregister --url (runner 的url)--token (runner 的 token)
来删,更多删法参见 gitlab-runner unregister但当我去删除的时候,出现了如下错误:
使用
gitlab-runner verify
查看这些注册的 Runner 是否可以连接到 gitlab,如果有些 runner 在gitlab 中移除了,可以使用gitlab-runner verify --delete
在 register 列表中移除它们:关于环境变量问题
当我再 linux 上安装 Runner 的时候,这时候添加了一个
gitlab-runner
用户,这时候 Runner 在跑的时候,用户就是 gitlab-runner而此时,我以另一个身份用户来登录,同时linux 上的 node 使用的是
n
模块来安装的,这样 node 的路径就变成了/home/souche/n/bin/node
,但此时,我的 yarn 的路径是/usr/bin/yarn
,这样 yarn 跑命令的时候就找不到 node,从而报错。这时,可以在每个 job 在跑的时候设置下环境变量即可解决,同时我也试了下在第一个 job 中设置环境变量,本以为后面的 job 能读到改变后的环境变量,但发现并不能读取,所以使用了before_script
:此外我也试了在
/home/gitlab-runner
(Runner 在跑的时候 ~ 目录对应的是/home/gitlab-runner
) 这个文件夹下的.bashrc
直接设置环境变量:但仍然无效,可能
Runner
跑的 并不是这里的bash 脚本
,是其自身的一套shell
关于发布的时候 npm user 找不到问题
上面说到了 gitlab Runner 跑在 gitlab-runner 这个用户下,而此时souche 这个用户设置了
npm registry
以及npm add user
,但 Runner 在跑时,就是找不到这写注册信息。可以将 .npmrc 文件 拷到/home/gitlab-runner
下,并通过chown
来修改文件所有者:Host key verification failed
在发布项目文档时,使用了如下命令:
但这样却报了如下错误:
然后到了 /home/gitlabe-runner 下查看 .ssh 文件,发现是空的,所以就生成一个 sshKey ,并将公钥传入到
~/.ssh/authorized_keys
中,最后执行cp ~/.ssh/known_hosts /home/gitlab-runner/.ssh/
即可最后关于使用 lerna 根据 tag 来发版问题
使用使用如下 script 来判断 lerna 发的是 latest 版还是 next 版
总结
通过此次实践,学到了不少,同时也发现自己的 linux 的知识的欠缺,所以后面要加强这方面的知识。
ps:上面如有不足或者错误,欢迎沟通交流 🤣🤣😁😁😜
The text was updated successfully, but these errors were encountered: