Artifactory & GitLab CI持续集成实践

GitLab CI支持创建多个构建,并评估每次代码提交是否通过测试和以及对您产品的影响。在构建过程中,会生成大量二进制文件,如果不能正确的大规模管理这些文件,就会导致二进制文件管理混乱。为了克服这个问题,Artifactory被无缝地集成到GitLab CI构建过程中,以便更好的发布和管理这些二进制文件,并通过JFrog CLI, GitLab CI缓存、发布您的依赖包、制品包和构建信息到Artifactory。

这篇文章描述了如何将 GitLab CI 与 Artifactory 集成在一起,不仅可以解析和部署二进制文件,还可以从 Artifactory 的 Build Integration 功能中获取更多帮助。

将 Artifactory 与 GitLab CI 集成后,您可以存储和查看以下信息:

  • 构建信息和发布的模块
  • 使用的依赖
  • 环境变量
  • 许可证摘要
  • 链接到您的 Jira issue
  • 构建之间的差异

一、 环境配置

  • 安装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

二、编写 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

  • Job中查看构建输出 

  • artifactory中的issue信息可点击 HAP-1007 链接至 Jira 地址

 

 

更多 精彩内容 请微信搜索公众号:jfrogchina

更多技术分享 可以关注 2  20 日在线课堂:《Artifactory & GitLab CI持续集成实践》

 

课程介绍

现在随着开源项目越来越多,大部分开发人员都会去引用大量第三方依赖,开源第三方组件的使用频率大幅增加。引用第三方已经开发好的组件给我们所有开发者带来极大的便利,减少了大量的重复性工作,提升了开发效率。但同时也给我们带来了一些隐患,因为开源并不代表这个软件是安全的,如何对引用第三方包进行安全管控是企业需要关注的问题

课程收益

本次课程主要介绍JFrog Xray如何解决第三方组件的安全问题。

本期话题

1. 第三方组件的介绍

2. Xray介绍

3. Xray使用场景及实践

课堂活动

本期课堂讲师会在结束前进行抽奖活动

第一名:小米蓝牙耳机

第二名:JFrog新版T恤

第三名:JFrog新版T恤

报名链接:https://www.bagevent.com/event/6370474

原文地址:https://www.cnblogs.com/JFrogjiewa/p/12332346.html

时间: 2024-10-21 22:23:29

Artifactory & GitLab CI持续集成实践的相关文章

简单搭建Gitlab CI持续集成环境

简单搭建Gitlab CI持续集成环境 简单介绍Gitlab CI的功能 从GitLab 8.X 开始,GitLab CI就已经集成在GitLab中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,开启Runner,即可进行持续集成.而且随着GitLab的升级,GitLab CI变得越来越强大. GitLab Runner 在没使用过Gitlab之前,我也有一个困惑,到底Gitlab Runner是什么东西.它的作用是什么?</br>GitLab Runne

GitLab CI持续集成配置方案

目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解知识 3. 搭建GitLab持续集成环境(NET版) 3.1 环境搭建 3.1.1 基础环境搭建 3.1.2 Git安装 3.1.3 NuGet安装 3.2 相关配置 3.2.1 Git环境变量配置 3.2.2 PowerShell调用测试 3.2.3 GitLab-Runner下载 3.3 Git

Gitlab CI 持续集成的完整实践

本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持续集成.总体架构如下: 执行过程: 开发提交代码后,自动触发gitlab-runner拉取executor镜像执行单元测试,单元测试代码中包含上传测试结果到x-utest测试平台: 单元测试通过后,gitlab-runner拉取sonar-scanner镜像执行静态代码分析,分析结果评论在commit中或保存于sonarqube: 静态代

Gitlab CI持续集成 - GitLab Runner 安装与注册

GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/runner/g

如何用 Gitlab 一键实现 CI 持续集成?

背景 在目前快节奏生活已经成为社会风潮的大背景下,越来越多的互联网公司为了其应用产品能更快的掌控风向脉搏,抢占市场红利,需要更快速的应用产品开发上线,在市场的反馈下,不断的迭代新功能.在此需求下,持续集成,持续部署,持续交付被越来愈多公司所推崇,DevOPS文化的兴起,一方面是实践打破运维与研发的堡垒之墙,另一方面也是敏捷开发过程中的必要产物. 提高软件开发效能,快速迭代.快速试错,以及根据自己开发团队特点,使用怎样的技术手段,才能是软件开发效能最高,更为快速敏捷,以及怎样才能满足产品能在最短周

基于Jenkins Pipeline的ASP.NET Core持续集成实践

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

基于Jenkins的开发测试全流程持续集成实践

今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容器编排,以及通过阿里云K8S服务进行高效的云上托管,希望对各位童鞋有一点用. 一.持续集成全流程介绍 今年一直在开发我司的一个核心业务系统,一个还未上线的产品开发阶段,其中后端采用ASP.NET Core + 一系列开源组件开发微服务并且部署在Linux Docker中,前端采用React + Fl

持续集成实践

持续集成实践(一)- 引子 本系列文章包含: [独孤九剑]持续集成实践(一)- 引子 [独孤九剑]持续集成实践(二)– MSBuild语法入门 [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub) 1.概念描述(了解的话直接跳到第2部分) 1.1.我的理解 持续集成(Continuous Integration),以自动化方式实现“从开发阶段性完毕到部署上线之前”这一阶段的工作.当然也可做到简单部署,复杂的要涉及到持续部署阶段. 1.2.理论

[独孤九剑]持续集成实践(一)- 引子

本系列文章包含: [独孤九剑]持续集成实践(一)- 引子 [独孤九剑]持续集成实践(二)– MSBuild语法入门 [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub) 1.概念描述(了解的话直接跳到第2部分) 1.1.我的理解 持续集成(Continuous Integration),以自动化方式实现“从开发阶段性完毕到部署上线之前”这一阶段的工作.当然也可做到简单部署,复杂的要涉及到持续部署阶段. 1.2.理论层面的描述 下面为摘抄各网站