系统预配置
关闭防止跨站请求伪造
测试期间系统设置中临时关闭防止跨站请求伪造,否则容易出现登录超时无法新建任务
添加远程仓库配置
凭据
Jenkins job
freestyle Job
freestyle Job简介
- 需要在页面添加模块配置项与参数完成配置
- 每个Job仅能实现一个开发功能
- 无法将配置代码化,不利于Job配置迁移与版本控制
- 没有版本日志记录
- 逻辑简单
新建freestyle Job
检查后发现Shell脚本开头的#!/bin/bash
写成了#! /bin/bash
,中间包含空格后系统无法识别
检查发现if [ -s test.properties ]
写成了if [ -s test.properties]
,修正错误后再次构建
修正后的Shell脚本为
#!/bin/bash
# export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
# 打印环境变量
echo "[INFO] 打印环境变量"
echo "[INFO] 当前发布环境为 $deploy_env" >> test.properties
echo "[INFO] 构建版本为 $version " >> test.properties
echo "[INFO] 打印环境变量完成..."
# 检查test.properties
echo "[INFO] 检查test.properties"
if [ -s test.properties ]
then
cat test.properties
echo "[INFO] 检查完成..."
else
echo "[WARN] test.properties为空"
fi
echo "[INFO] 构建完成..."
pipeline job
pipeline job简介
- 所有代码包裹在pipeline{}内
- stages{}用来包含pipeline所有子层
- stage(管道名称){}每个子层可以执行一个任务,并不互相影响
- steps{}用来添加具体需要调用的模块语句
新建pipeline任务
编写pipeline 脚本
#!groovy
pipeline {
// agent 定义pipeline在何处运行,使用any、none或者Jenkins node主机名
agent {node {label 'master'}}
// 声明环境变量,environment 定义系统环境变量,可以应用于所有stages
// 定义局部环境变量则于steps平级即可
environment {
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
}
parameters {
// 声明可选参数
choice(
// 可选参数为两个,以空行分隔
choices: 'dev\nprod',
// 设置参数描述
description: '选择发布环境',
// 声明参数变量名
name: 'deploy_env'
)
// 声明文本参数,和默认值
string (name: 'version', defaultValue: '0.0.1',description: '构建版本号')
}
stages {
// 执行一个任务
stage("切换到测试版本仓库") {
// 添加具体需要调用的模块语句
steps {
// 关闭Git ssl安全认证
sh 'git config --system http.sslVerify false'
// 指定工作空间
dir ("${env.WORKSPACE}") {
// 指定分支和Jenkins凭据ID
git branch: 'master',
credentialsId: '52f4c34f-544c-4830-828d-6691d603b8e4',
url: 'http://home.fjy8018.top:8099/jenkins/test-repo.git'
}
}
}
stage("打印环境变量") {
steps {
dir ("${env.WORKSPACE}") {
sh """
echo "[INFO] 打印环境变量"
echo "[INFO] 当前发布环境为 $deploy_env" >> test.properties
echo "[INFO] 构建版本为 $version " >> test.properties
echo "[INFO] 打印环境变量完成..."
"""
}
}
}
stage("检查test.properties") {
steps {
dir ("${env.WORKSPACE}") {
sh """
echo "[INFO] 检查test.properties"
if [ -s test.properties ]
then
cat test.properties
echo "[INFO] 检查完成..."
else
echo "[WARN] test.properties为空"
fi
"""
echo "[INFO] 构建完成..."
}
}
}
}
}
其中credentialsId
来自用户的凭据唯一标识,可在凭据页面查看
写入Shell脚本
执行报错,error: could not lock config file /etc/gitconfig: ????
由于使用root用户执行同样命令不会报错,故猜测没有权限,修改语法为git config --global http.sslVerify false
即可
重新构建
freestyle shell Job
写入shell脚本如下
#!/bin/bash
user=`whoami`
if [ $user == 'deploy' ]; then
echo "成功,当前用户为 $user"
else
echo "失败,当前用户不是 $user"
fi
# 查看主机ip
ip addr
# 查看系统版本
cat /etc/system-release
# 查看内存状态
free -m
# 查看磁盘状态
df -h
# 将python安装位置赋值给变量
py_cmd=`which python`
# 查看python版本号
$py_cmd --version