本地jenkins部署+gitlab+centos7
1. 虚拟机安装centos7
1.1 安装centos7并启动登录

1.2 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

1.3 设置虚拟机静态IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改以下内容
BOOTPROTO="static"
IPADDR="192.168.25.200"
NETMASK="255.255.255.0"
GATEWAY="192.168.25.2"
DNS1="192.168.25.2"
ONBOOT="yes"

1.4 重启
reboot
1.5 xshell登录

2. 安装jenkins
2.0 切换yum源为阿里云源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

2.1 安装JDK
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

2.2 安装jenkins
yum install -y wget
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

2.3 修改端口号
vi /etc/sysconfig/jenkins
修改
JENKINS_PORT="9999"

2.4 启动
service jenkins start
2.5 获取管理员密码
cat /var/lib/jenkins/secrets/initialAdminPassword
2.6 打开浏览器访问地址
http://192.168.25.200:9999/
输入密码登录 -> 安装推荐的插件 -> admin管理员账号继续 -> 保存并完成

可以修改新密码
用户名 -> 设置 -> Password
2.7 如果登录后一直卡loading页面可以修改xml文件
vi /var/lib/jenkins/hudson.model.UpdateCenter.xml
把url改为
http://mirror.xmission.com/jenkins/updates/update-center.json
2.8 安装以下插件

- Generic Webhook Trigger

- Publish Over SSH

- nvm-wrapper

2.9 生成token并保存

3. gitlab搭建本地仓库
3.1 安装依赖
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix
3.2 添加仓库包
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3.3 切换清华大学开源软件镜像站
新建文件
vi /etc/yum.repos.d/gitlab-ce.repo
添加内容
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
再执行
sudo yum makecache
sudo yum install -y gitlab-ce

3.4 修改gitlab配置
vi /etc/gitlab/gitlab.rb
修改
external_url 'http://192.168.25.200:7777'

再执行
sudo gitlab-ctl reconfigure

3.5 浏览器访问gitlab
浏览器访问 http://192.168.25.200:7777

第一次访问设置新密码
登录,管理员账号root,密码刚才设置的密码

3.6 创建一个项目仓库jenkins-gitlab-test

3.7 本机创建一个项目jenkins-gitlab-test
create-react-app jenkins-gitlab-test
cd jenkins-gitlab-test
git remote add origin http://192.168.25.200:7777/root/jenkins-gitlab-test.git
git push origin master

刷新页面,成功提交到gitlab仓库

3.8 gitlab需要开启允许本地hooks提交
Admin Area -> Settings -> Network -> Outbound requests
-> Allow requests to the local network from hooks and services



4. 配置webhook
4.1 登录jenkins,新建jenkins任务

4.2 源码管理:选择git源码仓库,添加用户授权
- 服务器要先安装git
yum install -y git
- 源码管理选择git
- 填入git仓库地址
- 添加提交用户

4.3 构建触发器: 选中Generic Webhook Trigger

4.4 构建环境:选中Run the build in an NVM managed environment
填写node版本号

4.5 构建:添加构建步骤Execute shell
- 设置淘宝源
- 安装依赖
- 删除build目录
- 构建项目
- 进入build目录
- 打一个压缩包
npm config set registry http://registry.npm.taobao.org
npm install
rm -rf build
npm run build
cd build
tar -zcvf build.tar.gz *

4.6 进入gitlab项目设置webhook
- URL: http://192.168.25.200:9999/generic-webhook-trigger/invoke
- Secret Token: 113f652686a144c5898e0433b3fd0dff7e
- 保存

- 测试成功

4.7 修改本机创建的react项目App.js
function App() {
return (
<div className="App">
hello
</div>
);
}
提交到gitlab仓库
git add -A
git commit -m'edit'
git push origin master
查看jenkins任务,有新任务执行

查看构建日志

进入 cd /var/lib/jenkins/workspace/jenkins-gitlab-test 目录
成功构建build目录,进入build目录也生成tar压缩包了

5. 发布到nginx中
5.1 安装nginx
- 新建文件
vi /etc/yum.repos.d/nginx.repo
- 添加内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

- 安装nginx并启动
yum install -y nginx
systemctl start nginx.service
5.2 服务器生成秘钥
ssh-keygen -t rsa
按3次回车就好了

ssh-copy-id 192.168.25.200

5.3 进入jenkins系统设置

Publish over SSH
-
Passphrase: 为空
-
Path to key: 私钥路径
-
Key: 私钥
-
SSH Servers 新增一个服务
-
Name:名称
-
Hostname: 主机名
-
Username: 用户名
-
Remote Directory: 目录路径

5.4 进入jenkins任务配置
构建后操作:Send build artifacts over SSH

- Source files 源文件
build/build.tar.gz
- Remove prefix 去掉前缀
build/
- Remote directory 目录路径
/usr/share/nginx/html
- Exec command 执行命令
cd /usr/share/nginx/html
tar -xzvf build.tar.gz
rm -rf build.tar.gz

5.5 修改本机react项目App.js,提交到gitlab,查看jenkins任务构建完成,访问http://192.168.25.200:80