首页 > 其他分享 >gitlab--集成 jfrog artifactory 制品库

gitlab--集成 jfrog artifactory 制品库

时间:2023-08-14 15:44:06浏览次数:47  
标签:jfrog CI NAME 制品 -- app gitlab artifact build

介绍

官网:https://www.jfrogchina.com/artifactory/features/

之前我们使用制品库的时候,是使用 gitlab 里的制品:https://www.cnblogs.com/zouzou-busy/p/16485401.html

当制品多的时候,就不太适合了,我们可以使用一些专门用来上传制品库的来保存制品

安装 artifactory

使用 docker 安装

下载镜像

docker pull truecharts/artifactory-oss:7.41.13

启动镜像

docker run --name jfrog-oss -d -v data_artifactory:/var/opt/jfrog/artifactory -p 8081:8081 -p 8082:8082 -p 8046:8046 -p 8049:8049 -p 8070:8070 truecharts/artifactory-oss:7.41.13

启动完成之后,访问 8081 端口,看到下面页面则搭建成功

初始用户名和密码:admin/password

登录完成之后提示需要修改密码,我这里修改后的为:Zouzou123#

创建仓库

artifactory 搭建完成之后,接下来就要创建一个制品仓库

这样我们就创建好了一个仓库 devops,也可以查看到

我们可以点击 Set Me Up 可以看到上传制品和下载制品的命令。package Type 选择我们创建时候选择的 Generic

上传制品

上面我们已经创建好了一个 devops 的仓库,接下来我们来上传制品,我们的仓库目录如下

app 目录下有两个文件,我们将这两个文件打包,模拟是构建产生的文件,然后需要做成制品保留起来

在 .gitlab-ci.yml 文件里,写入下面的内容

default:
  tags:
    - build # 这里使用的是 shell 执行器,如果使用 docker 执行器,需要确保容器里有 curl 命令

variables: # 定义制品仓库的变量
  # 上传到制品库
  ARTIFACTORY_URL: "http://10.6.215.31:8081/artifactory" # 制品服务器地址
  ARTIFACTORY_NAME: "devops" # 制品仓库
  TARGET_FILE_PATH: "$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_PIPELINE_ID" # 上传到制品仓库的路径
  TARGET_ARTIFACT_NAME: "myapp.tar.gz" # 上传到制品仓库的名称,这里我和打包后的名称一样

  ARTIFACT_PATH : 'app.tar.gz'    # 需要上传的制品目录

stages:
  - build
  - upload_artifact



.deploy-artifact: # 模板,也可以单独抽出来放到其他文件里,使用 include 导入
  stage: deploy-artifact
  cache:
    key: build-app # 缓存 build 下的 app.tar.gz  文件
    paths:
      - app.tar.gz 
  script:
    - ls
    - echo "upload"
    - curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -T ${ARTIFACT_PATH} "$ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"

build:
  stage: build
  cache:
    key: build-app # 缓存 key
    paths:
      - app.tar.gz # 需要缓存的文件
  script:
    - echo "my is build"
    - tar -cvf app.tar.gz app/ # 这里模拟 app 目录是构建之类产生的目录,需要上传到制品库。然后缓存起来
    - ls


upload_artifact:
  stage: upload_artifact
  extends: .deploy-artifact

里面涉及几个变量

  • $CI_PROJECT_NAMESPACE:项目的 namespace
  • $CI_PROJECT_NAME :项目名称
  • $CI_COMMIT_REF_NAME:项目的分支名称
  • $CI_COMMIT_SHORT_SHA:commit 提交 id,短的
  • $CI_PIPELINE_ID:流水线的 id

还有制品仓库的账号和密码,这里我在 gitlabCI/CD 里定义了

运行流水线查看制品是否上传成功。是根据我们上面定义的 TARGET_FILE_PATH 生成的目录

  TARGET_FILE_PATH: "$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_PIPELINE_ID" # 上传到制品仓库的路径

查看日志

下载 myapp.tar.gz 文件,解压后可以看到是原来的文件

下载制品

可以在  jfrog artifactory 里看到下载的命令

更改 .gitlab-ci.yml 文件,加上下载制品的 job,如下

default:
  tags:
    - build # 这里使用的是 shell 执行器,如果使用 docker 执行器,需要确保容器里有 curl 命令

variables: # 定义制品仓库的变量
  # 上传到制品库
  ARTIFACTORY_URL: "http://10.6.215.31:8081/artifactory" # 制品服务器地址
  ARTIFACTORY_NAME: "devops" # 制品仓库
  TARGET_FILE_PATH: "$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_PIPELINE_ID" # 上传到制品仓库的路径
  TARGET_ARTIFACT_NAME: "myapp.tar.gz" # 上传到制品仓库的名称,这里我和打包后的名称一样

  ARTIFACT_PATH : 'app.tar.gz'    # 需要上传的制品目录

stages:
  - build
  - upload_artifact
  - download-artifact



.deploy-artifact: # 模板,也可以单独抽出来放到其他文件里,使用 include 导入
  stage: deploy-artifact
  cache:
    key: build-app # 缓存 build 下的 app.tar.gz  文件
    paths:
      - app.tar.gz 
  script:
    - ls
    - echo "upload"
    - curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -T ${ARTIFACT_PATH} "$ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"

