gitlab+jenkins自动化部署vue项目

gitlab+jenkins自动化部署vue项目

  • 1. 环境搭建(centos7)
    • 1.1 gitlab安装
      • 1.1.1 gitlab-ee安装
      • 1.1.2 相关配置以及命令
      • 1.1.3 通知邮箱配置
      • 1.1.4 开放8888端口
    • 1.2 jenkins安装(前提需要java环境)
  • 2. 自动化配置
    • 2.1 本地创建vue项目并提交到gitlab
    • 2.2 jenkins配置
    • 2.3 gitlab钩子配置

1. 环境搭建(centos7)

1.1 gitlab安装

1.1.1 gitlab-ee安装

环境安装:

sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

安装Postfix以发送通知电子邮件,可以使用其它smtp的途径而跳过此步骤(非必须)

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

安装镜像仓库:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

gitlab-ee安装:
EXTERNAL_URL为gitlab的访问地址,需要在客户端机器上配置hosts:

gitlab服务器的ip地址 iefihz.gitlab.com

sudo EXTERNAL_URL="http://iefihz.gitlab.com:8888" yum install -y gitlab-ee

或者EXTERNAL_URL直接配置成ip+端口号,而不使用主机名的方式

1.1.2 相关配置以及命令

vim /etc/gitlab/gitlab.rb //如有必要修改配置
gitlab-ctl reconfigure //修改完配置后,需要重新配置
gitlab-ctl restart //重启服务,尽管服务启动完成后,仍需稍等片刻才能正常访问

1.1.3 通知邮箱配置

这里以163邮箱为例,其他邮箱配置请查看官方文档:https://docs.gitlab.com/omnibus/settings/smtp.html

执行:

vim /etc/gitlab/gitlab.rb

在此文件中新增以下内容:

# Smtp configuration
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "[email protected]"	#改为真实的163邮箱
gitlab_rails['smtp_password'] = "xxx"		#邮箱密码
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email protected]'	#改为真实的163邮箱
gitlab_rails['gitlab_email_reply_to'] = '[email protected]'	#改为真实的163邮箱

最后执行gitlab-ctl reconfigure重新加载配置

1.1.4 开放8888端口

firewall-cmd --zone=public --add-port=8888/tcp --permanent
systemctl reload firewalld

通过http://iefihz.gitlab.com:8888去访问

1.2 jenkins安装(前提需要java环境)

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y jenkins    //如果镜像源连接不同,则到官网下载对应版本的rpm包,使用rpm -ivh jenkins的rpm包进行安装
vim /etc/sysconfig/jenkins		//修改端口,默认为8080,改为8250或其它没被占用的端口
vim /etc/init.d/jenkins		//指定java命令的位置,如下图所示

gitlab+jenkins自动化部署vue项目_第1张图片
相关命令:

自启动配置:
chkconfig --add /etc/init.d/jenkins
chkconfig jenkins on

systemctl start jenkins.service		#启动
systemctl stop jenkins.service		#停止
systemctl status jenkins.service		#查看状态
systemctl restart jenkins.service		#重启

开放8250端口

firewall-cmd --zone=public --add-port=8250/tcp --permanent
systemctl reload firewalld

通过:http://ip:port去访问:
查看初始密码:cat /var/lib/jenkins/secrets/initialAdminPassword

2. 自动化配置

2.1 本地创建vue项目并提交到gitlab

如下图所示:
gitlab+jenkins自动化部署vue项目_第2张图片

2.2 jenkins配置

1)插件安装:系统管理》插件管理》可选插件》安装GitLab Plugin、Generic Webhook Trigger Plugin、Publish over SSH
2)系统管理》系统配置》Publish over SSH

这个插件的主要作用:通常情况下,jenkins服务器和实际的项目不是同一个服务器,主要用于把jenkins拉取到的代码远程发送到实际的服务器上,并执行响应的脚本,如果是在同一个服务器,且系统的用户相同,则不需要此配置。

i.登录jenkins服务器,查看该用户(启动jenkins的用户)是否已经配置了ssh秘钥

cat ~/.ssh/id_rsa	#如果有此文件,则已经有配置过了,可以直接使用,如果不存在,则需要生成公私秘钥

ssh-keygen -t rsa	#指定生成的路径(不指定默认为当前用户的.ssh/id_rsa和id_rsa.pub)、秘钥的密码(不指定默认为空)

ii.把~/.ssh/id_rsa和id_rsa.pub复制到/var/lib/jenkins/.ssh/下,如果没有此目录,先创建:

mkdir -p /var/lib/jenkins/.ssh/		#如果没有此目录,先创建
cp ~/.ssh/id_rsa ~/.ssh/id_rsa.pub /var/lib/jenkins/.ssh/	#复制到/var/lib/jenkins/.ssh/

iii.配置免密登录

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.xxx.xxx

指令说明:ssh-copy-id -i 公钥 远程服务器的用户@远程服务器的ip,本人测试搭建用的是root用户,实际中不建议使用root用户

测试免密登录是否配置成功:
ssh 192.168.xxx.xxx

ⅳ.回到jenkins界面》系统管理》系统配置》Publish over SSH
gitlab+jenkins自动化部署vue项目_第3张图片
ⅴ.jenkins任务配置gitlab+jenkins自动化部署vue项目_第4张图片
gitlab+jenkins自动化部署vue项目_第5张图片
gitlab+jenkins自动化部署vue项目_第6张图片
生成secret token,gitlab钩子要用到:
gitlab+jenkins自动化部署vue项目_第7张图片
gitlab+jenkins自动化部署vue项目_第8张图片
脚本内容,仅供参考:

[root@iefihz bbb]# cat start.sh 
export PATH=/usr/local/node/bin:$PATH
cd /root/bbb
npm install
netstat -apn|grep 8081|grep LISTEN|awk -F' ' '{print $7}'|awk -F'/' '{print $1}'|xargs kill -9
nohup npm run dev > ./sys-info.log 2>&1 &

2.3 gitlab钩子配置

具体项目》Settings》Webhooks
gitlab+jenkins自动化部署vue项目_第9张图片
gitlab+jenkins自动化部署vue项目_第10张图片
gitlab+jenkins自动化部署vue项目_第11张图片
最后测试一下是否配置成功:
gitlab+jenkins自动化部署vue项目_第12张图片
如果提示:Requests to the local network are not allowed,配置如下:
gitlab+jenkins自动化部署vue项目_第13张图片
最后,通过提交代码,去jenkins中查看,是否自动触发了构建
gitlab+jenkins自动化部署vue项目_第14张图片

你可能感兴趣的:(自动化部署,gitlab,jenkins,vue)