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 的日志


相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
80 0
|
3月前
|
SQL 搜索推荐 数据管理
离线集成整库迁移再升级,定制化与灵活性全面增强
为了更好地满足客户对于数据库迁移过程中的个性化管理和操作需求,我们最新版本对“离线集成整库迁移”功能进行了更新,旨在解决客户在实际应用中遇到的痛点,进一步提升迁移任务的可管理性和便捷性。
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
224 0
|
4月前
|
安全 jenkins 持续交付
jenkins学习笔记之八:jenkins认证集成gitlab
jenkins学习笔记之八:jenkins认证集成gitlab
|
6月前
|
jenkins Java 持续交付
蓝易云 - 从零开始配置Jenkins与GitLab集成:一步步实现持续集成
以上就是从零开始配置Jenkins与GitLab集成的步骤,希望对你有所帮助。
121 2
|
5月前
|
机器学习/深度学习 PyTorch TensorFlow
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
在深度学习中,数据增强是一种常用的技术,用于通过增加训练数据的多样性来提高模型的泛化能力。`albumentations`是一个强大的Python库,用于图像增强,支持多种图像变换操作,并且可以与深度学习框架(如PyTorch、TensorFlow等)无缝集成。
|
7月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
163 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
6月前
|
SQL DataWorks 安全
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之在进行测试数据集成时,目标库的数据是源库数据的3倍量,是什么导致的
|
5月前
|
安全 JavaScript
2. 集成 uni-ui 组件库
2. 集成 uni-ui 组件库
46 0