这里会使用一个前端项目自动化部署的方式来进行了解

  • 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-ci-multi-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

2.运行流水线出现错误中断, Gitlab: There has been a runner system failure

查看错误:

journalctl -u gitlab-runner

  

May 21 08:20:41 gitlab-runner[18936]: Checking for jobs... received                       job=178911 repo_url=https://.......git runner=f540b942
May 21 08:20:41 gitlab-runner-01 gitlab-runner[18936]: WARNING: Failed to process runner builds=0 error=open /tmp/trace543210445: no space left on device executor=docker runner=f540b942

是由于磁盘不足导致的失败.
# 清理停止的容器
docker container prune docker system prune

参考:

gitlab安装与基本使用的更多相关文章

  1. GitLab安装说明

    GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. gitlab是基于Ruby on Rails的, ...

  2. Gitlab安装、汉化及使用

    环境:centos 关闭防火墙和selinux [root@Gitlab ~]# setenforce [root@Gitlab ~]# service iptables stop && ...

  3. git\CentOS6.5中gitlab安装教程

    一.Git 起源: Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本 ...

  4. Ubuntu gitlab安装文档及邮件通知提醒配置

    1.安装依赖包,运行命令 sudo apt-get install curl openssh-server ca-certificates postfix 2.由于gitlab官方源可能被“墙”,首先 ...

  5. gitlab安装随记

    gitlab安装 配置yum源 sudo vim /etc/yum.repos.d/gitlab-ce.repo 按照网上别人的例子,修改为清华的源 [gitlab-ce] name=Gitlab C ...

  6. CentOS 7 环境下GitLab安装及基本配置

    新实验室要求重新建设GitLab,对于我来讲,是第一次有机会当元老参与实验室的建设.下面分享我自己的实测经验: 1. 安装依赖软件并设置开机启动 yum install curlpolicycoreu ...

  7. GitLab安装及使用

    GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. GitLab拥有与Github类似的功能,能够浏览 ...

  8. gitlab之一: gitlab安装配置使用

    参考: gitlab 安装和配置 gitlab下载地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/ 官方教程: https://about.gitl ...

  9. Gitlab安装以及汉化

    Gitlab安装以及汉化 系统环境: CentOS 7.5 IP:192.168.1.2 关闭selinux.firewalld gitlab-ce-10.8.4 rpm包:下载地址 一.下载并安装g ...

  10. GITLAB安装笔记

    CentOS 7 最小安装后操作 设置时区timedatectl set-timezone Asia/Shanghai 添加 Gitlab 清华源 vi /etc/yum.repos.d/gitlab ...

随机推荐

  1. AWS Cloud Practioner 官方课程笔记 - Part 3

    AWS Security 方案和功能 Amazon Inspector AWS Shield Price and Support Free Tier: Always Free, 12-month fr ...

  2. C++ std::shared_ptr自定义allocator引入内存池

    当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低.当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分 ...

  3. 深度学习批次(batch)、迭代(iteration)、周期(epoch)、前向传播(forward propagation)、反向传播(backward propagation)、学习率(learning rate)概念解释

    虽然现在应该是已经熟练掌握这些基础概念的时候,但是我是鱼的记忆,上一秒的事情,下一秒就忘了,除非是重要的人的重要的事情,呜呜呜呜,我这个破脑子. 还是写一下吧,直接GPT出来的(人类之光,欢呼~). ...

  4. @RequestBody注意事项

    使用@RequestBody注解时,是用于接收Content-Type为application/json类型的请求,数据类型是JSON:{"aaa":"111" ...

  5. 00 你想要学习的 AI+Python,捷径在这里

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  6. SpringBoot进阶教程(八十二)Spring Security图形验证码

    在之前的博文<SpringBoot进阶教程(八十)Spring Security>中,已经介绍了在Spring Security中如何基于formLogin认证.基于HttpBasic认证 ...

  7. Win11使用Translucent TB设置Windows导航栏透明失败解决方案

    Win11使用Translucent TB设置Windows导航栏透明失败解决方案 Translucent TB下载方式:直接在Windows自带的Microsoft应用商店里面搜索下载就可以了 1. ...

  8. 等保测评FAQ

    之前写过一篇关于等保测评的相关介绍<一起聊聊等保测评>,发现大家对于等保测评这个还是很关注的,有些人问等保测评这份工工作的,也有些人问关于等保测评一些指导意见的,这篇文章我想把大家的问题来 ...

  9. 全局负载均衡、CDN内容分发的原理与实践

    CDN简介 CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发. ...

  10. Pandas 空值数据的索引 位置 行号

    前言 先说一下什么是pandas, 这个东西其实就是一个处理表格数据的一个库.可以把它看做是一个没有图形化界面的Excel. Pandas中的空值是非常多的,这体现了数据搜集的一个不可避免的方面.由于 ...