Artifactory & GitLab CI持續整合實踐
GitLab CI
支援建立多個構建,並評估
每次程式碼提交是否透過
測
試
和以及對您產品的影響
。在構建過程中,會生成大量二進位制檔案,如果不能
正確的
大規模管理這些檔案,就會導致二進位制檔案
管理
混亂。為了克服這個問題,Artifactory
被無縫地整合到
GitLab
CI
構建過程中,以便
更好的
釋出和管理這些二進位制檔案
,
並
透過JFrog CLI, GitLab CI
快取、釋出您的依賴包
、
製品包
和構建資訊到Artifactory
。
這篇文章描述瞭如何將 GitLab CI 與 Artifactory 整合在一起,不僅可以解析和部署二進位制檔案,還可以從 Artifactory 的 功能 中 獲取更多幫助 。
將 Artifactory 與 GitLab CI 整合後,您可以儲存和檢視以下資訊:
· 構建資訊和釋出的模組
· 使用的依賴
· 環境變數
· 許可證摘要
· 連結到您的 Jira issue
· 構建之間的差異
一、 環境配置
· 安裝Gitlab Runner 並 配置Gitlab ( 此處不再贅述 )
· 準備一個示例專案
· 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 :
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
二、編寫 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 | 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
· J ob 中檢視構建輸出
· artifactory 中的 issue 資訊 ( 可點選 HAP-1007 連結至 Jira 地址 )
更多 精彩內容 請微信搜尋公眾號: jfrogchina
更多技術分享 可以關注 2 月 20 日線上課堂:《Artifactory & GitLab CI持續整合實踐》
課程介紹
現在隨著開源專案越來越多,大部分開發人員都會去引用大量第三方依賴,開源第三方元件的使用頻率大幅增加。引用第三方已經開發好的元件給我們所有開發者帶來極大的便利,減少了大量的重複性工作,提升了開發效率。但同時也給我們帶來了一些隱患,因為開源並不代表這個軟體是安全的,如何對引用第三方包進行安全管控是企業需要關注的問題
課程收益
本次課程主要介紹JFrog Xray如何解決第三方元件的安全問題。
本期話題
1. 第三方元件的介紹
2. Xray介紹
3. Xray使用場景及實踐
課堂活動
本期課堂講師會在結束前進行抽獎活動
第一名:小米藍芽耳機
第二名:JFrog 新版 T 恤
第三名:JFrog 新版 T 恤
報名連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2676254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GitLab CI持續整合 - .gitlab-ci.ymlGitlab
- GitLab CI持續整合-GitLab RunnerGitlab
- CI/CD 持續整合部署實踐
- 前端 docker + gitlab CI 的持續整合(三)前端DockerGitlab
- 前端 docker + gitlab CI 的持續整合(二)前端DockerGitlab
- 前端 docker + gitlab CI 的持續整合(一)前端DockerGitlab
- Gitlab CI持續整合 - GitLab Runner 安裝與註冊Gitlab
- 前端專案基於GitLab-CI的持續整合/持續部署(CI/CD)前端Gitlab
- 基於Gitlab-CI/CD Docker 持續整合 node 專案GitlabDocker
- 『中級篇』docker之CI/CD持續整合-gitlab安裝(70)DockerGitlab
- 持續整合Jenkins+GitlabJenkinsGitlab
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- CI 持續整合 - 阿里云云效阿里
- GitLab 持續整合在 Laravel 商用專案中的應用實踐GitlabLaravel
- Flutter web 持續整合實踐FlutterWeb
- Gitlab Runner實現NetCore自動化持續整合GitlabNetCore
- Jenkins持續整合 入門實踐Jenkins
- ET·ci —持續整合驗證平臺
- 「持續整合實踐系列」Jenkins 2.x 搭建CI需要掌握的硬核要點Jenkins
- Docker 整合 Jenkins Gitlab 實現 CI/CDDockerJenkinsGitlab
- 以 egg.js 為例的持續整合(CI)、持續部署(CD)JS
- 基於 GitLab CI 的前端工程CI/CD實踐Gitlab前端
- 京東到家的持續整合實踐之路
- Practice – iOS 專案持續整合實踐(一)iOS
- Practice - iOS 專案持續整合實踐(一)iOS
- Azure DevOps+Docker+Asp.NET Core 實現CI/CD(二.建立CI持續整合管道)devDockerASP.NET
- 如何利用Gitlab-ci持續部署到遠端機器?Gitlab
- gitlab和jenkins做持續整合構建教程GitlabJenkins
- docker環境下使用gitlab,gitlab-runner 為 NetCore 持續整合DockerGitlabNetCore
- 實踐分享!GitLab CI/CD 快速入門Gitlab
- 「持續整合實踐系列 」Jenkins 2.x 構建CI自動化流水線常見技巧Jenkins
- jenkins+gitlab+docker持續整合部署maven專案JenkinsGitlabDockerMaven
- jenkins+gitlab+nexus持續整合與部署學習JenkinsGitlab
- 容器環境持續整合優化,Drone CI 提速 500%優化
- 初創團隊持續整合的落地與實現(gitlab+python)GitlabPython
- .NetCore 配合 Gitlab CI&CD 實踐 - 開篇NetCoreGitlab
- Linux下配置Jenkins+gitlab持續整合構建流程LinuxJenkinsGitlab
- Jenkins與gitlab持續整合配置webhook報500錯誤JenkinsGitlabWebHook