Jenkins
使用Docker搭建
- 在docker中部署Jenkins
docker run \
-u root \ # 给容器指定用户
-d \ # 后台运行
--name jenkins \ # 容器名称
-p 8080:8080 \ # 容器web服务端口
-p 50000:50000 \ # Jenkins与节点通信端口
--restart=always \ # 总是重启容器,防止Jenkins重启失败
-v /home/jenkins:/var/jenkins_home \ # Jenkins数据目录
-v /var/run/docker.sock:/var/run/docker.sock \ # Jenkins操作Docker使用
jenkinsci/blueocean
-
访问8080端口,并按提示初始化,安装推荐插件
-
更新现有插件
系统管理 -> 插件管理 -> 可更新
全选,更新后重启Jenkins
-
安装必要的插件。
- Localization: Chinese (Simplified) // 中文UI支持
- Docker // 操作Docker的
- Docker Pipeline // 在Pipeline中使用Docker
- Generic Webhook Trigger // 响应代码仓库的WebHook
- NodeJS // 在Jenkins中使用NodeJS
- Publish Over SSH // 通过SSH发布(构建产物)
换源
系统管理 -> 插件管理 -> 高级 -> 升级站点
原:https://updates.jenkins.io/update-center.json
换:https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
有用的文章
使用 Generic Webhook Trigger 触发 Jenkins 多分支流水线自动化构建
jenkins自动化部署应用到k8s(7):docker安装的jenkins调用docker命令
示例 Jenkinsfile
pipeline {
agent any
triggers {
GenericTrigger(
genericVariables: [
[key: 'ref', value: '$.ref']
],
causeString: 'Triggered on $ref',
token: 'abc123',
printContributedVariables: true,
printPostContent: true,
silentResponse: false,
regexpFilterText: '$ref',
regexpFilterExpression: 'refs/heads/' + BRANCH_NAME
)
}
tools {
maven '3'
}
stages {
stage('构建') {
steps {
sh 'mvn install'
}
}
stage('部署') {
steps {
sh 'docker build -f Dockerfile.deploy -t eeas-backend .'
sh 'docker container rm -f EEASbackend'
sh 'docker run -d --name EEASbackend --restart=on-failure:3 -v /home/ceea/data:/data -p 9090:9090 eeas-backend'
}
}
stage('清理') {
steps {
sh 'docker image prune -f'
sh 'docker volume prune -f'
}
}
}
}
pipeline {
agent any
stages {
stage('构建') {
steps {
nodejs('16') {
sh 'npm config set registry https://registry.npmmirror.com'
sh 'npm config set disturl https://npmmirror.com/dist --location=global'
sh 'npm i --location=global pnpm'
sh 'pnpm install'
sh 'pnpm build'
}
}
}
}
}