查看“Jenkins”的源代码
←
Jenkins
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
Jenkins 是一个开源的、可扩展的自动化服务器,广泛用于[[CI CD|持续集成和持续交付]]的流水线中。 ===概述=== Jenkins 可以对版本控制系统中的代码实现自动化构建、测试和部署。 #编译代码:将代码编译成可执行文件或其他形式的交付物 #运行测试:执行单元测试、集成测试等 #打包部署:将构建好的软件打包成安装包,并完成部署 通过自动化执行重复性的任务,提高开发效率,减少人为错误,加速软件交付。 ===Inst=== 1. 系统要求 * 256 MB RAM * 1GB Space * Java 8 以上 2. Linux Debian <nowiki>wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' apt update apt install jenkins # 将创建一个 jenkins 用户来运行此服务</nowiki> * Daemon: /etc/init.d/jenkins * Config: /etc/default/jenkins * Log : /var/log/jenkins/jenkins.log * Passwd: /var/lib/jenkins/secrets/initialAdminPassword (admin) http://Jenkins_host:8080/ ===Manage=== ====节点==== Jenkins 运行的主机为 master 节点(名字一般不可修改)。 Dashboard -> Manage Jenkins -> [System Configuration]Nodes (Ver: 2.479.1) * Permanent Agent: 常驻代理节点,可以一直保持连接状态的节点,用来执行 CI/CD 任务,在 pipeline/state 中用 agent 指定。 * Dumb Slave: 每次构建任务开始时启动,任务结束后关闭 * Docker Slave: 基于 Docker 容器的节点,可以快速创建和销毁不同环境的节点 * Kubernetes Slave: 基于 Kubernetes 的节点,可以利用 k8s 的强大功能进行节点管理 ===Pipeline=== Jenkins Pipeline 是一种用于实现持续交付的工具插件,它提供了一种灵活的方式来定义和执行一系列的步骤,从构建、测试到部署。 # Agent: 指定 Pipeline 或 stage 运行的节点 # Stage: 流水线被划分为多个阶段,每个阶段代表一个特定的构建步骤,如构建、测试、部署等(可嵌套) # Step : 每个 stage 由多个 step 组成,step 是最小的执行单元,如运行 [[Shell基础|shell 脚本(Linux Shell)]]、执行 script 脚本(Jenkins script)等 ====parallel==== <small><nowiki>pipeline { agent any stages { stage('PARALLEL BUILD') { parallel { stage('BUILD A') { steps { sh 'mvn clean package -pl moduleA' } } stage('BUILD B') { steps { sh 'mvn clean package -pl moduleB' } } } } } }</nowiki></small> ====Sample==== <small><nowiki>pipeline { agent { label 'node_test' } options { timeout(time: 1, unit: 'HOURS') } parameters { string(name: 'GIT_URL', defaultValue: 'http://IP/XX.git', description: '--> git url <--') string(name: 'GIT_BRANCH', defaultValue: 'master', description: '--> code branch <--') string(name: 'autotest_GIT_URL', defaultValue: 'http://ip/XX_test.git', description: '-->autotes git url <--') } environment { GIT_TARGET_DIR_NAME="XX_V1.0.0" JAVA_HOME="" } stages{ stage('Git Code') { steps { sh ''' sleep 6.8 ''' } } stage('PARALLEL BUILD') { steps { sh ''' sleep 36.8 ''' } } stage('source-code-migration') { agent { label 'node_test' } steps { sh ''' rm -rf /home/test/report_dir/src-mig*.html ''' script{ def STATUS_CODE = sh(returnStatus: true, script: ''' devkit porting src-mig -i "/home/test/XX_V1.0.0" -s interpreted -r html -o /home/test/report_dir ''') switch(STATUS_CODE) { case 0: echo '【源码迁移】--> 无扫描建议 <--' break default: currentBuild.result = 'ABORTED' echo '【源码迁移】--> 异常终断开{Ctrl + C | Ctrl + Z} <--' break } } sh ''' html_file_name=$(find /home/test/report_dir -name src-mig*.html) if [[ ${html_file_name} ]]; then mv ${html_file_name} /home/test/htmlreports/SourceCodeScanningReport.html fi ''' } post { always { publishHTML(target: [allowMissing: false, alwaysLinkToLastBuild: false, keepAll : true, reportDir : '/home/test/htmlreports', reportFiles : 'SourceCodeScanningReport.html', reportName : 'Source Code Scanning Report'] ) } } } stage('BoostKit-Accelerate') { agent { label 'node_test' } steps { sh ''' rm -rf /home/test/report_dir/pkg-mig*.html ''' script{ def STATUS_CODE = sh(returnStatus: true, script: ''' cd /home/test && rm -rf *.tar.gz && ./collect_msg ''') sh ''' cd /home/test file_name=$(find ./ -name *.tar.gz) if [[ ${file_name} ]]; then mv ${file_name} /home/jenkins/workspace/TongRDS_2.2/report_dir/${file_name} fi ''' } } post { always { sh 'ls -l /home/test/report_dir' archiveArtifacts allowEmptyArchive: true, artifacts: 'report_dir/*.tar.gz', caseSensitive: false, defaultExcludes: false, followSymlinks: false } } } stage('software-migration-assessment') { agent { label 'node_test' } steps { sh ''' rm -rf /home/test/report_dir/pkg-mig*.html ''' script{ def STATUS_CODE = sh(returnStatus: true, script: ''' devkit porting pkg-mig -i "/home/test/XX_V1.0.0" -r html -o /home/test/report_dir ''') sh ''' html_file_name=$(find /home/test/report_dir -name pkg-mig*.html) if [[ ${html_file_name} ]]; then mv ${html_file_name} /home/test/htmlreports/SoftwareMigrationAssessment.html fi ''' switch(STATUS_CODE) { case 0: echo '【软件迁移评估】--> 无扫描建议 <--' break default: currentBuild.result = 'ABORTED' echo '【软件迁移评估】--> 异常终断开{Ctrl + C | Ctrl + Z} <--' break } } } post { always { publishHTML(target: [allowMissing: false, alwaysLinkToLastBuild: false, keepAll : true, reportDir : '/home/test/htmlreports', reportFiles : 'SoftwareMigrationAssessment.html', reportName : 'SoftwareMigrationAssessment Report'] ) } } } } }</nowiki></small> [[分类:Develop]] [[分类:Platform]]
返回
Jenkins
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息