一、提交代碼自動構建
當開發人員在gitlab提交代碼后,會自動觸發jenkin構建
點擊項目---->點擊diy_maven-TEST----->點擊配置--->構建觸發器---->根據需求選擇觸發器
1.1 安裝gitlab hook插件
系統管理----->選擇插件管理-------->查找gitlab-------->選擇直接安裝
安裝完成
1.2 配置gitlab倉庫
點擊項目---->點擊diy_maven-TEST----->點擊配置--->構建觸發器
發現沒有變化,需要重啟jenkins
點擊是,jenkins重啟
發現沒有,升級jenkins
關機
然后重新使用Java啟動war包就可以了
繼續安裝gitlab的其他插件嘗試
點擊項目---->點擊diy_maven-TEST----->點擊配置--->構建觸發器
保存這個地址
http://172.25.254.130:9000/project/diy-maven_TEST
1.3 gitlab設置
選擇倉庫設置setting
復制url到此處
1.4 點擊添加
gitlab 10.6 版本以后為了安全,不允許向本地網絡發送webhook請求,如果想向本地網絡發送webhook請求,則需要使用管理員帳號登錄,默認管理員帳號是admin@example.com,密碼就是你gitlab搭建好之后第一次輸入的密碼,登錄之后, 點擊Configure Gitlab ,如下圖所示
即可進入Admin area,在Admin area中,在settings標簽下面,找到OutBound Request,勾選上Allow requests to the local network from hooks and services ,保存更改即可解決問題
成功
1.5 點擊測試test
得到200成功
驗證
控制台輸出
Started by GitLab push by tester admin Building remotely on slave1 in workspace /var/jenkins/workspace/diy-maven_TEST No credentials specified > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url http://172.25.254.131/tester/mvn-test01.git # timeout=10 Fetching upstream changes from http://172.25.254.131/tester/mvn-test01.git > git --version # timeout=10 > git fetch --tags --progress http://172.25.254.131/tester/mvn-test01.git +refs/heads/*:refs/remotes/origin/* skipping resolution of commit remotes/origin/master, since it originates from another repository > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 026cbb9df8efcfc15ff98a27f0fa0c255716bc6a (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 026cbb9df8efcfc15ff98a27f0fa0c255716bc6a Commit message: "test" > git rev-list --no-walk 026cbb9df8efcfc15ff98a27f0fa0c255716bc6a # timeout=10 Parsing POMs Established TCP socket on 43253 maven35-agent.jar already up to date maven35-interceptor.jar already up to date maven3-interceptor-commons.jar already up to date [diy-maven_TEST] $ java -cp /var/jenkins/maven35-agent.jar:/usr/local/maven/apache-maven-3.6.1/boot/plexus-classworlds-2.6.0.jar:/usr/local/maven/apache-maven-3.6.1/conf/logging jenkins.maven3.agent.Maven35Main /usr/local/maven/apache-maven-3.6.1 /usr/local/jenkins-slave/agent.jar /var/jenkins/maven35-interceptor.jar /var/jenkins/maven3-interceptor-commons.jar 43253 <===[JENKINS REMOTING CAPACITY]===>channel started Executing Maven: -B -f /var/jenkins/workspace/diy-maven_TEST/pom.xml clean install [INFO] Scanning for projects... [INFO] [INFO] ---------------------< com.example.app:maven-app >---------------------- [INFO] Building maven-app 1.3-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-app --- [INFO] Deleting /var/jenkins/workspace/diy-maven_TEST/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-app --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/jenkins/workspace/diy-maven_TEST/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-app --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 1 source file to /var/jenkins/workspace/diy-maven_TEST/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-app --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/jenkins/workspace/diy-maven_TEST/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ maven-app --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 1 source file to /var/jenkins/workspace/diy-maven_TEST/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-app --- [INFO] Surefire report directory: /var/jenkins/workspace/diy-maven_TEST/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.example.app.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [JENKINS] Recording test results [WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.SurefireArchiver$2; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/ [WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.BuildInfoRecorder$1; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/ [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-app --- [INFO] Building jar: /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-app --- [INFO] Installing /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar to /root/.m2/repository/com/example/app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.jar [INFO] Installing /var/jenkins/workspace/diy-maven_TEST/pom.xml to /root/.m2/repository/com/example/app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12.960 s [INFO] Finished at: 2019-04-11T12:04:08+08:00 [INFO] ------------------------------------------------------------------------ Waiting for Jenkins to finish collecting data [JENKINS] Archiving /var/jenkins/workspace/diy-maven_TEST/pom.xml to com.example.app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.pom [JENKINS] Archiving /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar to com.example.app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.jar channel stopped Finished: SUCCESS
1.6 限制項目於寧節點
到gitlab驗證
1.7 提交代碼驗證
寫一些內容,提交
正在構建
1.8 控制台輸出
Started by GitLab push by tester admin Building remotely on slave1 in workspace /var/jenkins/workspace/diy-maven_TEST No credentials specified > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url http://172.25.254.131/tester/mvn-test01.git # timeout=10 Fetching upstream changes from http://172.25.254.131/tester/mvn-test01.git > git --version # timeout=10 > git fetch --tags --progress http://172.25.254.131/tester/mvn-test01.git +refs/heads/*:refs/remotes/origin/* skipping resolution of commit remotes/origin/master, since it originates from another repository > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 6454cc57fd8252c2859ff8ebd5cf78d087bbdc0d (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 6454cc57fd8252c2859ff8ebd5cf78d087bbdc0d Commit message: "Add CHANGELOG" > git rev-list --no-walk 026cbb9df8efcfc15ff98a27f0fa0c255716bc6a # timeout=10 Parsing POMs Established TCP socket on 34682 maven35-agent.jar already up to date maven35-interceptor.jar already up to date maven3-interceptor-commons.jar already up to date [diy-maven_TEST] $ java -cp /var/jenkins/maven35-agent.jar:/usr/local/maven/apache-maven-3.6.1/boot/plexus-classworlds-2.6.0.jar:/usr/local/maven/apache-maven-3.6.1/conf/logging jenkins.maven3.agent.Maven35Main /usr/local/maven/apache-maven-3.6.1 /usr/local/jenkins-slave/agent.jar /var/jenkins/maven35-interceptor.jar /var/jenkins/maven3-interceptor-commons.jar 34682 <===[JENKINS REMOTING CAPACITY]===>channel started Executing Maven: -B -f /var/jenkins/workspace/diy-maven_TEST/pom.xml clean install [INFO] Scanning for projects... [INFO] [INFO] ---------------------< com.example.app:maven-app >---------------------- [INFO] Building maven-app 1.3-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ maven-app --- [INFO] Deleting /var/jenkins/workspace/diy-maven_TEST/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-app --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/jenkins/workspace/diy-maven_TEST/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-app --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 1 source file to /var/jenkins/workspace/diy-maven_TEST/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-app --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory /var/jenkins/workspace/diy-maven_TEST/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ maven-app --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent! [INFO] Compiling 1 source file to /var/jenkins/workspace/diy-maven_TEST/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ maven-app --- [INFO] Surefire report directory: /var/jenkins/workspace/diy-maven_TEST/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.example.app.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [JENKINS] Recording test results [WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.SurefireArchiver$2; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/ [WARNING] Attempt to (de-)serialize anonymous class hudson.maven.reporters.BuildInfoRecorder$1; see: https://jenkins.io/redirect/serialization-of-anonymous-classes/ [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ maven-app --- [INFO] Building jar: /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.4:install (default-install) @ maven-app --- [INFO] Installing /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar to /root/.m2/repository/com/example/app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.jar [INFO] Installing /var/jenkins/workspace/diy-maven_TEST/pom.xml to /root/.m2/repository/com/example/app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 10.700 s [INFO] Finished at: 2019-04-11T12:12:19+08:00 [INFO] ------------------------------------------------------------------------ Waiting for Jenkins to finish collecting data [JENKINS] Archiving /var/jenkins/workspace/diy-maven_TEST/pom.xml to com.example.app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.pom [JENKINS] Archiving /var/jenkins/workspace/diy-maven_TEST/target/maven-app-1.3-SNAPSHOT.jar to com.example.app/maven-app/1.3-SNAPSHOT/maven-app-1.3-SNAPSHOT.jar channel stopped Finished: SUCCESS
二 、 Jenkins-pipeline自動化配置
https://jenkins.io/doc/book/pipeline/
2.1 安裝pipeline插件
2.2 gitlab創建一個group
2.3 在group創建一個項目
NEW Project
2.4 Command line instructions
Git global setup git config --global user.name "tester admin" git config --global user.email "joy04007@gmail.com" Create a new repository git clone http://172.25.254.131/devops/jenkins.git cd jenkins touch README.md git add README.md git commit -m "add README" git push -u origin master Existing folder cd existing_folder git init git remote add origin http://172.25.254.131/devops/jenkins.git git add . git commit -m "Initial commit" git push -u origin master Existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin http://172.25.254.131/devops/jenkins.git git push -u origin --all git push -u origin --tags
2.5 新加一個文件提交
NEW File:java.jenkinsfile
2.6 jenkins創建任務
jenkins創建一個流水線項目,然后pipeline設置
node { def mvnHome stage('Preparation') { // for display purposes // Get some code from a GitHub repository git 'https://github.com/jglick/simple-maven-project-with-tests.git' // Get the Maven tool. // ** NOTE: This 'M3' Maven tool must be configured // ** in the global configuration. mvnHome = tool 'M3' } stage('Build') { // Run the maven build if (isUnix()) { sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean package" } else { bat(/"${mvnHome}\bin\mvn" -Dmaven.test.failure.ignore clean package/) } } stage('Results') { junit '**/target/surefire-reports/TEST-*.xml' archiveArtifacts 'target/*.jar' } }
2.7 添加一個key
2.8 點擊構建
Started by user unknown or anonymous Obtained jaja.jenkinsfile from git http://172.25.254.131/devops/jenkins.git Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /root/.jenkins/workspace/java_pipeline-Test [Pipeline] { [Pipeline] echo Hello World [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS
成功!!!
2.9 寫一個完整的pipeline
使用pipeline模板代碼
node { def mvnHome stage('Preparation') { // for display purposes // Get some code from a GitHub repository git 'https://github.com/jglick/simple-maven-project-with-tests.git' // Get the Maven tool. // ** NOTE: This 'M3' Maven tool must be configured // ** in the global configuration. mvnHome = tool 'M3' } stage('Build') { // Run the maven build if (isUnix()) { sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean package" } else { bat(/"${mvnHome}\bin\mvn" -Dmaven.test.failure.ignore clean package/) } } stage('Results') { junit '**/target/surefire-reports/TEST-*.xml' archiveArtifacts 'target/*.jar' } }
newfile
node { def mvnHome stage('Checkout') { // for display purposes println('checkcode') } stage('Build') { println('Build') } stage('Test') { println('test') } stage('Deploy'){ println('Deploy') } stage('CodeScan'){ println('code') } }
Jenkins在任務配置重新配置腳本路徑
點擊立即創建成功
輸出來信息
Started by user unknown or anonymous Obtained Jenkinsfile from git http://172.25.254.131/devops/jenkins.git Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /root/.jenkins/workspace/java_pipeline-Test [Pipeline] { [Pipeline] stage [Pipeline] { (Checkout) [Pipeline] echo checkcode [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build) [Pipeline] echo Build [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Test) [Pipeline] echo test [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Deploy) [Pipeline] echo Deploy [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (CodeScan) [Pipeline] echo code [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS