实验环境
实验环境
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
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
配置
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
root
RIhtRBIZJ7wj0qIU2Al1MFUN5AYaw8k0jlC7Ij/Jyos=
admin1234
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
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
下载插件
blue ocean
pipeline
git
locale 可以换为中文
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
安装Harbor
# 下载harbor + docker-compose
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
实操
创建项目
创建群组
在组下面创建项目
开始实验
登录 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
新建分支
正常的公司都会切分支,开发正常都会有需求
# 合并分支
jenkins
更换为 国内源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
再去目录里面更改
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
上传代码
cd /root/java-damo
git add .
git status
git commit -m "this is my project"
git push -u origin master
新建任务
流水线Pipeline
流水线不会的话 可以 通过这一步,然后把要改的命令放进去
## 实在这里面步骤不够的话 点击下方的 流水线语法
建立凭据
## 凭证
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代码中去就行了
比如 以下,都是可以在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}
"""
}
}
}
}
更换harbor的仓库地址
换位 http://192.168.0.163
# 开启构建
构建成功