0. 老男孩思想-老男孩名言警句
- 技术的提升仅是量的积累,思想的提升才是质的飞跃
- 成功绝非偶然,而是正确选择和持续努力后的必然
- 成功最有效的途径就是不断的和有经验的、成功的人学习
- 学习成功人士的思维和习惯,是成功的捷径
- 要做别人不敢做、做不到的事,才能从竞争者胜出
- 自己最不想改变的,往往是自己最需要改变的;要多接收、多学习他人的思维或习惯
- 找一个能让自己快速成长的企业,比多1-2千工资更重要
- 身份影响认知,气度主导格局,性格决定命运
- 超越自我,就是做自己不想做的事
- 永远不要试图改变一个人,只能去包容他
- 如果自己不能成为大佬,可以先成为大佬的赞美者
1. Jenkins通知
1.1 配置钉钉通知
1.1.1 安装dingtalk插件
- dingtalk插件:
dingding-notifications.hpi 链接: https://pan.baidu.com/s/1-uXzS44lywEpcOcI4Rzfww?pwd=7y2x 提取码: 7y2x
- 将插件复制到Jenkins插件目录下:
/var/lib/jenkins/plugins
- 重启Jenkins:
systemctl restart jenkins.service
1.1.2 钉钉添加机器人
1.1.3 Jenkins配置dingtalk通知
1.2 配置企业微信通知
- 企业微信插件:
qy-wechat-notification.jpi 链接: https://pan.baidu.com/s/1nPekUKoqtnre4lpKhehC_w?pwd=n9ht 提取码: n9ht
- 上传插件并重启Jenkins
1.2.1 企业微信添加机器人
- webhook:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dad28fdb-8209-4c8a-abad-47a2abaee105
1.2.2 Jenkins配置企业微信通知
- 测试
2. Jenkins分布式
- 主节点安装Jenkins服务
- 从节点安装jdk即可
2.1 添加node节点
2.2 使用子节点
3. Jenkins-pipline流水线
根据jenkins的⼯作框架,通过"代码的⽅式",将多个任务联合起来
- pipline代码结构:
3.1 简单案例
- pipline代码:
pipeline {
agent any
environment {
host="oldboylinux.com"
}
stages {
stage('1.Open') {
steps {
echo "open eyes $host"
}
}
stage('2.CloseAlarm') {
steps {
echo "close alarm $host"
}
}
stage('3.Go_to_sleep') {
steps {
echo "go-to-sleep $host"
}
}
}
}
3.2 实现docker-java项目
- Jenkins拉取Gitlab代码
- Jenkins调⽤Sonarqube/sonar scan 代码质量分析与编译
- docker build ,推送镜像到仓库
- Jenkins 调⽤部署删除旧的容器,启动新的容器.
- 企业微信,钉钉,发送上线结果
3.2.1 生成代码工具
3.2.2 编写Jenkinsfile文件
- 在代码目录下:
vim Jenkinsfile
pipeline {
agent any
stages {
stage('1.编译与扫描') {
// 拉取代码
steps {
sh ''' /app/tools/maven/bin/mvn clean package
'''
}
}
stage('2.docker build') {
steps {
sh '''
docker build -t harbor.oldboy.cn/oldboy/java:${GIT_COMMIT} .
docker login -uadmin -pLidao996 harbor.oldboy.cn
docker push harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
'''
}
}
stage('3.deploy') {
steps {
sh '''
ip_list=10.0.0.81
for pp in $ip_list
do
cnt=`ssh root@$pp docker ps -f "name=hello_*" -q |wc -l`
ssh root@$pp <<-EOF
if [ $cnt -gt 0 ];then
docker ps -f "name=hello_*" -q |xargs docker rm -f
fi
docker run -d --name hello_v1 -p 8080:8080 --restart always harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
EOF
done
'''
}
}
}
post {
success{
qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
}
failure{
qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
}
}
}
- 上传代码:
git add .
git commit -m "pipline"
git tag -a v2.0 -m "v2.0"
git push origine master
git push --tags
3.2.3 修改Jenkinsfile
$ cat Jenkinsfile
pipeline {
agent { label 'maven' }
stages {
stage('1.编译与扫描') {
// 拉取代码
steps {
sh ''' /app/tools/maven/bin/mvn clean package
'''
}
}
stage('2.docker build') {
steps {
sh '''
docker build -t harbor.oldboy.cn/oldboy/java:${GIT_COMMIT} .
docker login -uadmin -pLidao996 harbor.oldboy.cn
docker push harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
'''
}
}
stage('2.5 .确认是否部署') {
steps {
input '是否继续进行部署'
}
}
stage('3.deploy') {
steps {
sh '''
ip_list=10.0.0.81
for pp in $ip_list
do
cnt=`ssh root@$pp docker ps -f "name=hello_*" -q |wc -l`
ssh root@$pp <<-EOF
if [ $cnt -gt 0 ];then
docker ps -f "name=hello_*" -q |xargs docker rm -f
fi
docker run -d --name hello_v1 -p 8080:8080 --restart always harbor.oldboy.cn/oldboy/java:${GIT_COMMIT}
EOF
done
'''
}
}
}
post {
success{
qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
}
failure{
qyWechatNotification failNotify: true, webhookUrl: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=26eca4c2-af1a-4861-9e4e-d5088f828bdb'
}
}
}
4. 思维导图
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作