gitlab--集成 jfrog artifactory 制品库

简介: gitlab--集成 jfrog artifactory 制品库

介绍


官网: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 的日志


相关文章
|
3月前
|
存储 Go
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
本文将探讨几个热门的 go 日志库如 logrus、zap 和官网的 slog,我将分析这些库的的关键设计元素,探讨它们是如何支持日志轮转与切割功能的配置。
240 0
Go 浅析主流日志库:从设计层学习如何集成日志轮转与切割功能
|
1月前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
|
2月前
|
jenkins Java 持续交付
蓝易云 - 从零开始配置Jenkins与GitLab集成:一步步实现持续集成
以上就是从零开始配置Jenkins与GitLab集成的步骤,希望对你有所帮助。
68 2
|
2月前
|
SQL DataWorks 安全
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
|
1月前
|
安全 JavaScript
2. 集成 uni-ui 组件库
2. 集成 uni-ui 组件库
20 0
|
3月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
79 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
3月前
|
jenkins 持续交付 开发工具
gitlab远程库代码版本回滚方法
gitlab远程库代码版本回滚方法
142 1
|
3月前
|
运维 Kubernetes JavaScript
云效产品使用报错问题之gitlab库导入到云效失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
3月前
|
存储 持续交付 API
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
123 0
GitLab CI/CD简介:构建持续集成与持续交付的全方位指南
|
3月前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
53 0