1. 程式人生 > >Jenkins入門教程之--構建軟體專案

Jenkins入門教程之--構建軟體專案

Jenkins可以用於執行典型的構建伺服器工作,例如執行連續/官方/每晚構建,執行測試或執行一些重複的批處理任務。這在Jenkins被稱為“自由式軟體專案”。

設定專案

轉到Jenkins首頁,選擇“New Job”,然後選擇“Build a free-style software project”。此作業型別由以下元素組成:

可選SCM,如原始碼所在的CVS或Subversion。
可選觸發器來控制Jenkins將何時執行構建。
某種構建指令碼,執行構建(ant,maven,shell指令碼,批處理檔案等),真正的工作發生在哪裡
可選步驟從構建中收集資訊,例如歸檔工件和/或記錄javadoc和測試結果。
可選步驟以通知其他人/系統具有構建結果,例如傳送電子郵件,IM,更新問題跟蹤器等。

非原始碼控制專案的構建

有時需要構建一個專案只是為了演示目的或訪問SVN / CVS儲存庫不可用。通過選擇在“原始碼管理”下將專案配置為“無”,您將必須:

1.構建專案至少一次(它會失敗),但Jenkins將建立結構jenkins/workspace/PROJECTNAME/
2.將專案檔案複製到jenkins/workspace/PROJECTNAME/
3.再次構建並適當配置

Jenkins設定環境變數

當Jenkins作業執行時,它設定一些,您可以在shell指令碼,批處理命令,Ant指令碼或Maven POM中使用的環境變數。下表包含所有這些環境變數的列表。

