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

gitlab--集成 jfrog artifactory 制品库

时间:2023-11-01 11:06:28浏览次数:41  
标签:jfrog CI NAME 制品 -- app gitlab artifact build

介绍

官网

之前我们使用制品库的时候,是使用 gitlab 里的制品:

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

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

gitlab--集成 jfrog artifactory 制品库_缓存

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

gitlab--集成 jfrog artifactory 制品库_缓存_02

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

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

创建仓库

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

gitlab--集成 jfrog artifactory 制品库_缓存_03

gitlab--集成 jfrog artifactory 制品库_缓存_04

gitlab--集成 jfrog artifactory 制品库_上传_05

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

gitlab--集成 jfrog artifactory 制品库_上传_06

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

gitlab--集成 jfrog artifactory 制品库_docker_07

上传制品

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

gitlab--集成 jfrog artifactory 制品库_上传_08

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 里定义了

gitlab--集成 jfrog artifactory 制品库_上传_09

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

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

gitlab--集成 jfrog artifactory 制品库_上传_10

查看日志

gitlab--集成 jfrog artifactory 制品库_上传_11

gitlab--集成 jfrog artifactory 制品库_docker_12

gitlab--集成 jfrog artifactory 制品库_上传_13

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

gitlab--集成 jfrog artifactory 制品库_docker_14

gitlab--集成 jfrog artifactory 制品库_缓存_15

下载制品

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

gitlab--集成 jfrog artifactory 制品库_缓存_16

更改 .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 的日志

gitlab--集成 jfrog artifactory 制品库_上传_17



标签:jfrog,CI,NAME,制品,--,app,gitlab,artifact,build
From: https://blog.51cto.com/busy/8119844

相关文章

  • Redis Bigkey排查
    在处理bigkey问题可以先从一下几点入手什么是bigkey?bigkey危害?bigkey是如何产生的?如何发现bigkey?如何处理bigkey?什么是BigkeyRedisbigkey是指在Redis数据库中占用空间较大的键值对。这些键通常包含了大量的数据,可能会影响Redis的性能和内存使用。例如,在一个集合......
  • 传统渠道DMS系统跟不上时代?是时候建立多级渠道运营系统了
    在当今的商业环境中,品牌企业的渠道网络日益完善,从传统的批发到深度分销,从深度分销到BC一体化运营,传统的渠道DMS系统面临着架构陈旧、系统互通、渠道管控、业务扩展等一系列的问题,建立一个多级渠道运营系统已经成为了一种必要的策略,也是品牌企业数智化转型中不可或缺的业务路径。然......
  • 查看linux操作系统版本:Ubuntu?Centos?还是其他?
    查看内核版本和操作系统版本:uname-a查看系统架构:uname-m查看系统主机名:hostname查看当前登录用户:whoami查看系统已安装的软件包列表:dpkg-l查看系统内存使用情况:free-h查看系统磁盘使用情况:df-h查看系统CPU使用情况:top查看系统网络连接状态:ifconfig查看系统已安装的软件包数量:a......
  • 留学挂科本科无法毕业的事怎么交代?跨本申硕有没有戏?
    留学挂科本科无法毕业的事怎么交代?跨本申硕有没有戏?新一轮的申请季又到了哈。硕士,开始申请了吗?毕业了吗?学位证拿到了吗?本科没学位的事情怎么交代,硕士怎么申请的事,开始琢磨了吗……刘同学出生在江浙沪包邮一带。这一带地区的很多孩子在未来的发展上面都会被家长考虑到“出国留学”这......
  • 怎么发送邮件?电子邮件发送入门指南之简单有效的邮件传送
    电子邮件,作为现代沟通的主要方式之一,对于个人和商业用途都至关重要。无论是与朋友分享生活点滴还是与客户进行业务沟通,了解如何发送邮件都是至关重要的。在本文中,我们将提供一个简单而有效的邮件发送指南,解释怎么发送邮件,并分享一些实用技巧。1.选择合适的电子邮件客户端怎么发送......
  • mysql数据库管理-FEDERATED存储引擎远程链接MYSQL
    开启FEDERATED存储引擎1.1、查看存储引擎存在的FEDERATED存储引擎就配置文件开启不存在就安装查看showengines;YES支持并开启DEFAULT支持并开启,并且为默认引擎;NO不支持;DISABLED支持,但未开启。创建federated引擎表创建语句最好和原表语句一样,当然去掉id的auto之类的。CREATE......
  • 【Azure K8S | AKS】在中国区AKS上遇见ImagePullBackOff时的替代方案
    Failedtopullimage"k8s.gcr.io/cluster-proportional-autoscaler-amd64:1.1.2-r2":rpcerror:code=Unknowndesc=Errorresponsefromdaemon:Gethttps://k8s.gcr.io/v2/:net/http:requestcanceledwhilewaitingforconnection(......
  • 【Azure Service Fabric】关于Service Fabric的相关问题
    问题一:ServiceFabric是否支持PrivateLink?在AzurePrivateEndpoint文档中,罗列出了Azure上支持PrivateLink的服务。ServiceFabric不在其中。AzurePrivateLinkavailability:https://learn.microsoft.com/en-us/azure/private-link/availability 问题二:是否可以Disable......
  • 【Azure App Service】为部署在App Service上的PHP应用开启JIT编译器
    问题描述在AppServiceforlinux上创建一个PHP应用,通过phpinfo()查看PHP的扩展设置,发现JIT没有被开启, jit_buffer_size大小为0.那么,在AppService的环境中,如何开启JIT呢? 问题解答PHP8在PHP的内核中添加了JIT编译器,可以极大地提高性能。首先,仅在启用opcache的情况下,JIT才有效......
  • spring注入bean错误-Bean named 'abc' is expected to be of type 'AAA' but was actu
    先看如下两个注入到spring容器中的bean,一个是UserNewManager,一个是UserManager。@ServicepublicclassUserNewManager{publicvoiddoSomething(){}}@ServicepublicclassUserManager{...}再看下面的testcase,利用@Resource注解来注入bean。@SpringB......