Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建 #102

Open
reng99 opened this issue Aug 22, 2021 · 0 comments
Open

Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建 #102

reng99 opened this issue Aug 22, 2021 · 0 comments
Labels
blog a single blog

Comments

@reng99
Copy link
Owner

reng99 commented Aug 22, 2021

Jenkins 是什么?

Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

本博文将讲解自动构建的部分。

Jenkins 的安装可参考文章从零开始搭建JENKINS+GITHUB持续集成环境【多图】

讲解的内容包括:

  • 新建流水线

  • Jenkins 配置

  • Gitlab 配置

直接进入主题~

新建流水线

Dashboard -> 新建任务

create_a_pipeline.png

✅ 建议:任务名称填写与仓库名称一致,一一对应方便查找任务。

新建完成任务之后,会自动跳转到该任务的配置页面。

Jenkins 配置

这里的配置,去要做一下细分。

公共配置

系统配置

Dashboard -> 系统管理 -> 系统配置 -> Gitlab

gitlab_setting.png

  • Connection name 表示链接的名称,这里我填了 Gitlab ,后面要用到
  • Gitlab host URL 表示你 Gitlab 的域名链接
  • Credentials 凭证

全局工具配置

Dashboard -> 系统管理 -> 全局工具配置 - NodeJS

install_node.png

  • 别名这里起了 nodejs ,在后面写 Jenkinsfile 的时候会用到
  • 安装的版本当前的稳定版即可,文章发表时,NodeJS 的稳定版是 NodeJS 14.17.5

任务配置

如果按照正常操作,新建完成任务之后,会自动跳转到该操纵页面。当然,你还可以通过下面的操作进入:

Dashboard -> PipelineTask -> 配置

只需要留意下面的内容即可:

step_general.png

  • General 板块
    • 描述表明这个任务是干什么的,可有可无
    • GitLab Connection 选择我们在“系统配置”中设定好的选项

step_trigger.png

  • 构建触发器板块
    • 只要勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://localhost:8080/project/PipelineTask 即可

🀄️ 这里有两点后面需要用到(上面截图并非完整,自行体验):

  1. GitLab webhook URL
  2. Secret token (点击“高级” -> Generate 按钮生成)

step_pipeline_scm_choose.png

  • 流水线模块
    • 定义下拉框选择 Pipeline script from SCM ,因为我们是通过项目的 Jenkinsfile 进行构建的
    • SCM 选择 Git
    • Repository URL 填写项目的仓库地址,比如 https://gitlab.mydomain.com/apps/pipeline_task.git
    • Credentials 是凭证,你 GitLab 的账号密码

Gitlab 配置

Gitlab 上做一个关联,与 Jenkins 关联上,当仓库 push 操作的时候,Jenkins 上自动构建项目。

🀄️ PS:当然 push 操作只是其中一种情况,还可以打标签之类的

进入你仓库相应项目 -> Settings -> Integrations

gitlab_webhook.png

  • URL 对应上面 Jenkins 触发器上设定的 GitLab webhook URL
  • Secret Token 对应上面 Jenkins 触发器上生成的 Secret token

添加了 Webhook 之后可以进行测试,查看是否通了。

gitlab_test_push.png

如果测试通过,会出现 Hook executed successfully: HTTP 200 的提示。

在触发构建之前,我们在对应仓库根目录下写个简单的脚本 Jenkinsfile

pipeline {
    agent any
    
    tools { 
        nodejs "nodejs" 
    }
    
    stages {
        stage('Dependency') {
            steps {
                sh 'npm install'
            }
        }
        stage('Build') { 
            steps {
                sh 'npm run clean' 
                sh 'npm run build' 
            }
        }
    }
}

在项目每次进行 push 的时候,就会自动构建,构建的步骤按照 Jenkinsfile 设定的走。

【完】

@reng99 reng99 added the blog a single blog label Aug 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blog a single blog
Projects
None yet
Development

No branches or pull requests

1 participant