gitlab及jenkins

1、安装配置gitlab服务,在gitlab新建一个仓库,配置本地密钥,并通过ssh方式拉取gitlab仓库代码

https://packages.gitlab.com/gitlab/gitlab-ce?page=1 gitlab包下载地址

wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.3.4-ce.0.el7.x86_64.rpm/download.rpm

修改配置文件,并启动服务

[email protected]:~# grep "^[a-Z]" /etc/gitlab/gitlab.rb

external_url ‘http://192.168.1.196.3‘

#可选邮件通知设置

gitlab_rails[‘smtp_enable‘] = true

gitlab_rails[‘smtp_address‘] = "smtp.qq.com"

gitlab_rails[‘smtp_port‘] = 465

gitlab_rails[‘smtp_user_name‘] = "[email protected]"

gitlab_rails[‘smtp_password‘] = "授权码"

gitlab_rails[‘smtp_domain‘] = "qq.com"

gitlab_rails[‘smtp_authentication‘] = :login

gitlab_rails[‘smtp_enable_starttls_auto‘] = true

gitlab_rails[‘smtp_tls‘] = true

gitlab_rails[‘gitlab_email_from‘] = "[email protected]"

user["git_user_email"] = "[email protected]"

执行配置并启动服务:

gitlab-ctl reconfigure #修改完配置文件要执行此操作

# gitlab-rails #用于启动控制台进行特殊操作,比如修改管理员密码、打开数据库控制

台( gitlab-rails dbconsole)等

# gitlab-psql #数据库命令行

[email protected]:~# gitlab-psql

psql (9.6.11)

Type "help" for help.

gitlabhq_production=# \db

List of tablespaces

Name | Owner | Location

------------+-------------+----------

pg_default | gitlab-psql |

pg_global | gitlab-psql |

(2 rows)

# gitlab-rake #数据备份恢复等数据操作

# gitlab-ctl #客户端命令行操作行

# gitlab-ctl stop #停止 gitlab

# gitlab-ctl start #启动 gitlab

# gitlab-ctl restar #重启 gitlab

# gitlab-ctl status #查看组件运行状态

# gitlab-ctl tail nginx #查看某个组件的日志

设置密码。

默认用户为root,口令没有第一次登陆时需要设置口令

使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里

面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不

同的开发即可实现对开发设置权限的管理。

git 客户端测试 clone 项目:

编辑文件并测试提交:[email protected]:/source

# cd test-project/

# git config --global user.name  #配置一个用户名

# git config --global user.email [email protected] #配置一个邮箱

# vim index.html

cat index.html

11111111111

22222222222

# git add index.html #添加至本地

# git commit -m "v1"#将代码打上标签

git config --global user.name “name“ #设置全局用户名

git config --global user.email [email protected] #设置全局邮箱

git config --global --list #列出用户全局设置

git add index.html / . #添加指定文件、目录或当前目录下所有数据到暂存区

git commit -m “11“ #提交文件到工作区

git status #查看工作区的状态

git push #提交代码到服务器

git pull #获取代码到本地

git log #查看操作日志

vim .gitignore #定义忽略文件

git reset --hard HEAD^^ #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一个版本

git reflog # #获取每次提交的 ID,可以使用--hard 根据提交的 ID 进行版本回退

git reset --hard 5ae4b06 #回退到指定 id 的版本

# git branch #查看当前所处的分支

#git checkout -b develop #创建并切换到一个新分支

复制ssh链接

2、安装配置jenkins,并实现jenkins和gitlab集成,实现jenkins自动化更新回滚

配置 java 环境并部署 jenkins:

https://jenkins.io/zh/download/下载地址

vim /etc/sysconfig/jenkins #修改配置文件,为了后面的权限设置问题,将用户改为root

JENKINS_USER="root"

systemctl start jenkins #启动服务

tail -f  /var/log/jenkins/jenkins.log

查看日志,在第一次启动jenkins时,会生成一串秘钥。后面安装时需要提供

/var/lib/jenkins/secrets/initialAdminPassword #在此文件中也会生成字符串

选择推荐安装

4.1.11:jenkins 插件管理及安装:

4.1.11.1:插件安装目录:

插件下载地址:http://updates.jenkins-ci.org/download/plugins/

4.1.12:配置 jenkins 权限管理:

基于角色的权限管理,先创建角色和用户,给角色授权,然后把用户管理到角色。

4.1.12.3:更改认证方式:

Jenkins—系统管理—全局安全配置

默认创建的用户登录后可以做任何操作,取决于默认的认证授权方式。

在系统配置中可以添加邮箱认证

新建自由风格项目

在凭据中添加私钥,用于链接gitlab仓库

在项目中可以添加gitlab仓库。使用ssh秘钥认证

启动tomcat 使用jenkins自动部署代码至tomcat

yum install java-1.8.0-openjdk-devel #安装devel版本,会自动解决其他依赖关系

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz #下载tomcat二进制安装包

tar xf apache-tomcat-8.5.45.tar.gz -C /usr/local/ #解压至usr/local目录中

ln -s apache-tomcat-8.5.45.tar.gz tomcat #创建软连接方便以后修改

useradd tomcat #添加用户,修改属组 ,tomcat默认以普通身份运行,需要修改文件权限

chown -R .tomcat .

chmod g+r conf/*

chmod g+rx conf/

chown -R tomcat logs/ temp/ work/

vim /etc/profile.d/cols.sh #修改tomcat命令行配置。

PS1=‘[\e[32;40m\[email protected]\h \W\e[m]$ ‘

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/tomcat/bin

更好一下tomcat中的appbase目录

启动catalina.sh start

配置gitlab仓库地址,使用秘钥认证连过去

使用shell执行命令

进入jenkins中。系统自带目录(默认创建项目时会创建根项目同名的目录在/var/lib/jenkins/workspace中)

拉取代码至本地。远程停止tomcat服务。在将文件替换至目标目录,之后启动服务

输出信息

添加slave节点

4.3:pipline:

官方介绍;https://jenkins.io/2.0/

pipline 是帮助 Jenkins 实现 CI 到 CD 转变的重要角色,是运行在 jenkins 2.X 版本的核

心插件,简单来说 Pipline 就是一套运行于 Jenkins 上的工作流框架,将原本独立运行

于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,从而

实现单个任务很难实现的复杂流程编排和任务可视化,Pipeline 的实现方式是一套

Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本。

4.3.2:pipline 语法:

Stage:阶段,一个 pipline 可以划分为若干个 stage,每个 stage 都是一个操作,比如

clone 代码、代码编译、代码测试和代码部署,阶段是一个逻辑分组,可以跨多个 node

执行。

Node:节点,每个 node 都是一个 jenkins 节点,可以是 jenkins master 也可以是

jenkins agent,node 是执行 step 的具体服务器。

Step:步骤,step 是 jenkins pipline 最基本的操作单元,从在服务器创建目录到构建容

4.3.2.2:测试简单 pipline job 运行:

node {

stage("clone 代码"){

echo "代码 clone"

}

stage("代码构建"){

echo "代码构建"

}

stage("代码测试"){

echo "代码测试"

}

stage("代码部署"){

echo "代码部署"

}

}

5.1:代码测试工具 SonarQube:

官方网站:http://www.sonarqube.org/

SonarQube 是一个用于代码质量管理的开放平台,通过插件机制,SonarQube可以

集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如

Hudson/Jenkins 等)不同,SonarQube 并不是简单地把不同的代码检查工具结果(例

如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再

加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种

类的工程进行代码质量管理。在对其他工具的支持方面,Sonar不仅提供了对 IDE的支

持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持

续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube,此外,

SonarQube 的插件还可以对 Java以外的其他编程语言提供支持,对国际化以及报告

文档化也有良好的支持。

5.2.1:编辑配置文件:

https://www.sonarqube.org/downloads/下载地址

sonar 依赖于 java 环境,而且 java 版本必须是 1.8 版本或更高,否则 sonar 启动失败

6.7.X 版本的 sonar 需要调用 elasticsearch,而且默认需要使用普通用户启动

$ unzip sonarqube-6.7.6.zip

$ln -sv /usr/local/src/sonarqube-6.7.6 /usr/local/sonarqube

$grep "^[za-Z]" /usr/local/sonarqube/conf/sonar.properties

[[email protected] local]# grep "^[za-Z]" /usr/local/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://192.168.7.106:3306/sonar?useUnicode=true&characterEncodi

ng=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

sonar.web.host=0.0.0.0

sonar.web.port=9000

5.2.2:启动 sonarqube:

# /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start

默认登录名及密码为admin

5.1.2:Mysql 数据库创建及授权:

#yum install vim gcc gcc-c++ wget autoconf net-tools lrzsz iotop lsof iotop bash-completion

curl policycoreutils openssh-server openssh-clients postfix -y

#cd mysql-5.6.42-linux-glibc2.12-x86_64

#ln -sv /usr/local/src/mysql-5.6.42-linux-glibc2.12-x86_64 /usr/local/mysql

#useradd mysql -s /sbin/nologin

#chown mysql.mysql /usr/local/mysql/ -R

#/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --

basedir=/usr/local/mysql/

#cp /usr/local/src/mysql-5.6.42-linux-glibc2.12-x86_64/support-files/mysql.server

/etc/init.d/mysqld

#cp my.cnf /etc/my.cnf

#chmod a+x /etc/init.d/mysqld

#/etc/init.d/mysqld start

#ln -sv /usr/local/mysql/bin/* /usr/bin/

#mkdir /var/lib/mysql

#ln -sv /data/mysql/mysql.sock /var/lib/mysql/

5.3:部署扫描器 sonar-scanner:

5.3.1:部署 sonar-scanner:

sonarqube 通过调用扫描器 sonar-scanner 进行代码质量分析,即扫描器的具体工作就

是扫描代码:

#下载地址:http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

# unzip sonar-scanner-2.6.1.zip

# ln -sv /usr/local/src/sonar-scanner-2.6.1 /usr/local/sonar-scanner

# cd /usr/local/sonar-scanner/

# grep "^[a-Z]" conf/sonar-scanner.properties

sonar.host.url=http://localhost:8800

sonar.sourceEncoding=UTF-8

sonar.jdbc.username=sonar

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://192.168.1.195:3306/sonar?useUnicode=true&character

Encoding=utf8

5.3.4:jenkins 关联到 SonarQube :

首先安装插件,在 jenkins 插件安装界面安装 Sonar 插件 SonarQubePlugin

其次配置 SonarQube server,系统管理-系统设置

5.3.5:让 jenkins 关联到 Sonarscanner

添加扫描器:

系统管理-Global Tool Configuration

5.3.6:配置扫描:

选择自己的项目(demo)-构建-execute sonarqube scanner,将配置文件的内容修改成如

下格式填写完成后点保存:

sonar.projectKey=test-demo1

sonar.projectName=test-demo1

sonar.projectVersion=1.0

sonar.sources=./

sonar.language=php

sonar.sourceEncoding=UTF-8

5.3.6:配置扫描:

选择自己的项目(demo)-构建-execute sonarqube scanner,将配置文件的内容修改成如

下格式填写完成后点保存:

sonar.projectKey=test-demo1

sonar.projectName=test-demo1

sonar.projectVersion=1.0

sonar.sources=./

sonar.language=php

sonar.sourceEncoding=UTF-8

使用脚本自动更新,需要传递参数,

#!/bin/bash

DATE=`date +%Y-%m-%d_%H-%M-%S`

GROUP_LIST=$2

function IP_list(){

if [[ ${GROUP_LIST} == "online-group1" ]];then

Server_IP="192.168.8.4"

echo ${Server_IP}

elif [[ ${GROUP_LIST} == "online-group2" ]];then

Server_IP="192.168.8.5"

ssh [email protected] ""echo enable  server web_port/192.168.8.4" | socat stdio /var/lib/haproxy/haproxy.sock"

ssh [email protected] ""echo enable  server web_port/192.168.8.5" | socat stdio /var/lib/haproxy/haproxy.sock"

echo ${Server_IP}

elif [[ ${GROUP_LIST} == "online-all" ]];then

Server_IP="192.168.8.4 192.168.8.5"

echo ${Server_IP}

fi

}

#function pull_code(){

#  rm -rf /home/tomcat/.jenkins/workspace/testweb

#  cd /home/tomcat/.jenkins/workspace

#  git clone [email protected]:testgroup/testweb.git

#}

function make_zip(){

cd /var/lib/jenkins/workspace/test-demo1  && zip testweb.war.zip ./*

}

function down_node(){

for node in ${Server_IP};do

echo ${node}

ssh [email protected] ""echo disable  server web_port/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"

ssh [email protected] ""echo disable  server web_port/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"

echo "${node} 关闭成功!"

done

}

function stop_tomcat(){

for node in ${Server_IP};do

ssh [email protected]${node} "/etc/init.d/tomcat stop"

echo "${node} 关闭成功!"

done

}

function start_tomcat(){

for node in ${Server_IP};do

ssh [email protected]${node} "/etc/init.d/tomcat start"

echo "${node} 关闭成功!"

done

}

function scp_codefile(){

cd /var/lib/jenkins/workspace/test-demo1

for node in ${Server_IP};do

scp testweb.war.zip  [email protected]${node}:/apps/tomcat_appdir

ssh [email protected]${node} "cd /apps/tomcat_appdir && unzip testweb.war.zip -d /apps/tomcat_webdir/testweb-${DATE} && rm -rf /data/tomcat_webdir/testweb && ln -sv /apps/tomcat_webdir/testweb-${DATE} /data/tomcat_webdir/testweb"

done

}

function web_test(){

#sleep 30

for node in ${Server_IP};do

NUM=`curl -s  -I -m 10 -o /dev/null  -w %{http_code}  http://${node}:8080/testweb/index.html`

if [[ ${NUM} -eq 200 ]];then

echo "${node} 测试通过,即将添加到负载"

add_node ${node}

else

echo "${node} 测试失败,请检查该服务器是否成功启动tomcat"

fi

done

}

function add_node(){

node=$1

echo ${node},"----->"

if [ ${node} == "192.168.8.100" ];then

echo "192.168.8.100部署完毕,请进行代码测试!"

else

ssh [email protected] ""echo enable  server web_port/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"

ssh [email protected] ""echo enable  server web_port/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"

fi

}

function rollback_last_version(){

for node in ${Server_IP};do

NOW_VERSION=`ssh [email protected]${node} ""/bin/ls -l  -rt /data/tomcat_webdir/ | awk -F"->" ‘{print $2}‘  | tail -n1 | awk -F"/apps/tomcat_webdir/" ‘{print $2}‘""`

NAME=`ssh [email protected]${node}  ""/bin/ls -l  -rt -d  /apps/tomcat_webdir/testweb* | grep -B 1 ${NOW_VERSION} | head -n1 | awk ‘{print $9}‘""`

ssh t[email protected]${node} "rm -rf /data/tomcat_webdir/testweb && ln -sv ${NAME} /data/tomcat_webdir/testweb"

done

}

main(){

case $1  in

deploy)

IP_list;

#pull_code;

make_zip;

down_node;

stop_tomcat;

scp_codefile;

start_tomcat;

web_test;

;;

rollback_last_version)

IP_list;

echo ${Server_IP}

down_node;

stop_tomcat;

rollback_last_version;

start_tomcat;

web_test;

;;

esac

}

main $1 $2

#需要自建两个参数

原文地址:https://www.cnblogs.com/woaiyitiaochai/p/11757992.html

时间: 2024-10-24 01:58:16

gitlab及jenkins的相关文章

gitlab+gerrit+jenkins持续集成框架

1.持续集成之gitlab+gerrit+jenkins 1.1. GitLab 1.1.1. 简介 GitLab 是一个使用使用Ruby on Rails搭建的,用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务 1.1.2. 环境搭建 a) Install and configure the necessary dependencies If you install Postfix to send email please select 'Interne

持续集成之④:GitLab触发jenkins构建项目

一:目的为在公司的测试环境当中一旦开发向gitlab仓库提交成功代码,gitlab通知jenkins进行构建项目.代码质量测试然后部署至测试环境,注意这只是测试环境,而生产环境依然需要手动部署代码: 1.1:jenkins配置:1.1.1:安装Gitlab Hook Plugin插件:#系统管理-管理插件-可选插件-Gitlab Hook Plugin和Build Authorization Token Root Plugin 1.1.2:生成随机token: # openssl rand -h

docker下运行Gitlab CE+Jenkins+Nexus3+docker-registry-frontend

DevOps - Gitlab CE - Jenkins - Nexus Gitlab CE https://hub.docker.com/r/gitlab/gitlab-ce/ https://docs.gitlab.com/omnibus/docker/README.html $ docker pull gitlab/gitlab-ce sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --pub

1.GitLab和Jenkins 结合构建持续集成(CI)环境

14.1 持续集成概述及运行流程 14.1.1 持续集成概述 持续集成概述:持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中, 可以频繁的将代码部署集成到主干,并进行自动化测试. 持续交付:持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境. 持续部署:在持续交付的基础上,把部署到生产环境的过程自动化. 14.1.2 jenkins 和 Gitlab 概述 Jenkins 概述:是一个开源软件项目,是基亍 Java 开发的一种持续集成工具,

2.GitLab与Jenkins 持续集成平台使用方法

1 配置 Jenkins 使用 gitlib 更新代码 2 实现 gitlib 触发 Jenkins 自劢部署 3 增加 Build Pipeline 插件以流程图的形式展示各个 Job 的顺序 15.1 配置 Jenkins 使用 gitlib 更新代码 登录 gitlab http://10.10.10.11/ 用户名: root 密码:yanglin123 登录 jenkins http://10.10.10.11:198/ 用户名: admin 密码: 123456 15.1.1 查看

gitlab与jenkins结合构建持续集成

Jenkins是java编写,需要安装JDK,这里采用 yum 安装,对版本有需求的,可以到 oracle 官网下载 JDK. yum install -y java-1.8.0-openjdk 一.安装 Jenkins 添加yum源 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo 导入密钥 sudo rpm --import https://pkg.jenk

开普勒云平台:如何配置gitlab与Jenkins

一.Kplcloud是什么? kplcloud是一个基于Kubernetes的轻量级PaaS平台,通过可视化的界面对应用进行管理,降低应用容器化的对度,从而减少应用容器化的时间成本. Kplcloud已在宜信服务于宜人财富等多个团队,稳定运行了近两年,目前平台已在生产环境跑着上百个应用,近千个容器. 1.1 快速启动 克隆 $ mkdir -p $GOPATH/src/github.com/kplcloud $ cd $GOPATH/src/github.com/kplcloud $ git c

gitlab配合jenkins执行简单的job

我们这里就用前两篇文章部署好的gitlab和jenkins服务来完成今天我们的实验. 首先我们先到gitlab上创建我们的测试账号,点击add people 用户会收到邮件,接下来点击此页下面的create user 收到邮件,设置密码: 接下来按照提示设置密码,密码设置成功后会收到邮件提醒.我们这里就不演示出来了.一般的小公司运维就会通过这个方式给新入职的员工进行开通gitlab账号,大公司会通过ldap的方式登陆gitlab,具体怎么通过ldap登陆gitlab我们后面会介绍. 新建的用户登

配置gitlab gerrit jenkins

配置gerrit 在gerrit创建jenkins用户 把jenkins用户加入Non-Interactive的组中 Projects -> List -> All-Projects Projects -> Access -> Edit -> 找到 Reference: refs/heads/* 项 -> Add Permission -> Label Verified-> Group Name 里输入 Non-Interactive Users ->

gitlab和jenkins发布代码

 Gitlab安装 Gitalab是利用发开源应用程序,实现自托管git项目仓库,可通过Web 界面进入访问公开或私人项目能够浏览源代码,管理缺陷和注释 一 :基础环境准备 查看系统信息  cat /etc/redhat-release 安装基础服务 2)安装Gitab-ce 首先先在.etc/yum.repos.d/设置yum源 3)然后继续yum 安装 4)配置启动gitlab 内存给大一点,最少1个G,不然在配置的时候会出现报错,还有就是如果打开界面出现502,请检查80和8080端口是否