Git安装及gitlab 环境配置
1.1 安装
# 安装 [root@instance-gvpb80ao ~]# yum install git -y # 测试 [root@instance-gvpb80ao ~]# git --version
git version 1.8.3.1 # 基本配置 git config --global user.name "Your Name" #用户名 git config --global user.email "email@example.com" #邮箱 # 查看信息 [root@instance-gvpb80ao ~]# git config -l user.email=you@example.com user.name=Your Name
1.2 仓库
对应的就是一个目录,这个目录中的所有文件被git管理起来。以后会将一个项目的根目录,作为仓库。仓库中的每个文件的改动 都由git跟踪。
1.2.1 新建仓库
[root@instance-gvpb80ao ~]# mkdir test [root@instance-gvpb80ao ~]# cd test/ [root@instance-gvpb80ao test]# git init 初始化空的 Git 版本库于 /root/test/.git/ [root@instance-gvpb80ao test]# ll -a 总用量 12 drwxr-xr-x 3 root root 4096 12月 21 16:12 . dr-xr-x---. 8 root root 4096 12月 21 16:12 .. drwxr-xr-x 7 root root 4096 12月 21 16:12 .git
1.2.2、 链接远程仓库
git remote add origin git@github.com:yourName/repositoryname.git git remote add origin https://github.com/yourName/repositoryname.git git remote -v 查看远程连接 git remote rm origin 删除远程连接
1.2.3、 从远程仓库获取
# 当本地没有代码仓库时 git clone https://github.com/yourName/repositoryname.git # 当本地已经有了代码仓库,现在需要同步远程仓库内容 git pull origin master
1.2.4 将本地文件推送到远程
git status 查看工作目录的状态 git add <file> 将文件添加到暂存区 git commit -m "commnet" 提交更改,添加备注信息(此时将暂存区的信息提交到本地仓库) git push origin master 将本地仓库的文件push到远程仓库(若 push 不成功,可加 -f 进行强推操作)
1.2.5、 提交与修改
# 添加文件到仓库 git add
1.2.6、 查看状态
git status
1.2.7、 查看文件变化
格式:git diff # 查看某个文件 [root@instance-gvpb80ao test]# git diff index.php diff --git a/index.php b/index.php index 12dbfc1..20bf84b 100644 --- a/index.php +++ b/index.php @@ -1,3 +1,3 @@ <?php -echo "Oldboy" +echo "Oldboy"; # 查看 [root@instance-gvpb80ao test]# git diff diff --git a/demo.php b/demo.php index b3d9bbc..03750a5 100644 --- a/demo.php +++ b/demo.php @@ -1 +1,2 @@ <?php +echo "Index" diff --git a/index.php b/index.php index 12dbfc1..20bf84b 100644 --- a/index.php
+++ b/index.php
@@ -1,3 +1,3 @@
<?php
-echo "Oldboy"
+echo "Oldboy";
1.2.8、 分支
# 查看分支 [root@instance-gvpb80ao test]# git branch * master # 查看远程分支 [root@instance-gvpb80ao test]# git branch -a * master # 创建分支 [root@instance-gvpb80ao test]# git branch -a * master test # 切换分支 [root@instance-gvpb80ao test]# git checkout test M demo.php M index.php 切换到分支 'test' [root@instance-gvpb80ao test]# git branch -a master * test # 打标签 [root@instance-gvpb80ao test]# git tag -a v1.1.5-stable -m "做了很多事" [root@instance-gvpb80ao test]# git tag v1.1.5-stable # 查看标签内容 [root@instance-gvpb80ao test]# git show v1.1.5-stable tag v1.1.5-stable Tagger: Your Name <you@example.com> Date: Mon Dec 21 16:41:12 2020 +0800
做了很多事
commit 3fb292cfade47c2c6f58ceb23d0dfd3cb14217d1
Author: Your Name <you@example.com>
Date: Mon Dec 21 16:30:46 2020 +0800
init
diff --git a/demo.php b/demo.php
new file mode 100644
index 0000000..b3d9bbc
--- /dev/null
+++ b/demo.php
@@ -0,0 +1 @@
+<?php
diff --git a/index.php b/index.php
index e69de29..12dbfc1 100644
--- a/index.php
+++ b/index.php
@@ -0,0 +1,3 @@
+<?php
+
+echo "Oldboy"
# 按照分支拉取代码
git clone -b [分支名称] [git链接]
# 按照标签拉取代码
git clone [git链接]
git tag [tag_name]
2 gitlab 安装
2.2 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
2.3、 关闭防火墙
[root@instance-gvpb80ao test]# systemctl disable firewalld
# 关闭selinux
sed -i 's#enforcing#disabled#g' /etc/sysconfig/selinux
# 临时关闭
setenforce 0
2.4、 下载gitlab包,并且安装
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.0.3-ce.0.el7.x86_64.rpm
2.5 修改gitlab配置
# 安装gitlab yum install gitlab-ce-13.0.3-ce.0.el7.x86_64.rpm
2.6 重载配置及启动gitlab
# 配置文件 # 修改配置文件 [root@sean ~]# vim /etc/gitlab/gitlab.rb external_url 'http://192.168.12.82' nginx['listen_port'] = 80 # 刷新配置(默认启动) gitlab-ctl reconfigure # 启动 gitlab-ctl start
2.7.1 、添加组、创建用户、创建项目
2.7.1 创建组
2.7.3、 将用户绑定用户组
2.7.4、 添加用户有5种角色
1. Guest:可以创建issue、发表评论,不能读写版本库
2. Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限
3. Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
4. Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个 权限
5. Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组 长可以赋予这个权限
2.7.5、 创建项目
3、Jenkins持续集成工具
1.Jenkins安装
1.1、 安装java
yum install java-1.8.0-openjdk* -y
1.2 安装
启动Jenkin# 官方推荐 # 下载镜像源 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # 安装认证Key rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安装JenKins yum install jenkins # 第二种方式 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.1-1.1.noarch.rpm yum install jenkins-2.249.1-1.1.noarch.rpm # 启动 systemctl start jenkins
1.3 获取初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
2.Jenkins插件管理
# 切换至配置文件目录 cd /var/lib/jenkins/updates # 换源 sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
最后,插件管理点击高级,把站点升级改为国内插件下载地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3. Jenkins用户权限
我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限
3.1 开启权限全局安装配置
3.2 创建角色
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Item roles(项目角色): 针对某个或者某些项目的角色
Node roles(节点角色):节点相关的权限
Base: 设置成所有的用户都有查看的权限
Alvin: 设置以alvin开头的项目有超管权限
Oldboy:设置以oldboy开头的项目有超管权限
3.3 创建用户
3.4 分配角色
4、 Jenkins 凭证管理
要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件。
1. Username with password:用户名和密码
2. SSH Username with private key: 使用SSH用户和密钥
3. Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径 设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
4. Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token Certificate:通过上传证书文件的方式
5. X.509:证书,一般使用第三方云服务时使用。
6. Certificate:docker私有仓库密码存储类型。
4.1 配置密码登录
4.2、 配置私钥登录
5、 Jenkins构建变量
Jenkins变量也被称为参数化构建。
四、 Jenkins构建maven
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。
1. 配置maven环境
[root@instance-gvpb80ao opt]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --2020-12-21 20:34:21-- https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 124.239.159.250, 124.239.227.238, 124.239.234.224, ... 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|124.239.159.250|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:9506321 (9.1M) [application/octet-stream] 正在保存至: “apache-maven-3.6.3-bin.tar.gz” 100%[======================================================================================================================>] 9,506,321 2.40MB/s 用时 3.8s 2020-12-21 20:34:26 (2.40 MB/s) - 已保存 “apache-maven-3.6.3-bin.tar.gz” [9506321/9506321])
[root@instance-gvpb80ao opt]# ll | grep mav
-rw-r--r-- 1 root root 9506321 7月 3 12:01 apache-maven-3.6.3-bin.tar.gz
[root@instance-gvpb80ao opt]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)
# 移动到/usr/local
[root@instance-gvpb80ao opt]# mv apache-maven-3.6.3 /usr/local/
[root@instance-gvpb80ao opt]# cd /usr/local/apache-maven-3.6.3/
[root@instance-gvpb80ao apache-maven-3.6.3]# pwd
/usr/local/apache-maven-3.6.3
# 添加环境变量
[root@instance-gvpb80ao apache-maven-3.6.3]# vim /etc/profile
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
[root@instance-gvpb80ao apache-maven-3.6.3]# source /etc/profile
[root@instance-gvpb80ao apache-maven-3.6.3]# mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/apache-maven-3.6.3
Java version: 1.8.0_272, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.13.1.el7.x86_64", arch: "amd64", family: "unix"
2. 配置maven
2.1 安装maven插件
2.2 创建java代码仓库
2.3、 创建maven仓库
使用jenkins用户在/data/software目录下新建一个repository文件夹,用来作为maven的仓库
[root@instance-gvpb80ao ~]# mkdir -pv /data/software/repository mkdir: 已创建目录 "/data" mkdir: 已创建目录 "/data/software" mkdir: 已创建目录 "/data/software/repository" [root@instance-gvpb80ao ~]# chown jenkins.jenkins /data/software/repository/
使用root账户修改Maven的settings.xml文件(指定仓库目录和阿里云镜像)
# 修改/usr/local/apache-maven-3.6.3/conf/setting.xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--本地仓库-->
<localRepository>/data/software/repository</localRepository>
<mirrors>
<!--阿里云镜像-->
<mirror>
<id>aliyun-maven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven mirror</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
...
...
</settings>
2.4、 测试构建
2.5、 配置Tomcat
[root@instance-gvpb80ao opt]# wget https://ftp.wayne.edu/apache/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz [root@instance-gvpb80ao opt]# tar xf apache-tomcat-9.0.41.tar.gz [root@instance-gvpb80ao opt]# mv apache-tomcat-9.0.41 /usr/local/ # 注:下方38080端口是我修改的,默认8080端口
后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置, 添加用户及权限。
[root@instance-gvpb80ao apache-tomcat-9.0.41]# vim /usr/local/apache-tomcat-9.0.41/conf/tomcat-users.xml 用户和密码都是:tomcat <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager-script"/> <role rolename="manager-gui"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置
[root@instance-gvpb80ao META-INF]# vim /usr/local/apache-tomcat-9.0.41/webapps/manager/META-INF/context.xml <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
重新启动tomcat
[root@instance-gvpb80ao apache-tomcat-9.0.41]# ./bin/shutdown.sh Using CATALINA_BASE: /usr/local/apache-tomcat-9.0.41 Using CATALINA_HOME: /usr/local/apache-tomcat-9.0.41 Using CATALINA_TMPDIR: /usr/local/apache-tomcat-9.0.41/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk
Using CLASSPATH: /usr/local/apache-tomcat-9.0.41/bin/bootstrap.jar:/usr/local/apache-tomcat-9.0.41/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@instance-gvpb80ao apache-tomcat-9.0.41]# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-9.0.41
Using CATALINA_HOME: /usr/local/apache-tomcat-9.0.41
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-9.0.41/temp
Using JRE_HOME: /usr/lib/jvm/jre-1.8.0-openjdk
Using CLASSPATH: /usr/local/apache-tomcat-9.0.41/bin/bootstrap.jar:/usr/local/apache-tomcat-9.0.41/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
3、 构建maven项目
Jenkins中自动构建项目的类型有很多,常用的有以下三种:
1. 自由风格软件项目(FreeStyle Project)
2. Maven项目(Maven Project)
3. 流水线项目(Pipeline Project)
每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在 实际开发中可以根据自己的需求和习惯来选择。
3.1 创建项目
3.2、 测试编译
3.3 部署
安装一个插件