Skip to content
New issue

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 初尝试 #80

Open
jyzwf opened this issue Jul 8, 2019 · 2 comments
Open

gitlab ci 初尝试 #80

jyzwf opened this issue Jul 8, 2019 · 2 comments

Comments

@jyzwf
Copy link
Owner

jyzwf commented Jul 8, 2019

最近,在尝试 gitlab 的 ci,遇到了不少坑,特此记录一下

关于一些基础知识,参考 用 GitLab CI 进行持续集成

走过的坑

关于 node_modules 缓存问题

每个 job 结束之后,会把上一个 job 生成的一些文件,如果它被写入 .gitignore 中,那么下一个 job 就会使用不到上一个产生的文件,如 node_modules ,所以需要使用缓存,但也可以使用 artifacts

cache:
  key: ${CI_COMMIT_REF_SLUG}
  untracked: true
  paths:
    - node_modules/

关于注册 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 列表:

image

如果我想删掉一个 Runner 可以使用 gitlab-runner unregister --url (runner 的url)--token (runner 的 token) 来删,更多删法参见 gitlab-runner unregister

但当我去删除的时候,出现了如下错误:

image

使用 gitlab-runner verify 查看这些注册的 Runner 是否可以连接到 gitlab,如果有些 runner 在gitlab 中移除了,可以使用 gitlab-runner verify --delete 在 register 列表中移除它们:

image

关于环境变量问题

当我再 linux 上安装 Runner 的时候,这时候添加了一个 gitlab-runner 用户,这时候 Runner 在跑的时候,用户就是 gitlab-runner

image

而此时,我以另一个身份用户来登录,同时linux 上的 node 使用的是 n 模块来安装的,这样 node 的路径就变成了 /home/souche/n/bin/node,但此时,我的 yarn 的路径是 /usr/bin/yarn,这样 yarn 跑命令的时候就找不到 node,从而报错。这时,可以在每个 job 在跑的时候设置下环境变量即可解决,同时我也试了下在第一个 job 中设置环境变量,本以为后面的 job 能读到改变后的环境变量,但发现并不能读取,所以使用了 before_script:

before_script:
  - export PATH=/home/souche/n/bin:$PATH

此外我也试了在 /home/gitlab-runner (Runner 在跑的时候 ~ 目录对应的是 /home/gitlab-runner) 这个文件夹下的 .bashrc 直接设置环境变量:

image

image

但仍然无效,可能 Runner 跑的 并不是这里的 bash 脚本,是其自身的一套 shell

关于发布的时候 npm user 找不到问题

上面说到了 gitlab Runner 跑在 gitlab-runner 这个用户下,而此时souche 这个用户设置了 npm registry 以及 npm add user,但 Runner 在跑时,就是找不到这写注册信息。可以将 .npmrc 文件 拷到 /home/gitlab-runner下,并通过 chown 来修改文件所有者:

image

image

Host key verification failed

在发布项目文档时,使用了如下命令:

rsync --compress --verbose --checksum --archive --partial --delete-after --whole-file --exclude='.*' --human-readable ./docs/.vuepress/dist/ xxxxxx:/home/souche/projects/muji-doc",

但这样却报了如下错误:

image

然后到了 /home/gitlabe-runner 下查看 .ssh 文件,发现是空的,所以就生成一个 sshKey ,并将公钥传入到 ~/.ssh/authorized_keys 中,最后执行 cp ~/.ssh/known_hosts /home/gitlab-runner/.ssh/ 即可

最后关于使用 lerna 根据 tag 来发版问题

使用使用如下 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:上面如有不足或者错误,欢迎沟通交流 🤣🤣😁😁😜

@mehwww
Copy link

mehwww commented Jul 9, 2019

image

@jyzwf
Copy link
Owner Author

jyzwf commented Jul 9, 2019

@mehwww 打扰了打扰了😑😑

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants