1. 新建节点
- 点击左上角的【新建Item】创建新的jenkins
- 填写节点名称,并做相关配置
- 可以选择一个现有项目进行复制,可完全复制所选节点的配置内容
2. jenkins节点配置
进入节点,点击左侧的【配置】修改节点的配置内容
2.1. 通过脚本管理代码方式
以vue项目为例
2.1.1. discard old builds
配置构建记录清理策略,可根据需要进行配置
2.1.2. this project is parameterized
配置构建参数,供jenkins脚本使用,如版本号等
2.1.3. 流水线脚本
- 选择 pipeline script
- 脚本内容
脚本中git仓库、harbor仓库等切换为要使用的地址
pipeline {
agent any
environment {
PROJECT_NAME = '项目名称'
GIT_URL = 'git仓库地址'
GIT_BRANCH_NAME = '*/分支名称'
NPM_PROXY = 'NPM仓库地址'
DOCKER_FILE_DIR = './docker'
DOCKER_REGISTRY = "harbor仓库地址:端口号"
DOCKER_IMAGE_NAME = '镜像路径'
DOCKER_DEF_TAG = '默认版本号'
}
// 调用前面配置的参数
parameters {
string(name: 'IMAGE_TAGS',defaultValue: '',description: '自定义镜像标签')
}
stages {
stage('Checkout') {
steps{
// 从 GitLab 拉取分支代码
checkout([$class: 'GitSCM',
branches: [[name: env.GIT_BRANCH_NAME]],
userRemoteConfigs: [[url: env.GIT_URL,
credentialsId: 'jenins凭据标识']]])
}
}
stage('Check Tag') {
steps {
script {
// 获取当前构建的自定义tag
def imageTags = params.IMAGE_TAGS
echo "Self defined tag: ${imageTags}"
def gitTag = sh(script: 'git describe --tags --always', returnStdout: true).trim()
echo "git tag: ${gitTag}"
// 如果自定义参数不为空,则使用自定义参数作为版本号
// 如果 git tag 不为空,则使用 git tag 作为版本号
// 否则使用默认版本号
if (imageTags != '') {
echo "Building with self defined tag: ${imageTags}"
env.BUILD_TAG = params.IMAGE_TAGS
} else if (gutTag && !gutTag.isEmpty()) {
echo "Building with git tag: ${gitTag}"
env.BUILD_TAG = gitTag
} else {
echo "No tag specified, using default tag: latest"
env.BUILD_TAG = env.DOCKER_DEF_TAG
}
}
}
}
stage('Set NPM Registry') {
when {
expression { return env.BUILD_TAG != '' }
}
steps {
sh "nginx -v"
sh "npm config set registry ${env.NPM_PROXY}"
sh "npm config get registry"
}
}
stage('Install Dependencies') {
when {
expression { return env.BUILD_TAG != '' }
}
steps {
sh 'node -v'
sh 'npm install pnpm@8.6.10 -g'
sh 'chmod +x .npmrc package.json pnpm-lock.yaml'
sh 'pnpm install --no-frozen-lockfile'
}
}
stage('npm run build') {
when {
expression { return env.BUILD_TAG != '' }
}
steps {
sh 'pnpm run build'
}
}
stage('docker build & push') {
when {
expression { return env.BUILD_TAG != '' }
}
steps {
sh """
cp -rf dist ${DOCKER_FILE_DIR}/
cd ${DOCKER_FILE_DIR}
docker build -t ${DOCKER_IMAGE_NAME}:${env.BUILD_TAG} .
docker login -u harbor账号 -p harbor密码 harbor仓库地址:端口号
docker tag ${DOCKER_IMAGE_NAME}:${env.BUILD_TAG} ${DOCKER_REGISTRY}/${DOCKER_IMAGE_NAME}:${env.BUILD_TAG}
docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE_NAME}:${env.BUILD_TAG}
"""
}
}
}
}
2.2. 通过组件管理代码方式
以maven管理的后端项目为例
2.2.1. discard old builds
配置构建记录清理策略,可根据需要进行配置
2.2.2. 源码管理
添加源码管理组件,配置git仓库地址及获取代码的凭证
2.2.3. 构建触发器
构建触发器中勾选“Build whenever a SNAPSHOT dependency is built”
2.2.4. Pre Steps
选择“Add pre-build step”
2.2.5. Build
配置pom文件路径,填写如下内容
2.2.6. Post Steps
选择“Run regardless of build result”
并填写脚本
脚本内容
仓库地址等内容更换为实际值
#!/bin/bash
set -e
REGISTRY_URL=harbor仓库地址:端口号
USERNAME=harbor账号
PASSWORD=harbor密码
IMAGE_NAME=镜像名称
IMAGE_TAG=镜像标签
NEW_REGISTRY_URL=harbor仓库地址:端口号
NEW_IMAGE_REPO=镜像路径/镜像名称
NEW_IMAGE_TAG=版本号
echo "Login Docker registry..."
docker login --username="$USERNAME" --password-stdin "$REGISTRY_URL" <<< "$PASSWORD"
# 构建docker镜像
echo "Build Docker image..."
docker build -t "$IMAGE_NAME:$IMAGE_TAG" -f dockerfile路径/Dockerfile .
echo "Add Docker tag..."
docker tag "$IMAGE_NAME:$IMAGE_TAG" "$NEW_REGISTRY_URL/$NEW_IMAGE_REPO:$NEW_IMAGE_TAG"
echo "Push Docker image to bucket..."
docker push "$NEW_REGISTRY_URL/$NEW_IMAGE_REPO:$NEW_IMAGE_TAG"
echo "Finished"
3. 构建项目
3.1. 构建操作
点击节点页面,左侧的【Build ***】,进行构建
根据配置,可能需要填写参数后构建
页面左下方会展示构建状态
3.2. 查看构建日志
点击构建记录中的“√”或“×”图标,可以进入日志界面
日志页面