实验环境

实验环境
rockyLinux-8.10
机器
192.168.0.161  gitlab 用于二进制实验安装

实验主体:
192.168.0.162  jenkins-master /jdk/maven
192.168.0.163  jenkins-slave /jdk/maven/harbor
192.168.0.164  gitlab



机器62 63
tar -zxvf jdk1.8.0_201.tar.gz
mv jdk1.8.0_201 /usr/local/jdk
vim /etc/profile


export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

source /etc/profile
java -version

image.png

gitlab-61-二进制装gitlab

git的操作命令

# git 全局设置
git config -global user.name "Administrator"
git config -global user.email "admin@example.com"

# 创建新版本库
git clone http://xxxxx

# 提交到暂存区
git add README.txt
# 提交 到本地仓库
git commit -m "add README version-1"
# 推送 到主分支
git push -u origin master  

# 初始化环境
git init
# remot
git remote:列出当前仓库中已配置的远程仓库。
git remote -v:列出当前仓库中已配置的远程仓库,并显示它们的 URL。
git remote add <remote_name> <remote_url>:添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中。
git remote rename <old_name> <new_name>:将已配置的远程仓库重命名。
git remote remove <remote_name>:从当前仓库中删除指定的远程仓库。
git remote set-url <remote_name> <new_url>:修改指定远程仓库的 URL。
git remote show <remote_name>:显示指定远程仓库的详细信息,包括 URL 和跟踪分支。
# git merge -b  将b分支合并到当前分支
# git fetch 从远程获取最新版本到本地,不自动merge
#  git pull = git fetch + git merge   自动merge
# git reset  回退版本、
# git rm  将文件从暂存区和工作区中删除
# git diff 比较文件的不同,即暂存区和工作区的差异
git diff:查看工作区与暂存区的不同。
git diff –cached [<commit>]:查看暂存区与指定提交版本的不同,版本可缺省(为HEAD)。
git diff <commit>:查看工作区与指定提交版本的不同。
git diff <commit>..<commit>:查看2个指定提交版本的不同,其中任一可缺省(为HEAD)。
git diff <commit>...<commit>:查看2个不同分支指定提交版本的不同,其中任一可缺省(为HEAD)
该命令相当于git diff $(git-merge-base A B) B。
#切换分支
git checkout
git switch  #更清晰的切换分支
git restore # 撤销或回复文件的更改

安装


# 安装依赖包
yum -y install curl  policycoreutils openssh-server openssh-clients postfix 

# 安装源
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

#  安装gitlab
yum -y install gitlab-ce

image.png image.png image.png

配置

vim /etc/gitlab/gitlab.rb

改 13 external_url 'http://gitlab.example.com'
      external_url 'http://192.168.0.161

# 重新加载配置文件

gitlab-ctl reconfigure


# gitlab管理的其他命令
gitlab-ctl stop  # 停止
gitlab-ctl start # 启动
gitlab-ctl restart # 重启
gitlab-ctl status # 状态

# 首次登录 查看密码
 cat /etc/gitlab/initial_root_password

image.pngimage.pngimage.pngimage.png


root
RIhtRBIZJ7wj0qIU2Al1MFUN5AYaw8k0jlC7Ij/Jyos=
admin1234

image.pngimage.pngimage.png

docker安装gitlab


mkdir gitlab
cd gitlab/
docker run -d \
--name gitlab \
-p 8443:443 \
-p 9999:80 \
-p 9998:22 \
-v $PWD/config:/etc/gitlab \
-v $PWD/logs:/var/log/gitlab \
-v $PWD/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
--restart=always \
registry.cn-hangzhou.aliyuncs.com/ywflyfish/gitlab-ce-zh:latest

访问 192.168.0.161:9999



image.png

root 
123.com@

准备Jenkins

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -u root -v /opt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/maven:/usr/local/maven -v /usr/local/jdk:/usr/local/jdk -v /etc/localtime:/etc/localtime --restart=always --name jenkins jenkins/jenkins:lts


# 先拉取镜像 这里需要翻一下
docker pull  jenkins/jenkins:lts 

