白筱汐

想都是问题,做都是答案

0%

使用 Jenkins 构建前端应用

介绍

Jenkins 是一个开源的自动化服务器,广泛用于持续集成(CI)和持续交付(CD)的自动化流程。

本教程基于 docker 安装 Jenkins,需要掌握 docker 相关基础知识,且已经安装好 docker。

在 docker 上安装 Jenkins

  1. 打开终端,创建 bridge network

    1
    docker network create jenkins
  2. 为了在 Jenkins 节点内执行 Docker 命令,请使用以下 docker run 命令下载并运行 docker:dind Docker 镜像

    1
    docker run --name jenkins-docker --detach --privileged --network jenkins --network-alias docker --env DOCKER_TLS_CERTDIR=/certs --volume jenkins-docker-certs:/certs/client --volume jenkins-data:/var/jenkins_home --publish 2376:2376 docker:dind --storage-driver overlay2
  3. 自定义官方 Jenkins docker 镜像,通过以下步骤

  • 创建一个 Dockerfile,加入下面的内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    FROM jenkins/jenkins:latest-jdk21
    USER root
    RUN apt-get update && apt-get install -y lsb-release ca-certificates curl && \
    install -m 0755 -d /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
    chmod a+r /etc/apt/keyrings/docker.asc && \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
    https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \
    | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt-get update && apt-get install -y docker-ce-cli && \
    apt-get clean && rm -rf /var/lib/apt/lists/*
    USER jenkins
    RUN jenkins-plugin-cli --plugins "blueocean docker-workflow json-path-api"
    我这里使用了最新的 jenkins/jenkins:latest-jdk21,你也可以使用其他版本,不过 jenkins 目前只支持 jdk17 和 jdk21。

如果这里镜像拉取失败,可以提前使用 docker pull 把需要的 jenkins/jenkins:latest-jdk21 拉取下来.

服务器上你可以使用阿里云的docker镜像加速,本地你可能需要科学上网了。

  • 使用 docker build 基于上面的 Dockerfile 创建一个镜像,名称为 myjenkins-blueocean
    1
    docker build -t myjenkins-blueocean .
  1. 使用下面的命令,将刚刚创建的 docker 镜像 myjenkins-blueocean 运行为容器
    1
    docker run --name jenkins-blueocean --restart=on-failure --detach --network jenkins --env DOCKER_HOST=tcp://docker:2376 --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 --publish 8080:8080 --publish 50000:50000 --volume jenkins-data:/var/jenkins_home --volume jenkins-docker-certs:/certs/client:ro myjenkins-blueocean

完成 Jenkins 基础配置

解锁 Jenkins

首次访问 http://localhost:8081/ 会出现一个需要解锁 Jenkins的页面,里面需要你输入管理员密码。

使用

1
docker logs jenkins-blueocean

查看运行日志,在两行*号之前有类似 7a3f82b6c4884ee19c8d6f48370a232c 这样的密码。

或者直接用命令提取

1
docker exec jenkins-blueocean cat /var/jenkins_home/secrets/initialAdminPassword

安装插件

作为新手,直接点击安装推荐的插件就行,然后等待它完成。

创建第一个管理员用户

需要创建一个管理员账户进行登录,需要账户、密码、邮箱,其他你可以不写。

创建完成直接保存,然后一直下一步,直到界面出现 欢迎来到 Jenkins!, 至此 Jenkins 基础配置就完成了。

配置前端项目

在 Jenkins 主页,点击 “新建Item”, 输入项目名称,选择 流水线(Pipeline) 类型。

点击配置,General 里面的 “This project is parameterized”, 给项目配置环境参数。

Choice Parameter 选项,配置变量名称 “BUILD_ENV”, 选项配置如下

1
2
3
development
testing
production

写上中文描述,”请选择打包环境”。

在下面找到 **流水线(Pipeline)**,选择 “Pipeline Script”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
pipeline {
agent {
docker {
image 'node:lts-buster-slim'
}
}

parameters {
choice(name: 'BUILD_ENV', choices: ['development', 'testing', 'production'], description: '请选择打包环境')
}

stages {
stage('Checkout') {
steps {
git 'https://github.com/你的代码仓库地址/simple-node-js-react-npm-app.git'
}
}
stage('Install') {
steps {
sh 'npm install'
}
}
stage('Build') {
steps {
script {
if (params.BUILD_ENV == 'development') {
sh 'npm run build:dev'
} else if (params.BUILD_ENV == 'testing') {
sh 'npm run build:test'
} else if (params.BUILD_ENV == 'production') {
sh 'npm run build:prod'
}
}
}
}
}
}

保存配置,找到之前配置的项目名称,如下图

Jenkins

选择对应的环境,点击 “Build”。

点击左下角构建历史,绿色表示构建成功,红色表示构建失败。点击最近一次构建的记录,然后点击 “Console Output”, 查看详情内容。

一般最后出现 “Finished: SUCCESS” 就是构建成功了。

构建的时候,Pipeline Script 通过 docker:bind (Docker in Docker) 安装了 node 环境,执行 npm install,最后选择对应的环境执行 npm run build:dev等。

至此,前端的项目就构建完成,接下来,需要把打包的项目传到 nginx 静态目录就可以了。