服务器基础环境配置
Ubuntu 22 安装 JDK 17
在浏览器输入:Java Downloads | Oracle,选择 jdk17 进行下载。
把下载完完成的 jdk-17_linux-x64_bin.tar.gz
包通过 ssh 客户端中 ftp 模块上传至服务器 /usr/local/src
目录下 。
解压压 jdk 文件到指定目录下
root@segen-virtual-machine:/usr/local/src# tar -zxf $PWD/jdk-17_linux-x64_bin.tar.gz -C /usr/local/
配置环境
使用如下命令打开文件
root@segen-virtual-machine:/usr/local# vim ~/.bashrc
如果vim 打不开先 安装vim编辑器
root@segen-virtual-machine:/usr/local# apt-get install vim
使用命令sudo vim ~/.bashrc,然后在文件末尾添加如下内容:
export JAVA_HOME=/usr/local/jdk-17.0.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
最后保存。输入以下命令, 令系统配置文件.bashrc立即生效 :source ~/.bashrc
在终端输入 java -version
出现如下信息代表 java 环境配置正确
root@segen-virtual-machine:/usr/local/jdk-17.0.8# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
Ubuntu 22 安装 docker
卸载旧版本
在安装 Docker 引擎之前,您必须首先确保任何 将卸载冲突的软件包。
root@segen-virtual-machine:/opt# for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
安装 docker 脚本
设置 Docker 的 Apt 存储库。
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add the repository to Apt sources: echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
安装 Docker 软件包。
root@segen-virtual-machine:/opt# apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
通过运行
docker version
引擎安装是否成功,如果出现以下内容代表安装成功。Client: Docker Engine - Community Version: 24.0.6 API version: 1.43 Go version: go1.20.7 Git commit: ed223bc Built: Mon Sep 4 12:31:44 2023 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 24.0.6 API version: 1.43 (minimum version 1.12) Go version: go1.20.7 Git commit: 1a79695 Built: Mon Sep 4 12:31:44 2023 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.24 GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523 runc: Version: 1.1.9 GitCommit: v1.1.9-0-gccaecfc docker-init: Version: 0.19.0
在 opt 目录下创建 shell 脚本把上面的脚本进行统一运行
# 使用touch命令创建一个空文件
root@segen-virtual-machine:/opt# touch ubuntu22_docker_install.sh
# 使用chmod命令赋予文件执行权限
root@segen-virtual-machine:/opt# chmod +x ubuntu22_docker_install.sh
完整脚本内容如下 ubuntu22_docker_install.sh
#!/bin/bash
# 这个脚本用于在Ubuntu上安装Docker
# 添加Docker的官方GPG密钥:
apt-get update
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# 将仓库添加到Apt源中:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
# 安装Docker及相关组件:
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 查看 Docker 版本信息:
docker version
离线安装docker
参考Docker官方文档:
Install Docker Engine on Ubuntu | Docker Documentation
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install.
https://docs.docker.com/engine/install/ubuntu/
1.访问下列链接,选择对应的Ubuntu版本:
https://download.docker.com/linux/ubuntu/dists/
2.访问问 pool/stable/ ,然后选择对应的CPU架构
(amd64
, armhf
, arm64
, or s390x
),如Ubuntu 22.04 amd64链接:Index of linux/ubuntu/dists/jammy/pool/stable/amd64/
3.下载下列dep文件
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
4.使用下列命令安装
$ sudo tar -zxvf Ubuntu22_Docker_离线安装包.tar
$ sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.deb
5.启动docker
$ sudo service docker start
6.设置docker自动启动
$ systemctl enable docker.service
7.同步本地时间
更新系统时间:
$ sudo timedatectl set-ntp on
这会启用网络时间协议(NTP)同步,使系统自动从网络服务器获取时间。
选择上海时区:
$ sudo timedatectl set-timezone Asia/Shanghai
这会将系统时区设置为上海。
检查时间和时区设置:
$ timedatectl
确保输出中的 "Time zone" 显示为 "Asia/Shanghai"。
这样,你的系统时间就会被同步到上海的时间,并且自动与 NTP 服务器同步。
请注意,这些操作需要管理员权限,因此可能需要使用 sudo
命令执行。如果系统上尚未安装 NTP,你可能需要首先安装它,可以使用以下命令:
$ sudo apt update
$ sudo apt install -y ntp
上述命令将确保 NTP 工具安装在系统上,然后你可以执行同步时间的步骤。
配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "500m",
"max-file": "3"
},
"registry-mirrors": ["https://avz7ojgz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
在
daemon.json
文件中添加log-driver
和log-opts
参数,设置max-size
和max-file
。例如,设置单个日志文件的最大大小为500MB,并且最多保留3个日志文件
docker容器时区修改
复制宿主机下面的zoneinfo文件到容器内
docker cp /usr/share/zoneinfo/ aca1a3850163:/usr/share/
进去容器
docker exec -it nstr-minio /bin/bash
在容器内设置时区,不用重启容器即可更改时间时区设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cho "Asia/Shanghai" > /etc/timezone
date
Tue Mar 15 16:47:19 CST 2022
安装开发环境
创建容器需要挂载的目录和文件
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/jenkins
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gogs
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/mysql/conf
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/mysql/data
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/nginx
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/redis
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/nacos
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/seata
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/xxl-job
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/es
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/mq
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/config
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/logs
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/data
创建 mysql 配置文件:vim /usr/local/dockerdata/mysql/conf/my.cnf
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1010
innodb_fast_shutdown=1
编写 docker-compose.yml 文件
# 使用 sudo 权限以管理员身份执行命令,并使用 tee 命令将数据写入文件
sudo tee /usr/local/dockerdata/docker-compose.yml <<-'EOF'
services:
mysql:
image: mysql:8.0.34
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: Nstr.234808
volumes:
- "/usr/local/dockerdata/mysql/conf:/etc/mysql/conf.d"
- "/usr/local/dockerdata/mysql/data:/var/lib/mysql"
restart: always
networks:
- new
gogs:
image: gogs/gogs:0.13
container_name: gogs
ports:
- "20022:22"
- "3001:3000"
environment:
TZ: Asia/Shanghai
volumes:
- "/usr/local/dockerdata/gogs:/data"
networks:
- new
restart: always
depends_on:
- mysql
jenkins:
image: jenkins/jenkins:2.414.2-lts-jdk17
container_name: jenkins
ports:
- "2080:8080"
- "50000:50000"
environment:
- "JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=512m"
volumes:
- "/usr/local/dockerdata/jenkins:/var/jenkins_home"
- "/usr/bin/docker:/usr/bin/docker"
- "/var/run/docker.sock:/var/run/docker.sock"
restart: always
networks:
- new
networks:
new:
name: segen
EOF
编写完成后运行docker compose up -d
命令来启动应用容器,成功启动后 使用 docker compose ps
查看容器是否运行正常,如果启动正常会出现如图所示内容。
docker compose
一些常用命令
docker-compose up -d
:启动应用程序,创建并启动所有定义在docker-compose.yml
文件中的容器。docker-compose down
:停止并删除所有与应用程序相关的容器、网络和卷。通常与up
配对使用,用于关闭应用程序。docker-compose build
:根据Dockerfile
构建应用程序所需的镜像。这个命令通常在修改了 Dockerfile 或其他构建上下文内容后使用。docker-compose ps
:列出与应用程序关联的容器的状态信息,如容器 ID、名称、状态、端口映射等。docker-compose logs
:查看应用程序中所有容器的日志输出。可以使用-f
参数来实时监视日志。docker-compose exec
:在运行中的容器中执行命令。例如:docker-compose exec <service-name> <command>
。docker-compose scale
:用于扩展指定服务的容器数量。例如:docker-compose scale <service-name>=3
将服务的容器数量扩展为 3 个。docker-compose down -v
:停止并删除容器,同时删除关联的数据卷。docker-compose restart
:重新启动已经运行的服务。docker-compose pull
:从容器仓库拉取最新的镜像版本。docker-compose config
:验证docker-compose.yml
文件的语法,并将其解析成 Compose 文件的配置信息。
这些是一些常见的 Docker Compose 命令,可以帮助你管理容器化应用程序的生命周期。你可以通过运行 docker-compose --help
命令来查看更多的命令选项和详细信息。
容器都正常启动后首先配置 gogs
访问:http://192.168.1.19:10880/ 安装页面,这里ip 替换成你的虚拟机的ip。
配置数据库
首先创建DataBase,并设置字符集utf8_general_ci。为了安全可以创建单独的用户用于处理gogs服务。
# 创建一个名为 "gogs" 的数据库,使用 UTF-8 字符集
CREATE DATABASE gogs CHARACTER SET utf8;
# 创建一个名为 "gogs" 的数据库用户,该用户只可以从任何 IP 地址进行访问,并设置密码为 "Nstr.gogs808"
CREATE USER 'gogs'@'%' IDENTIFIED BY 'Nstr.gogs808';
# 授予用户 "gogs" 从 IP 地址 % 访问数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'gogs'@'%';
# 刷新数据库权限,以使新的权限设置立即生效
FLUSH PRIVILEGES;
配置数据库主机、用户名、密码等信息.
应用基本配置
应用基本设置只需要修改运行系统用户、域名、应用URL,其它采用默认值。
设置管理员账号
配置管理员账号,让自己有所有权限。
创建仓库
用户可以创建新的仓库
创建密钥
用户要将仓库下载到本地,这需要配置密钥,具体操作如下:
# 如果本地之前创建过密钥直接运行(cat ~/.ssh/*.pub)
ssh-keygen -t rsa -b 4096 -C "w****@163.com"
# 一路回车
cd ~/.ssh/
cat id_rsa.pub
# 将密钥添加到gogs上
#跟踪连接远程仓库的信息
ssh -vT [email protected] -p 20022
克隆仓库
把刚刚创建好的仓库克隆到本地:
# 克隆远程仓库方式
git clone http://192.168.1.19:3001/segen/sgtest.git
cd sgtest
touch README.md
git add README.md
git commit -m "first commit"
git push -u origin master
# 本地关联远程仓库方式
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin http://192.168.1.19:3001/segen/sgtest.git
git push -u origin master
部署配置 gitlab
首先创建 gitlab 需要挂载到本地的文件目录。
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/config
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/logs
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/gitlab-data/data
编写 docker compose 文件,使用 docker compose up -d gitlab
启动 gitlab
容器,docker ps 查看容器是否成功启动。
sudo tee /usr/local/dockerdata/docker-compose.yml <<-'EOF'
services:
mysql:
image: mysql:8.0.34
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: Nstr.234808
volumes:
- "/usr/local/dockerdata/mysql/conf:/etc/mysql/conf.d"
- "/usr/local/dockerdata/mysql/data:/var/lib/mysql"
restart: always
networks:
- new
gitlab:
image: 'gitlab/gitlab-ce:latest'
hostname: '192.168.1.19'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.1.19:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['backup_keep_time'] = 259200
ports:
- '8929:8929'
- '2224:22'
volumes:
- /usr/local/dockerdata/gitlab-data/config:/etc/gitlab
- /usr/local/dockerdata/gitlab-data/logs:/var/log/gitlab
- /usr/local/dockerdata/gitlab-data/data:/var/opt/gitlab'
shm_size: '256m'
restart: always
networks:
- new
jenkins:
image: jenkins/jenkins:2.414.2-lts-jdk17
container_name: jenkins
ports:
- "2080:8080"
- "50000:50000"
environment:
- "JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=512m"
volumes:
- "/usr/local/dockerdata/jenkins:/var/jenkins_home"
- "/usr/bin/docker:/usr/bin/docker"
- "/var/run/docker.sock:/var/run/docker.sock"
restart: always
networks:
- new
networks:
new:
name: segen
EOF
在浏览器输入:http://192.168.1.19:8929/ 访问 gitlab 的 web 界面。
然后登录管理员账号,查看初始化的管理员账号密码:cat /usr/local/dockerdata/gitlab-data/config/initial_root_password
新用户注册
注册完成后需要登录管理员账号进行用户的审核
等管理员审批通过后就可以直接登录了。
配置公钥
登录完成后把本地 公钥添加到自己的账户里,方便克隆提交项目代码或文件。
查询或生成密钥的具体操作如下:
# 如果本地之前创建过密钥直接运行(cat ~/.ssh/*.pub)
ssh-keygen -t rsa -b 4096 -C "w****@163.com"
# 一路回车
cd ~/.ssh/
cat id_rsa.pub
# 将密钥添加到 gitlba 上
创建项目
密钥成功添加后,接下来开始创建项目。关联项目,测试拉取和提交代码。
可以根据自己的实际需求,创建符合新要求的项目,这里我选择创建个空的项目。
Git全局设置
git config --global user.name "xuanfeng li"
git config --global user.email "[email protected]"
创建仓库
git clone ssh://[email protected]:2224/cactusli/segen.git
cd segen
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main
推送一个已有的文件夹
cd existing_folder
git init --initial-branch=main
git remote add origin ssh://[email protected]:2224/cactusli/segen.git
git add .
git commit -m "Initial commit"
git push -u origin main
推送一个现有的Git存储库
cd existing_repo
git remote rename origin old-origin
git remote add origin ssh://[email protected]:2224/cactusli/segen.git
git push -u origin --all
git push -u origin --tags
root 密码忘记使用脚本一键更新
#!/bin/bash
# 替换为你的 GitLab 容器 ID
GITLAB_CONTAINER_ID=f7cad737731d
# 在容器中运行 Rails 控制台,并执行密码重置操作
docker exec -it $GITLAB_CONTAINER_ID /bin/bash -c 'gitlab-rails console <<EOF
user = User.where(id: 1).first
new_password = "Nstr.@#$%^&*808"
user.password = new_password
user.password_confirmation = new_password
user.save!
exit
EOF'
# 重新启动 GitLab 容器
docker restart $GITLAB_CONTAINER_ID
echo "新密码已生成:$new_password"
安装配置 jenkins
首先在服务器创建 jenkins 用户,然后赋予相应的权限。
# useradd 命令用于创建新用户,-U 选项表示不要创建与用户名相同的用户组,-m 表示创建用户的家目录
# 这个命令创建了一个名为 "jenkins" 的用户,不会创建与其同名的用户组,并在家目录中存储用户文件
useradd -U -m jenkins
# usermod 命令用于修改用户属性,-aG 选项用于将用户添加到指定的附加组
# 这个命令将用户 "jenkins" 添加到 "docker" 附加组中
# 这通常用于允许用户执行Docker相关的操作
usermod -aG docker jenkins
# 这个命令将用户 "jenkins" 添加到 "root" 附加组中
# 添加用户到 "root" 附加组通常是不推荐的,因为它会给予用户超级用户权限,潜在的安全风险
usermod -aG root jenkins
# chmod 命令用于更改文件或目录的权限,777 表示最大的权限,即读取、写入和执行权限
# 这个命令将文件 /var/run/docker.sock 的权限设置为最大,允许任何用户对其进行读取、写入和执行操作
# 这样的权限设置可能会存在安全风险,请小心使用,并确保只允许信任的用户或进程访问这个文件
chmod 777 /var/run/docker.sock
创建 jenkins 需要挂载到本地的文件目录。
root@segen-virtual-machine:/usr/local/dockerdata# mkdir -p /usr/local/dockerdata/jenkins
编写 docker compose 文件,使用 docker compose up -d jenkins
启动 jenkins
容器,docker ps 查看容器是否成功启动。
sudo tee /usr/local/dockerdata/docker-compose.yml <<-'EOF'
services:
mysql:
image: mysql:8.0.34
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: Nstr.234808
volumes:
- "/usr/local/dockerdata/mysql/conf:/etc/mysql/conf.d"
- "/usr/local/dockerdata/mysql/data:/var/lib/mysql"
restart: always
networks:
- new
gitlab:
image: 'gitlab/gitlab-ce:latest'
hostname: '192.168.1.19'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.1.19:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['backup_keep_time'] = 259200
ports:
- '8929:8929'
- '2224:22'
volumes:
- /usr/local/dockerdata/gitlab-data/config:/etc/gitlab
- /usr/local/dockerdata/gitlab-data/logs:/var/log/gitlab
- /usr/local/dockerdata/gitlab-data/data:/var/opt/gitlab'
shm_size: '256m'
restart: always
networks:
- new
jenkins:
image: jenkins/jenkins:2.414.2-lts-jdk17
container_name: jenkins
ports:
- "2080:8080"
- "50000:50000"
environment:
- "JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=512m"
volumes:
- "/usr/local/dockerdata/jenkins:/var/jenkins_home"
- "/usr/bin/docker:/usr/bin/docker"
- "/var/run/docker.sock:/var/run/docker.sock"
restart: always
networks:
- new
networks:
new:
name: segen
EOF
如图所示 jenkins 成功启动
如图所示 jenkins 成功启动
新手入门
浏览器访问(ip:port),出现这个界面说明安装成功,查看Jenkins密码进行下一步。
创建用户
保存实例
进入Jenkins 后台管理系统
汉化插件安装
缓存插件列表
点击Manage Jenkins --》 Manage Plugins --》Available 等待浏览器加载完成。(这样做是为了把Jenkins官方的插件列表下载到本地)
安装汉化插件
重启 jenkins 使用命令
docker compose restart jenkins
,此命令一定要在有 docker-compose.yml 目录下运行。
实现前端自动化部署
实现 vue3 项目的自动化打包部署。
安装 jenkins 插件
选择:Dashboard 》系统管理 》 插件管理 》Available plugins;
搜索安装部署需要的插件 如:gitlab
、Publish Over SSH
、nodejs
软件配置
在系统管理中的全局工具配置里,可以把Maven、Gradle、NodeJ、Git 的环境都选一下,勾选自动安装。但这里有个小坑,就是点击保存后并不会直接下载安装,而是使用触发的时候才会。比如Maven需要再新建Job中选择Maven选项才会自动下载;Node的话则需要勾选这个选项才会自动下载。
创建任务
项目配置
源码管理这里选择Git,然后将我们的Gitlab的项目地址放上去,Credentials里添加一个Gitlab的用户名密码。
然后我们勾上这个Build when a change is pushed to Gitlab
选项,后面这个URL拷贝一下。
将上面的URL拷贝到Gitlab中,点击Webhook:
如果出现这种错误提示,修改修改gitlab 的网络策略: Admin -> Settings -> Network -> Outbound Requests -> Allow requests to the local network from hooks and services(勾选上)
添加后,我们就可以在这里看到了该Hook,我们可以点击Test测试一下。如果出现如图所示提示的错误,则需要在Jenkins里设置一下安全策略,勾选以下按钮:
最后,我们编写一下需要Jenkins拿到这个事件后,执行什么。我们在构建里,添加执行Shell:
docker rm -f pure-admin-thin
sleep 1
docker rmi -f pure-admin-thin:1.0
sleep 1
docker build -t pure-admin-thin:1.0 -f ./Dockerfile .
sleep 1
docker run -d -p 8032:80 --name pure-admin-thin pure-admin-thin:1.0
在控制台里我们可以看到具体的执行信息,其实和我们在Linux上敲命令是一样的,出啥错解决啥就可以了。
删除任务的构建历史
进入 “Dashboard --> 系统管理 --> Script Console” 输入清理构建记录的脚本内容:
item = Jenkins.instance.getItemByFullName("your-job-name-here") // 替换成自己 JOB 名称
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
build.delete()
}
item.updateNextBuildNumber(1)
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
restart: always
networks:
- new
nacos:
image: nacos/nacos-server:v2.1.0-slim
container_name: nacos
environment:
- MODE=standalone
- JVM_XMS=512m
- JVM_XMX=512m
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=123
- MYSQL_SERVICE_DB_NAME=nacos
- SPRING_DATASOURCE_PLATFORM=mysql
ports:
- "8848:8848"
restart: always
depends_on:
- mysql
networks:
- new
xxl-job:
image: xuxueli/xxl-job-admin:2.3.0
container_name: xxljob
ports:
- "8880:8880"
volumes:
- "./xxl-job/logs:/data/applogs"
- "./xxl-job/application.properties:/config/application.properties"
networks:
- new
restart: always
depends_on:
- mysql
seata:
image: seataio/seata-server
container_name: seata
ports:
- "8099:8099"
- "7099:7099"
environment:
SEATA_IP: 192.168.150.101
volumes:
- "./seata:/seata-server/resources"
networks:
- new
restart: always
depends_on:
- mysql
- nacos
gogs:
image: gogs/gogs:0.12
container_name: gogs
ports:
- "10022:22"
- "10880:3000"
environment:
TZ: Asia/Shanghai
volumes:
- "./gogs:/data"
networks:
- new
restart: always
depends_on:
- mysql
jenkins:
image: jenkins/jenkins:2.361.1-lts-jdk11
container_name: jenkins
ports:
- "18080:8080"
- "50000:50000"
environment:
- "JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
volumes:
- "./jenkins:/var/jenkins_home"
- "/usr/bin/docker:/usr/bin/docker"
- "/var/run/docker.sock:/var/run/docker.sock"
restart: always
networks:
- new
mq:
image: rabbitmq:3.8-management
container_name: mq
hostname: mq
ports:
- "15672:15672"
- "5672:5672"
environment:
RABBITMQ_DEFAULT_USER: tjxt
RABBITMQ_DEFAULT_PASS: 123321
volumes:
- "./mq/plugins:/plugins"
- "./mq/data:/var/lib/rabbitmq"
- "./mq/conf:/etc/rabbitmq"
restart: always
networks:
- new
es:
image: elasticsearch:7.12.1
container_name: es
ports:
- "9200:9200"
- "9300:9300"
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.type=single-node"
volumes:
- "./es/data:/usr/share/elasticsearch/data"
- "./es/plugins:/usr/share/elasticsearch/plugins"
restart: always
networks:
- new
redis:
image: redis
container_name: redis
ports:
- "6379:6379"
volumes:
- "./redis/conf:/usr/local/etc/redis"
- "./redis/data:/tmp"
networks:
- new
restart: always
entrypoint: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
volumes:
- "./nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/etc/nginx/html"
restart: always
networks:
- new
networks:
new:
name: tjxt
- 0
- 0
- 0
- 0
- 0
- 0