跳到主要内容

Jenkins

使用Docker搭建

  1. 在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
  1. 访问8080端口,并按提示初始化,安装推荐插件

  2. 插件源更换

  3. 更新现有插件

系统管理 -> 插件管理 -> 可更新

全选,更新后重启Jenkins

  1. 安装必要的插件。

    1. Localization: Chinese (Simplified) // 中文UI支持
    2. Docker // 操作Docker的
    3. Docker Pipeline // 在Pipeline中使用Docker
    4. Generic Webhook Trigger // 响应代码仓库的WebHook
    5. NodeJS // 在Jenkins中使用NodeJS
    6. 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'
}
}
}
}
}