内网搭建gitlab-ce gitlab-runner cnpmjs.org管理私有nodejs

npm registry 内部npm仓库

首先安装nodejs环境,推荐使用nvm

然后安装cnpmjs.org

快速部署文档

部署文档

参考文档

项目已clone到/home/web/cnpmjs.org

进入启动执行

cd cnpmjs.org
npm start

具体其他控制脚本可在package.json中的scripts中查看.

最终配置npm.mysite.cn本地npm web页面,做为搜索用.

registry.npm.mysite.cn返回json格式,供cnpm安装package用.

在使用该仓库的客户端

首先安装nodejs环境,推荐使用nvm

安装cnpm

npm i cnpm -g
cnpm set registry http://registry.npm.mysite.cn
cnpm login # 填写若干自己的登录帐号,密码等

cnpm login 会将个人信息保存在用户目录的.cnpmrc文件中.

自己创建好npm package后,该package必须为@mygroup前缀才可以发布到npm.mysite.cn

在自己的package.json中的名称中添加前缀@mygroup/

"name": "@mygroup/my-package"

然后执行

发布前请确认遵守版本号语义规则

cnpm publish

即将该package发布到自己的私有仓库中了,此时其他人即可使用cnpm命令安装该package

cnpm install @mygroup/my-package

由于是私有仓库,所有包发布必须一@mygroup开头,否则不能发布.


gitlab部署

ubuntu系统添加镜像源

若直接部署gitlab,则gitlab本身的nginx将占用80端口,由于本机还需要运行其他页面,所以将gitlab作为nginx的其中一个后台运行.

nginx配置在/etc/nginx/sites-enabled中,按域名明明的文件中.

gitlab监听本机8001端口,该配置存储在/etc/gitlab.rb文件中.


gitlab持续集成

gitlab-runner服务器配置

每个git项目配置说明

各个runner的比较

runner配置

shell runner较好配置,但运行多了会生成大量遗留文件,所以使用docker runner.

此处有一个小问题,gitlab-runner只能使用官方镜像,自己commit或通过Dockerfile build出来的镜像gitlab-runner不识别,通过debug模式会报找不到镜像的错误.

并在gitlab-runner的配置文件中配置dns将git.mysite.cn指向docker的宿主机,即gitlab-runner运行的主机.

操作如下,首先执行

gitlab-runner register

根据提示添加对应的内容,选择docker类型的runner

然后在/etc/gitlab-runner.config.toml中,该新添加的runner下添加

  [runners.docker]
    tls_verify = false
    image = "ubuntu:16.04"
    privileged = false
    disable_cache = false
+   volumes = ["/cache", "/home/web:/root"]
+   extra_hosts = ["git.mysite.cn:172.17.0.1"]

带加号的两行一个是挂载主机的带nvm的目录到container中的/root,载入nodejs环境

另一个是添加映射宿主机的ip映射到域名

在配置中碰到了一些问题,一开始在系统的nginx中配置

proxy_pass http://127.0.0.1:8001;

8001是gitlab的端口,此时会将gitlab中runner的地址输出为http://127.0.0.1:8001/ci,导致测试无法进行.

需要在nginx中添加

upstream git.mysite.cn {
  server 127.0.0.1:8001;
}

server {
  proxy_pass http://git.mysite.cn;
}

gitlab-runner的调试比较麻烦,需要开启调试模式

gitlab-runner stop
gitlab-runner --debug run

gitlab-ci.yml每个项目配置

文档

docker的container使用外部nvm挂载,所以必须添加一些导入nvm的设置例如

.gitlab-ci.yml

image: ubuntu:16.04
before_script:
  - source ~/.nvm/nvm.sh
  - yarn install
test:
  script:
    - npm test
  only:
    - master
cache:
  paths:
    - node_modules/
This entry was posted in git. Bookmark the permalink.