站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
DevOpsJenkins

【Note】Jenkins 概述

tags: DevOps

Common

  • 測試驅動開發(Test-driven development,TDD)
    • 單元測試、整合測試交由Jenkins定期執行
    • 自動部署
  • 持續整合 Continuous Intgration,CI
  • 持續發布 Continuous Delivery,CD
    • 舉例:

執行流程

  • SVN (SCM) → Jenkins → maven (Build Tool) → Tomcat

SVN

  • 撰寫的程式碼
    • java
  • 程式所需資源
    • jar
    • 設定檔, xml, pom
    • 圖片
    • javascript, html, css…
  • 專案結構的配置
    • 以不更動既有的資料夾為原則
    • 只新增pom
    • 缺點:一個結構底下只能存在一個專案
      • 需另外思考解決方案

Jenkins

  1. Manage Jenkins
    • Global Tool Configuration
      • JDK
      • Maven
    • Manage Plugins
      • Maven Integration plugin
      • Deploy to container Plugin
        • Jenkins自動部署配置
  2. Configure System → Jenkins Location
    • 更換port
  3. New Item
    • 構建一個maven項目
  4. Source Code Management 版控工具
    • Git
    • Subversion
  5. Build Triggers
    • 觸發時機
      • Build periodically 定時任務
      • Poll SCM 檢查程式碼是否變更
    • Schedule,例如:5分鐘 H/5 * * * *

maven

  • 撰寫 pom
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>  
  <modules>...</modules>
  <properties>...</properties> 
 
  <!-- Build Settings -->
  <build>...</build>
  
  <!-- Environment Settings -->
  <repositories>...</repositories>
</project>
  • 使用local jar
    • deprecated
    • 官方建議:按照規則建置local repository
      • groupId: artifactId: version
      • 一個組織(group) 可能存在多個Project(atrifact)
    • 舉例:../javax/servlet/servlet-api/1.0/servlet-api-1.0.jar
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/servlet-api.jar</systemPath>
</dependency>
  • maven本地存放位置
    • local repository:.m2
      • maven的dependency暫存
    • workspace
  • 既有變數
    • 根目錄:${basedir}
      • deprecated
      • 改用${project.basedir}
  • build → plugins
    • build-helper-maven-plugin
      • sources 僅含class
    • maven-compiler-plugin
      • 編碼問題?
        • utf-8
        • MS950
    • maven-war-plugin
      • resource 其他資源
  • outputDirectory
    • 完成build的war檔輸出位置

Tomcat

  • 自動解開war檔
  • 自動deploy
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
    ...
</Host>

Result

  • Build Now

方向

  • pipeline、降低耦合度、減少系統相依性
  • 確保 CD 系統能夠被很快地複製
    • 不需要浪費時間建置環境

  • Selenium 網站自動化測試

延伸閱讀

Reference 參考資料

  1. [自動建置實戰]Jenkins+Github+Docker
  2. https://www.appcoda.com.tw/continuous-delivery/
  3. [ DevOps ] Jenkins 基本設定及 Pipeline 腳本教學
  4. jenkins入門
  5. https://www.techgrow.cn/posts/bd0f3a17.html

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