image.pngimage.pngimage.pngimage.pngimage.png

下载插件
blue ocean
pipeline
git

locale 可以换为中文

image.pngimage.png

maven

tar -zxvf apache-maven-3.8.8-bin.tar.gz
mv apache-maven-3.8.8/* /usr/local/maven/
cd /usr/local/maven/conf
cp -ap settings.xml settings.xml.bak

vim /etc/profile

export MAVEN_HOME=/usr/local/maven
export CLASSPATH=.:$MAVEN_HOME/jre/lib:$MAVEN_HOME/lib:$MAVEN_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin


vim settings.xml

<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

mvn -version

image.png image.png

安装Harbor

# 下载harbor + docker-compose

image.png

chmod +x docker-compose-linux-x86_64 
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/bin
docker-compose -v




tar -zxvf harbor-offline-installer-v2.10.3.tgz  -C /usr/local/
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml


mkdir data
chmod 777 data/
./prepare
./install.sh

image.pngimage.pngimage.pngimage.png

实操

创建项目

image.png

创建群组

image.png

在组下面创建项目

image.png

开始实验

登录 162 机器

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
git clone http://192.168.0.164:9999/jichaoit/jichao-project.git


vim README.md
git add README.md
git status 
git commit -m " git test "
git push -u origin master

image.png image.png

新建分支

image.png

正常的公司都会切分支,开发正常都会有需求

# 合并分支

image.pngimage.png

jenkins

更换为 国内源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image.png

再去目录里面更改
cd /opt/jenkins_home/updates
sed -i 's/http:\/\/updates.jenkins-ci.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

image.png

上传代码

image.png

cd /root/java-damo
git add . 
git status
git commit -m "this is my project"
git push -u origin master

image.pngimage.png

新建任务

image.png

流水线Pipeline

image.png

流水线不会的话 可以 通过这一步,然后把要改的命令放进去

## 实在这里面步骤不够的话 点击下方的 流水线语法

image.pngimage.png

建立凭据image.pngimage.png


## 凭证
95248b00-367d-4d89-894f-97fa166ef10c  ## gitlab
856bc877-5d0f-428f-bedf-add2692a676d  ## harbor

生成流水线语句

把上面的凭证和gitlab地址结合 就可以去拉取代码了


git credentialsId: '95248b00-367d-4d89-894f-97fa166ef10c', url: 'http://192.168.0.164:9999/root/java-damo.git'



根据获取到的  分块放入原pipeline代码中去就行了

image.png

比如 以下,都是可以在pipeline自动生成语法的,没有的就自己写一下脚本

git 拉取代码


checkout 切换分支

然后
maven 打包

push 推送

deploy 部署




def registry = "192.168.0.163"
def project = "jichao-image-project"
def app_name = "java-demo"
def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
def git_address = "http://192.168.0.164:9999/root/java-demo.git"
def docker_registry_auth = "856bc877-5d0f-428f-bedf-add2692a676d"
def git_auth = "95248b00-367d-4d89-894f-97fa166ef10c"

pipeline {
    agent any
    stages {
        stage('拉取代码'){
            steps {
              checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
            }
        }

        stage('代码编译'){
           steps {
             sh """
                JAVA_HOME=/usr/local/jdk
                PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH
                mvn clean package -Dmaven.test.skip=true
                """ 
           }
        }

        stage('构建镜像'){
           steps {
                withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                sh """
                  echo '
                    FROM registry.cn-hangzhou.aliyuncs.com/ywflyfish/tomcat:v1
                    LABEL maitainer flyfish
                    RUN rm -rf /usr/local/tomcat/webapps/*
                    ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
                  ' > Dockerfile
                  docker build -t ${image_name} .
                  docker login -u ${username} -p '${password}' ${registry}
                  docker push ${image_name}
                """
                }
           } 
        }

        stage('部署到Docker'){
           steps {
              sh """
              docker rm -f tomcat-java-demo |true
              docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}
              """
            }
        }
    }
}
      

image.pngimage.png

更换harbor的仓库地址

image.png

换位 http://192.168.0.163

image.png

# 开启构建

构建成功



image.pngimage.png