Artifactory & GitLab CI持續集成實踐

Artifactory & GitLab CI持續集成實踐
GitLab CI支持創建多個構建,並評估每次代碼提交是否通過測試和以及對您產品的影響。在構建過程中,會生成大量二進制文件,如果不能正確的大規模管理這些文件,就會導致二進制文件管理混亂。爲了克服這個問題,Artifactory被無縫地集成到GitLab CI構建過程中,以便更好的發佈和管理這些二進制文件,並通過JFrog CLI, GitLab CI緩存、發佈您的依賴包、製品包和構建信息到Artifactory。
這篇文章描述瞭如何將 GitLab CI 與 Artifactory 集成在一起,不僅可以解析和部署二進制文件,還可以從 Artifactory 的 Build Integration 功能中獲取更多幫助。
將 Artifactory 與 GitLab CI 集成後,您可以存儲和查看以下信息:
構建信息和發佈的模塊

  • 使用的依賴
  • 環境變量
  • 許可證摘要
  • 鏈接到您的 Jira issue
  • 構建之間的差異
    Artifactory & GitLab CI持續集成實踐

一、環境配置

  • 安裝Gitlab Runner並配置Gitlab (此處不再贅述)
  • 準備一個示例項目
    https://gitlab.com/guoyunzong/maven-example.git
  • Artifactory 中創建倉庫(2 local,1 remote,1 virtual):maven-dev-local、maven-pro-local、maven-remote、maven-virtual
  • 在項目目錄下編寫配置文件 (maven.conf)
    version: 1
    type: maven
    resolver:
    snapshotRepo: maven-virtual
    releaseRepo: maven-virtual
    serverID: Default-Server
    deployer:
    snapshotRepo: maven-virtual
    releaseRepo: maven-virtual
    serverID: Default-Server

在項目目錄下編寫配置文件 (jira-cli.conf)

version: 1
issues:
  serverID: Default-Server
  trackerName: JIRA
  regexp: (.+-[0-9]+)\s-\s(.+)
  keyGroupIndex: 1
  summaryGroupIndex: 2
  trackerUrl: http://my-jira.com/issues
  aggregate: true
  aggregationStatus: RELEASED
  • 在gitlab中配置artifactory的環境變量,Settings—CI/CD--Variables ,如:
    ARTIFACTORY_URL     http://192.168.230.32:8081/artifactory
    ARTIFACTORY_USER    admin
    ARTIFACTORY_PASS    password
    MAVEN_REPO_KEY      maven-virtual

    Artifactory & GitLab CI持續集成實踐

二、編寫 Gitlab CI 腳本並執行構建

* 在項目目錄下編寫腳本(.gitlab-ci.yml)
image: docker:git
services:
- docker:dind

stages:
- build

build:
  image: maven:3.5.4-jdk-8-alpine
  stage: build
  script:
    # Install
    - apk add git 

    # Set the M2_HOME environment variable 
    - export M2_HOME=/usr/share/maven

    # Download JFrog CLI
    - curl -fL https://getcli.jfrog.io | sh

    # Configure Artifactory instance with JFrog CLI
    - ./jfrog rt config --url=$ARTIFACTORY_URL --user=$ARTIFACTORY_USER --password=$ARTIFACTORY_PASS
    - ./jfrog rt c show

    # Mvn clean install
    - ./jfrog rt mvn "clean install" maven.conf --build-name=gitlabci-maven-artifactory --build-number=$CI_JOB_ID

    # Collect the environment variables 
    - ./jfrog rt bce gitlabci-maven-artifactory $CI_JOB_ID

    # Add jira issue
    - ./jfrog rt bag gitlabci-maven-artifactory $CI_JOB_ID --config jira-cli.conf

    # Add sonar(optional)
    - ./jfrog rt sp "maven-dev-local/org/jfrog/test/multi3/3.7-SNAPSHOT/*.war" "qulity.gate.sonarUrl=http://192.168.230.156:9000/dashboard/index/gitlabci-maven-artifactory"

    # Add properties(optional)
    - ./jfrog rt sp "maven-dev-local/org/jfrog/test/multi3/3.7-SNAPSHOT/*.war" "deploy.tool=ansible"
    - ./jfrog rt sp "maven-dev-local/org/jfrog/test/multi3/3.7-SNAPSHOT/*.war" "ip=127.0.0.1"

    # Pass the build information to Artifactory   
    - ./jfrog rt bp gitlabci-maven-artifactory $CI_JOB_ID

    # Promote 
    - ./jfrog rt bpr gitlabci-maven-artifactory $CI_JOB_ID maven-pro-local

    # Xray scan(optional)
    - ./jfrog rt bs gitlabci-maven-artifactory $CI_JOB_ID --fail=false

    # Download(optional)
    - ./jfrog rt dl maven-dev-local/org/jfrog/test/multi3/3.7-SNAPSHOT/multi3-3.7-20191213.050538-8.war all-my-frogs/

  when: manual
  • 提交代碼,輸入git commit message,格式如下 ****
    HAP-1007 - This is a sample issue

* 執行構建(可配置手動或自動執行)
CI/CD--Pipelines
Artifactory & GitLab CI持續集成實踐

* Job中查看構建輸出
Artifactory & GitLab CI持續集成實踐

* artifactory中的issue信息(可點擊 HAP-1007 鏈接至 Jira 地址)
Artifactory & GitLab CI持續集成實踐

更多 精彩內容 請微信搜索公衆號:jfrogchina
  更多技術分享 可以關注 2 月 20 日在線課堂:《Artifactory & GitLab CI持續集成實踐》

課程介紹
現在隨着開源項目越來越多,大部分開發人員都會去引用大量第三方依賴,開源第三方組件的使用頻率大幅增加。引用第三方已經開發好的組件給我們所有開發者帶來極大的便利,減少了大量的重複性工作,提升了開發效率。但同時也給我們帶來了一些隱患,因爲開源並不代表這個軟件是安全的,如何對引用第三方包進行安全管控是企業需要關注的問題

課程收益
本次課程主要介紹JFrog Xray如何解決第三方組件的安全問題。

本期話題

  1. 第三方組件的介紹
  2. Xray介紹
  3. Xray使用場景及實踐

課堂活動
本期課堂講師會在結束前進行抽獎活動
第一名:小米藍牙耳機
第二名:JFrog新版T恤
第三名:JFrog新版T恤

報名鏈接:https://www.bagevent.com/event/6370474

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章