.download-artifact: # 下载制品的模板
  stage: download-artifact
  script:
    - ls
    - curl -u${ARTIFACT_USER}:${ARTIFACT_PASSWD} -O "$ARTIFACTORY_URL/$ARTIFACTORY_NAME/$TARGET_FILE_PATH/$TARGET_ARTIFACT_NAME"
    - ls


build:
  stage: build
  cache:
    key: build-app # 缓存 key
    paths:
      - app.tar.gz # 需要缓存的文件
  script:
    - echo "my is build"
    - tar -cvf app.tar.gz app/ # 这里模拟 app 目录是构建之类产生的目录,需要上传到制品库。然后缓存起来
    - ls


upload_artifact: # 上传制品
  stage: upload_artifact
  extends: .deploy-artifact

download-artifact: # 下载制品
  stage: download-artifact
  extends: .download-artifact

查看 download-artifact 的日志

标签:jfrog,CI,NAME,制品,--,app,gitlab,artifact,build
From: https://www.cnblogs.com/zouzou-busy/p/16759180.html

相关文章

  • 无涯教程-Perl - scalar函数
    描述此函数强制EXPR的判断在标量context中进行,即使它通常在列表context中也可以使用。语法以下是此函数的简单语法-scalarEXPR返回值此函数返回标量。例以下是显示其基本用法的示例代码-#!/usr/bin/perl-w@a=(1,2,3,4);@b=(10,20,30,40);@c=(@a,@b)......
  • Nginx 基本原理与最小配置
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/front-end-tutorial>】或者公众号【AIShareLab】回复nginx也可获取。目录结构进入Nginx的主目录有如下文件夹client_body_tempconffastcgi_temphtmllogsproxy_tempsbinscgi_tempuwsgi_temp其中以_temp结......
  • 2018 年的第一次福利
    阅读文本大概需要1分钟。老读者都知道,我每月都会送给大家一些签名书籍,没别的原因,就是单纯的想给你们一些福利,想给大家一份最实惠的互动。18年的第一次送书来了,这些书都是我从图灵教育和博文视点的书库里精心挑选的,有些还是新上市的书籍,特别感谢图灵教育和博文视点出版社的赞助。......
  • 建筑电气火灾事故原因及预防策略
    未晓妃安科瑞电气股份有限公司上海嘉定201801摘要:当前,我国建筑电气火灾形势仍然严峻,为了明确建筑电气火灾事故的各类原因,获得具体、实用的事故预防对策,本文以事故案例为研究对象,主要分析了建筑电气火灾事故发生规律和不安全行为原因,具体通过不安全动作和不安全物态两个方面进行讨......
  • ​Python爬虫IP代理池的建立和使用
    写在前面建立Python爬虫IP代理池可以提高爬虫的稳定性和效率,可以有效避免IP被封锁或限制访问等问题。下面是建立Python爬虫IP代理池的详细步骤和代码实现:1.获取代理IP我们可以从一些代理IP网站上获取免费或付费的代理IP,或者自己租用代理IP服务。这里我们以站大爷代理为例,获取......
  • 今年双十一套路太流弊了!
    阅读本文大概需要2.3分钟。众所周知,一年一次的剁手节又到了。以往每年的双十一,各种复杂的优惠抢券规则,都是提升全民数学水平的一项关键运动,但对比下来,今年套路更强。起初我先是在朋友圈看到了某电商平台双十一的各种玩法,什么红包合伙人、瓜分20亿、要点赞之......
  • Luckysheet:一个纯前端的excel在线表格
    最近因为项目要求,需要在页面上添加一个在线编辑excel的功能,因此只能在网上找有没有直接用的插件,最后很幸运的是幸好找到了一个----luckysheet.   这个是从luckysheet官网上找的图片,先看下能用插件做那些效果。  这个是中文官网地址:https://mengshukeji.gitee......
  • 如何拥有个人域名邮箱
    对于邮箱我们常用的是QQ邮箱或者163邮箱。这在联系方式里面显得不够高大上,装逼不够满分。本文为了介绍如何搭建自己的域名邮箱,让装逼的光辉照亮互联网!前期准备开通腾讯企业邮箱服务自己的域名开通腾讯企业邮箱服务进入腾讯企业邮箱官网,点击注册。填写信息注册企业微信,这部分信息随......
  • 李沐动手学深度学习_环境搭建
    一、准备工作以下仅针对windows用户:1.先下载安装Anaconda:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/讲解视频链接如下:https://www.bilibili.com/video/BV1Z7411L7dy?p=1二、搭建书本所需的环境2.搭建CPU版本mxnet的运行环境:如果你的电脑没有GPU,那么只需要安装CPU......
  • 8.0 Python 使用进程与线程
    python进程与线程是并发编程的两种常见方式。进程是操作系统中的一个基本概念,表示程序在操作系统中的一次执行过程,拥有独立的地址空间、资源、优先级等属性。线程是进程中的一条执行路径,可以看做是轻量级的进程,与同一个进程中的其他线程共享相同的地址空间和资源。线程和进程都......