環境變數 描述
BUILD_NUMBER 當前內部版本號,例如“153”
BUILD_ID 當前版本號,例如“2005-08-22_23-59-59”(YYYY-MM-DD_hh-mm-ss,自1.597版本起已失效)
BUILD_URL 可以找到此版本的結果的網址(例如http:// buildserver / jenkins / job / MyJobName / 666 /)
NODE_NAME 當前構建正在其上執行的節點的名稱。等於主節點的“主”。
BUILD_TAG jenkins字串 - $ {JOB_NAME} - $ {BUILD_NUMBER}
。方便放入資原始檔,jar檔案等,以方便識別
JENKINS_URL 設定為執行構建的Jenkins主機的URL。例如,此值由Jenkins CLI使用
EXECUTOR_NUMBER 標識執行此構建的當前執行程式(在同一機器的執行程式中)的唯一編號。這是在“build executor status”中看到的數字,除了數字從0開始,而不是1。
JAVA_HOME 如果作業配置為使用特定的JDK,則此變數將設定為指定JDK的JAVA_HOME。設定此變數時,PATH也會更新為$ JAVA_HOME / bin。
WORKSPACE 工作空間的絕對路徑。
SVN_REVISION 對於基於Subversion的專案,此變數包含模組的版本號。如果指定了多個模組,則不會設定。
CVS_BRANCH 對於基於CVS的專案,此變數包含模組的分支。如果CVS配置為檢出中繼線,則不會設定此環境變數。
GIT_COMMIT 對於基於Git的專案,這個變數包含提交檢出的Git雜湊的建立(像ce9a3c1404e8c91be604088670e93434c4253f03)(所有的GIT_ *變數需要git外掛)
GIT_URL 對於基於Git的專案,此變數包含Git url(如[email protected]:user / repo.git或[https://github.com/user/repo.git]
GIT_BRANCH 對於基於Git的專案,此變數包含檢出的構建(通常是origin / master)的Git分支,

推薦的構建外掛環境變數

如果您使用的是Promoted Build Plugin,您將可以訪問以下環境變數。 這允許您訪問有關您的Jenkins構建的資訊,因為上述某些環境變數(例如BUILD_TAG現在引用了推薦構建外掛的作業。

環境變數 替換 描述
PROMOTED_URL BUILD_URL 促銷涉及的原始Jenkins作業的URL。 BUILD_URL現在是指宣傳活動的網址
PROMOTED_JOB_NAME JOB_NAME 涉及促銷的原始Jenkins作業的名稱。 JOB_NAME現在是指宣傳活動的工作名稱
PROMOTED_NUMBER PROMOTED_NUMBER 要升級的作業的構建號。 BUILD_NUMBER現在指的是促銷號碼
PROMOTED_ID BUILD_ID 原始Jenkins作業的構建ID(例如“2005-08-22_23-59-59”(YYYY-MM-DD_hh-mm-ss))。 BUILD_ID現在參考宣傳活動的版本ID。

Shell指令碼和Windows批處理命令

如果您使用shell指令碼來執行構建,那麼可以將這些環境變數直接放入shell指令碼中,或者將它們作為shell指令碼中的引數呼叫。下面是一個示例如何可以做到:

這裡寫圖片描述

如果您正在執行Windows批處理命令,則應使用%VARIABLE_NAME%模式引用變數。例如:

這裡寫圖片描述

Ant指令碼

如果您使用Ant指令碼來執行構建,則可以在屬性設定中包括環境變數。點選高階。 。 。按鈕就在你放置Ant目標的地方。這將顯示“屬性”框。下面是一個例子如何使用屬性框設定Ant屬性與Jenkins環境變數:

這裡寫圖片描述

或者,您可以使用Environmental字首,將所有環境變數作為屬性直接放入build.xml檔案中。下面是如何設定屬性“label”以包括專案名稱和構建號的示例:

<property environment="env"/>
<property name="label" value="${env.JOB_NAME}-${env.BUILD_NUMBER}"/>

配置自動構建

Jenkins中的構建可以定期(按照計劃,在配置中指定)或者在檢測到專案中的源更改時觸發,也可以通過請求URL自動觸發

http://YOURHOST/jenkins/job/PROJECTNAME/build

這允許您將Jenkins構建鉤入各種設定。有關更多資訊(特別是在啟用安全性的情況下),請參閱遠端訪問API

由源更改構建

您可以讓Jenkins輪詢您的版本控制系統以進行更改。您可以指定Jenkins使用與Unix / Linux上的crontab相同的語法輪詢版本控制系統的頻率。但是,如果您的輪詢期短於輪詢版本控制系統所需的時間,則每個更改可能會有多個構建。您應該將輪詢週期調整為長於輪詢版本控制系統所需的時間,或者使用提交後觸發器。您可以檢查每個構建的輪詢日誌,以檢視輪詢系統所需的時間。

或者,您可以使用URL觸發器(如上所述),而不是在URL結尾處使用/ polling而不是/build,而不是在固定時間間隔上輪詢。這使得Jenkins輪詢SCM的更改,而不是立即建立。這可以防止Jenkins執行一個沒有相關更改的構建,影響與作業無關的模組或分支。使用/輪詢時,作業必須配置為輪詢,但計劃可以為空。

在CVS中使用提交後觸發器

使用一些版本控制系統,如Subversion,輪詢非常快。 Subversion可以在幾秒鐘內輪詢您的專案,看看是否有任何更改。在某些版本控制系統(如CVS)中,輪詢可能需要相當長的時間。

在這種情況下,你應該使用一個post-commit鉤子觸發構建。在CVS中,您可以向$ CVSROOT / loginfo檔案新增後提交觸發器。要編輯此檔案,請簽出CVSROOT專案,編輯檔案,然後提交。不要直接編輯檔案。

loginfo檔案由兩個條目組成。第一個是儲存庫,第二個是後提交鉤子執行。如果將Jenkins專案命名為 - ,則可以使用以下shell指令碼觸發器:

#! /bin/bash
/usr/bin/sed -n '/^  *Tag:/s/.*: *//p' | while read branch
do
    #
    #  You need to set these
    #
    wgetCmd=/usr/bin/wget           #Location of wget command
    logName=/usr/home/cvs/log.txt   #Logfile name
    projectBase=jenkins             # First part of the Jenkins project name
    hudsonUrl="http://hudson:8080"  #URL to trigger Jenkins
    triggerString="BUILD"           #String to trigger builds

    hudsonJob="$cvsProject-$branch"

    #
    # Possible exceptions to Jenkins Name Rule
    #
    if [ "$branch" == "REL_1_0_2" ]
    then
        hudsonJob="$projectBase-DEV"
    fi

    $wgetCmd -q $hudsonUrl/job/$hudsonJob/build?token=$triggerString
    echo "$wgetCmd -q $hudsonUrl/job/$hudsonJob/build?token=$triggerString" >> $logName
    echo "---------------------------------------------------" >> $logName
done

通過電子郵件構建(sendmail)

如果你有你的系統的root帳戶,並且你正在使用sendmail,我發現最容易調整/ etc / aliases並新增以下條目:

jenkins-foo: "|/bin/wget -o /dev/null http://YOURHOST/jenkins/job/PROJECTNAME/build"

然後執行“newaliases”命令讓sendmail知道更改。每當有人向“jenkins-foo @ yoursystem”傳送電子郵件時,這將觸發新的構建。有關配置sendmail的更多詳細資訊,請參閱此

通過電子郵件建立(qmail)

使用qmail,您可以寫如下所示的/var/qmail/alias/.qmail-jenkins:

|/bin/wget -o /dev/null http://YOURHOST/jenkins/job/PROJECTNAME/build"

Maven要求您將引數作為構建目標的一部分。 Maven“目標”欄位的Jenkins配置示例:clean install -DBUILD_NUMBER = $ {BUILD_NUMBER}

相關推薦

Jenkins入門教程--構建軟體專案

Jenkins可以用於執行典型的構建伺服器工作,例如執行連續/官方/每晚構建,執行測試或執行一些重複的批處理任務。這在Jenkins被稱為“自由式軟體專案”。 設定專案 轉到Jenkins首頁,選擇“New Job”,然後選擇“Build

Jenkins入門教程自動構建部署專案常見錯誤及解決方案(十)jenkins構建maven專案一直打包失敗

此篇文章總結六筆者在使用jenkins過程中的一些坑和常見錯誤總結和解決方案,在這裡分享給大家,希望大家少走彎路。常見錯誤:1、在 Jenkins 中,使用 maven 打包報 package xxx does not exist 問題的解決方法錯誤資訊:解決方案:需要把ma

Jenkins入門教程linux下安裝配置jenkins(rpm方式)

一、jenkins安裝 Jenkins 是什麼?     Jenkins 是一個可擴充套件的持續整合引擎。 主要用於:     持續、自動地構建/測試軟體專案。      監控一些定時執行的任務。 Jenkins 擁有的特性包括:     易於安裝-只要把jen

Docker入門構建Springboot專案釋出在映象環境

在之前,簡單的講了一下docker環境的搭建,這裡就說一下docker的專案部署,如springboot專案如何執行在docker環境中 這裡其實主要就是在原有下載映象的基礎上進行重新構建。

jenkins使用教程系統設置

xxxxx repo emergency nal 失敗重試 target 屬性 xxx 接收 如果jenkins環境還沒有搭建好的話可以看這篇文章點擊查看 進入jenkins首頁,點擊系統管理 點擊系統設置,進入系統設置界面 1.主目錄,點擊高級 主目錄是存放J

Jenkins入門系列——01第一章 Jenkins是什麽?

source 每次 servlet容器 生命 .com .net 優點 指紋 順序 第一章 Jenkins是什麽? Jenkins 是一個可擴展的持續集成引擎。 主要用於: l 持續、自動地構建/測試軟件項目。 l 監控一些定時執行的任務。 Jenkins擁有

nodejs入門教程http的get和request簡介及應用

adding orm col luci string odi func cor mar nodejs入門教程之http的get和request簡介及應用 前言 上一篇文章,我介紹了nodejs的幾個常用的模塊及簡單的案例,今天我們再來重點看一下nodejs的http

MongoDB最簡單的入門教程五-通過Restful API訪問MongoDB

rest creat 操作 database internal 進行 作用 shu 公眾 通過前面四篇的學習,我們已經在本地安裝了一個MongoDB數據庫,並且通過一個簡單的Spring boot應用的單元測試,插入了幾條記錄到MongoDB中,並通過MongoDB Com

hadoop入門教程DKH安裝環境準備

hadoop入門教程之DKH安裝環境準備 前幾天去參加了一個線下的聚會,參加聚會的基本都是從事網際網路工作的。會上有人提到了區塊鏈,從而引發了一場關於大資料方面的探討。我也是從去年才正式接觸大資料,一直在學習hadoop。相信接觸過hadoop的人都知道,。單獨搭建hadoop裡每個組建都需

【OpenCV入門教程八】線性鄰域濾波專場:方框濾波、均值濾波與高斯濾波

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python+scrapy入門教程爬取騰訊招聘職位資訊

我是用的IDE是pycharm,要想使用scrapy我們先安裝模組file-settings-project Interpreter 安裝完成之後我們開啟Terminal 在終端輸入:scrapy startproject tencent 建立spiders我們需要進入spi

logback 入門教程系列-02-logback 專案模組 Logger,Appender 和 Layout

Logback的架構 Logback的基本架構足夠通用,以便在不同情況下應用。 目前,logback分為三個模組:logback-core,logback-classic和logback-access。 核心模組為其他兩個模組奠定了基礎。經典模組擴充套件了核心。經典模組對應於

Tensorflow入門教程手寫數字MINST識別

Tensorflow入門教程之手寫數字MINST識別 MNIST是在機器學習領域中的一個經典問題。該問題解決的是把28x28畫素的灰度手寫數字圖片識別為相應的數字,其中數字的範圍從0到9. MNIST 資料下載 Yann LeCun's MNIST page也提供了訓練集與測試集資料

Phalcon 入門教程安裝

Phalcon安裝 # 下載安裝包 wget https://github.com/phalcon/cphalcon/archive/v3.0.1.tar.gz # 重新命名 mv v3.0.1.tar.gz cphalcon-3.0.1.tar.gz

MongoDB最簡單的入門教程四:使用Spring Boot操作MongoDB

Spring Boot 是一個輕量級框架,可以完成基於 Spring 的應用程式的大部分配置工作。Spring Boot的目的是提供一組工具,以便快速構建容易配置的Spring應用程式,省去大量傳統Spring專案的繁瑣配置。 MongoDB是一個基於分散式檔

SpringCloud入門教程系統框架的演變(一)

小仙女又來啦,最近我在學習SpringCloud的入門,但是它的框架演變又是怎樣的呢?今天小仙女會一一的為大家解疑答惑滴!!! 好了,開始進入正題啦~~ 系統框架演變 1.簡介 1.1.集中式架構/單體應用 1.2.垂直拆分 1.3

SpringCloud入門教程Eureka註冊中心(二)

學習SpringCloud技術前提就是學習Eureka註冊服務中心,而Eureka註冊服務中心,它是什麼呢?今天小編就帶你一起了解一下吧!!! Eureka 1.認識Eureka 2.原理圖 3.入門案例 1.認識

PS入門教程字型的變形藝術

陰陽師中國古代對自然規律發展變化基礎因素的描述,是古代美學邏輯思維、推理分析的核心要素,也是描述萬物基本要素和成因的概念之一。陰陽代表事物的對立關係,它是自然界的客觀規律,是萬物運動變化的本源,是人類認識事物的基本法則。萬物皆有陰陽,不可割裂,陰陽相互依存。 筆畫是構成字型的基本元素,漢字筆畫設計融入了書寫

軟體研發成本估算過程估算軟體專案工期概述(轉載)

在工作量估算結束後可根據工作量,採用科學的方法進行軟體專案工期估算過程。在估算工期的過程中,需要注意的情況是: a) 類推法、類比法、方程法同樣適用於工期估算。 b) 工期估算的結果有可能導致重新估算工作量。比如,當工期估算結果長於期望工期時,壓縮工期會增加專案工作量。 c) 工

軟體研發成本估算過程估算軟體專案工作量概述(轉載)

在完成規模估算後,應當開展工作量估算工作,若當前專案未開展規模估算,也可直接啟動工作量估算工作。工作量估算時,可採用方程法、類比法和類推法。 方程法:即基於基準資料建立引數模型,通過輸入各項引數,確定估算值。 類比法:即將待估算專案的部分屬性與類似的一組基準資料進行比對,進而確定估算