gitlab安装与基本使用
这里会使用一个前端项目自动化部署的方式来进行了解
Node
安装项目依赖、打包都需要Nginx web
项目部署必须「正向代理、方向代理、负载均衡等等」、 GitLab 也会用到 Nginx(默认自动安装)Git
自动化部署,需要拉取代码。GitLab
没啥好说GitLab-Runner
配合 GitLab CI/CD 使用的应用程序
[Node]
安装
# 下载安装包,需要哪个版本,在url中修改就可以了 wget https://nodejs.org/dist/v12.9.0/node-v12.9.0-linux-x64.tar.xz # 解压 tar xf node-v12.9.0-linux-x64.tar.xz # 复制 cp -rf /root/node-v12.9.0-linux-x64 /usr/local/node
添加配置与环境变量
# 打开编辑配置文件 vim /etc/profile 在文件的最后,加上下面的内容 export PATH=$PATH:/usr/local/node 重载系统配置文件 source /etc/profile
测试 node 环境变量是否生效
运行下面的代码,看到版本号,就说明环境变量生效了。
node -v
[Git]
使用yum默认安装的是1版本, 推荐使用2版本
安装:
# 安装依赖 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
在github上下载包: https://github.com/git/git/releases
tar -zxvf git-2.25.5.tar.gz cd git-2.25.5 make prefix=/usr/local/git all make prefix=/usr/local/git install /usr/local/git/bin/git --version # 加入全局环境变量 vim /etc/profile # 添加软链接 ln -sf /usr/local/git/bin/git /bin/git
[gitlab]
安装
yum -y install https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.3.0-ce.0.el7.x86_64.rpm
修改配置文件:vim /etc/gitlab/gitlab.rb
找到,external_url, 修改 gitlab 访问地址。可以是域名(请确保确定域名正确解析了),服务器IP,也可以加上端口。设置端口时,请确保自己开放了对应的端口 # 192.168.26.139 对应的就是服务器的IP,端口为 1874 external_url 'http://192.168.26.139:1874' 关闭防火墙: service iptables stop 永久关闭 chkconfig iptables off 开房80端口 firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --reload
配置修改完成之后, 需要进行重载配置与启动
#重载配置文件,需要的时间比较长 gitlab-ctl reconfigure # 开放 1874 端口 firewall-cmd --permanent --zone=public --add-port=1874/tcp # 重载防火墙 firewall-cmd --reload
常用命令:
# 启动gitlab服务 sudo gitlab-ctl start # gitlab服务停止 sudo gitlab-ctl stop # 重启gitlab服务 sudo gitlab-ctl restart
[使用]
1.修改密码
修改密码也可以:gitlab-rails console production irb(main):001:0> user = User.where(id: 1).first // id为1的是超级管理员 irb(main):002:0>user.password = 'yourpassword' // 密码必须至少8个字符,最好是数字 irb(main):003:0>user.save! // 如没有问题 返回true exit // 退出
在浏览器中打开对应的web页面,需要做的几个事情
1.去掉用户的自动注册功能
admin are -> settings -> Sign-up Restrictions 去掉钩钩,然后拉到最下面保存,重新登录
2.为用户添加group 然后新增用户并添加到组中
PM在gitlab创建任务,分配给开发人员 开发人员领取任务后,在本地使用git clone拉取代码库 开发人员创建开发分支(git checkout -b dev),并进行开发 开发人员完成之后,提交到本地仓库(git commit ) 开发人员在gitlab界面上申请分支合并请求(Merge request) PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master) 开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提×××并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue
测试仓库项目是否可以正常提交和拉取
这个步骤就不演示了,用过 GitHub
的应该基本都清楚,创建个新项目 -> 通过http仓库链接克隆项目 -> 修改项目的内容 -> 提交 ->推送
。
我们的重点的是 CI/CD
,至于 SSL、邮箱
等等,GitLab 一些其他的配置和功能我就不赘述了,大家可以网上了解下。
配置CI/CD
1.安装gitlab-runner
# 下载 wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # 分配运行权限 chmod +x /usr/local/bin/gitlab-runner # 创建用户 useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash # 安装 gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner # 运行 gitlab-runner start
2.新建runner
# 注册 runner gitlab-runner register # 输入 gitlab 的访问地址 http://192.168.26.139:1874 # 输入 runner token,把开 http://192.168.26.139:1874/admin/runners 页面查看 63AyFAthj7s7sNy3JDwu # runner 描述,随便填 测试webpack-vue项目部署 # runner tag webpack-vue-cicd # 输入(选择) shell shell
在 xxx.com/admin/runners 可查看创建的runner
3.创建一个测试项目
#使用Vue图形化界面创建新项目vue-docker
vue ui
# 运行项目
npm run serve
添加Dockerfile文件
FROM node:10 COPY ./ /vue-docker WORKDIR /vue-docker RUN npm install && npm run build FROM nginx RUN mkdir /vue-docker COPY --from=0 /vue-docker/dist /vue-docker COPY nginx.conf /etc/nginx/nginx.conf
创建.dockerignore文件
**/node_modules
**/dist
在项目根目录创建nginx.conf文件
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /vue-docker; index index.html; try_files $uri $uri/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } }
其他命令:
构建docker镜像 docker build . -t vue-docker # 运行docker镜像 docker run -d -p 9090:80 vue-docker
编写.gitlab-ci.yml文件
.gitlab-ci.yml
文件是存放在项目的根目录下的,要提交到gitlab
上面,runner
会根据 .gitlab-ci.yml
编写的规则自动部署项目。
# 阶段 stages: - build - deploy # 缓存 node_modules 减少打包时间,默认会清除 node_modules 和 dist cache: paths: - node_modules/ # 拉取项目,打包 build: stage: build # 阶段名称 对应,stages tags: # runner 标签(注册runner时设置的,可在 admin->runner中查看) - webpack-vue-cicd script: # 脚本(执行的命令行) - cd ${CI_PROJECT_DIR} # 拉取项目的根目录 - npm install # 安装依赖 - npm run build # 运行构建命令 only: - main #拉取分支 artifacts: # 把 dist 的内容传递给下一个阶 paths: - dist/ # 部署 deploy: stage: deploy # 阶段名称 对应,stages tags: # runner 标签(注册runner时设置的) - webpack-vue-cicd script: # 脚本(执行的命令行) - rm -rf /www/wwwroot/webpack_vue_cicd/* - cp -rf ${CI_PROJECT_DIR}/dist/* /www/wwwroot/webpack_vue_cicd/ # 把包完成,复制 dist 下的文件到对应的项目位置
4.部署
server { listen 3001; # 端口号 server_name localhost; # 服务器地址 location / { root /www/wwwroot/webpack_vue_demo; # 项目存放目录 index index.html index.htm; # 默认访问的主页 } } # 重新加载配置文件 nginx -s reload
然后提交下文件试试吧
注意点:
1.如果使用的Git@xxx.com方式拉取代码, 如果ssh链接不是默认22的话, 需要进行参数配置
vim /etc/gitlab/gitlab.rb gitlab_rails[gitlab_shell_ssh_port] = 36000
2.如果想要修改默认的端口
external_url 'http://192.168.1.146:8081' #绑定监听的域名或IP(企业中最好是域名) nginx['listen_port'] = 8081 #修改nginx的port
需要重新加载配置
gitlab-ctl reconfigure
#<生成 /var/opt/gitlab/ 各种子配置, 该命令建议仅在初始化时使用一次>
常见问题:
1.gitlab内置的node_exporter与监控硬件指标的服务端口冲突,需要进行修改
# vim $GITLAB_HOME/embedded/cookbooks/cache/cookbooks/gitlab/attributes/default.rb default['gitlab']['node-exporter']['listen_address'] = 'localhost:9100' # 改为需要给定的端口 # 重新初始化配置 # gitlab-ctl stop # gitlab-ctl reconfigure # gitlab-ctl start
参考:
- https://blog.csdn.net/lixiaotao_1/article/details/113068650
- https://zhuanlan.zhihu.com/p/420977457