jfrog快速使用(一)

简介: jfrog快速使用

Doker安装

  1. 创建一个data目录用于数据持久化
mkdir data
chmod -R 777 ./data
  1. docker部署
docker run -it -d \
        --name artifactory \
        --restart always \
        -v $PWD/data/:/var/opt/jfrog/artifactory  \
        -p 18081:8081 \
        -p 18082:8082 \
        releases-docker.jfrog.io/jfrog/artifactory-oss:latest
  • 快速部署
docker pull docker.bintray.io/jfrog/artifactory-oss
docker  run -d -p 8081:8081 docker.bintray.io/jfrog/artifactory-oss
  1. 访问 http://localhost:18082/ui/
    默认账号:admin/password

测试

CURL测试

上传

# 如果v1.0不存在会自动创建
curl -X PUT -u 用户名:密码 -T app.jar jfrog地址:端口/artifactory/v1.0/
curl -u test:密码 -T el7upgradeSSHv8.5p1.tar.gz https://test.com:8081/artifactory/test/el7upgradeSSHv8.5p1.tar.gz
curl -X PUT -u ${JFROG_USER}:${JFROG_PWD} -T 1.txt "${ARTIFACTORY_URL}/temp/1.txt"
# deploy files with property
curl -X PUT -u ${JFROG_USER}:${JFROG_PWD} -T 1.sh "${ARTIFACTORY_URL}/temp/1.sh;retention.days=20;build_os=ubuntu-18.04;"

下载

wget --user test --password '密码' https://test.com:8082/artifactory/public-tools/anymatch-2.0.0.tgz
curl -u ${JFROG_USER}:${JFROG_PWD} -O ${ARTIFACTORY_URL}/temp/1.txt

copy 文件

curl -X POST -u ${JFROG_USER}:${JFROG_PWD} ${ARTIFACTORY_URL}/api/copy/temp/1.txt?to=temp/2.txt

删除

curl -X DELETE -u 用户名:密码 jfrog地址:端口/artifactory/v1.0/app.jar  #删除文件
curl -X DELETE -u 用户名:密码 jfrog地址:端口/artifactory/v1.0/ #删除目录
curl -X DELETE -u ${JFROG_USER}:${JFROG_PWD} ${ARTIFACTORY_URL}/temp/1.txt

支持删除整个目录

获取files list

curl -u ${JFROG_USER}:${JFROG_PWD} -X POST ${ARTIFACTORY_URL}/api/search/aql -H 'Content-Type: text/plain' -d \
    "items.find({ \
        \"type\" : \"file\", \
        \"repo\" : {\"\$eq\" : \"${atf_repo}\"}, \
        \"path\":{\"\$match\":\"${atf_path}*\"} \
        }).include(\"name\",\"repo\",\"path\",\"actual_md5\",\"type\")" | tee "${tmp_file}"

获取多少天创建的files list

curl -u ${JFROG_USER}:${JFROG_PWD} -X POST ${ARTIFACTORY_URL}/api/search/aql -H 'Content-Type: text/plain' -d \
    "items.find({ \
        \"type\" : \"file\", \
        \"repo\" : {\"\$eq\" : \"${repo}\"}, \
        \"\$or\": [\
          {\
            \"\$and\": [\
              {\
                \"created\": { \"\$before\":\"${retention_days}d\" }\
              }\
            ]\
          }\
        ]\
        }).include(\"name\",\"repo\",\"path\",\"actual_md5\",\"type\")" \
    | jq '.results' \
    | jq '.[] |  "\(.repo)/\(.path)/\(.name)"' \
    | sed 's/"//g' \
    | sed "s#^#${ARTIFACTORY_URL}/#g"

java测试

参考

<dependency>
    <groupId>org.jfrog.artifactory.client</groupId>
    <artifactId>artifactory-java-client-services</artifactId>
    <version>RELEASE</version>
</dependency>
import org.jfrog.artifactory.client.Artifactory;
import org.jfrog.artifactory.client.ArtifactoryClientBuilder;
import org.jfrog.artifactory.client.model.File;
import org.jfrog.artifactory.client.model.RepoPath;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class JFrogConnectionTest {
    @Test
    public void test0() throws IOException {
        Artifactory artifactory = ArtifactoryClientBuilder.create()
                .setUrl("ArtifactoryUrl")
                .setUsername("username")
                .setPassword("password")
                .build();
        // 上传
        java.io.File file = new java.io.File("fileToUpload.txt");
        File result = artifactory.repository("RepoName").upload("path/to/newName.txt", file).doUpload();
        // 下载
        InputStream iStream = artifactory.repository("RepoName")
                .download("path/to/fileToDownload.txt")
                .doDownload();
    FileOutputStream fos = new FileOutputStream("b.txt");
    byte[] b = new byte[1024];
    int length;
    while((length= iStream.read(b)) > 0){
      fos.write(b,0,length);
    }
    iStream.close();
    fos.close();
        // 搜索
        List<RepoPath> searchItems = artifactory.searches()
                .repositories("RepoName", "RepoName2")
                .artifactsByName("prefixedWith*.txt")
                .doSearch();
        for (RepoPath searchItem : searchItems) {
            String repoKey = searchItem.getRepoKey();
            String itemPath = searchItem.getItemPath();
        }
        // 关闭Artifactory实例
        artifactory.close();
    }
}

上传应用

  1. 生成配置生成Artifactory仓库上传配置文件,选择仓库,点击‘Set Me Up’查看部署配置
相关文章
|
Kubernetes 关系型数据库 MySQL
制品库 Jfrog Artifactory 搭建私服
JFrog Artifactory 功能最强大的二进制制品仓库。在 Google、Apple、思科、甲骨文、华为、腾讯等众多世界500强公司中都有大规模使用,在二进制软件制品管理领域处于绝对领先地位。与其他服务不同,JJFrog Artifactory 在版本发行上分类较多且杂。
2498 0
制品库 Jfrog Artifactory 搭建私服
|
安全
Gitlab配置webhook报错:Urlis blocked: Requests to the local netwo..解决
Gitlab配置webhook报错:Urlis blocked: Requests to the local netwo..解决
1486 0
|
3月前
|
人工智能 Linux API
DeepCodex零门槛配置:Codex无缝对接DeepSeek大模型完整指南
在AI编程开发场景中,Codex作为经典的代码生成助手,原生模型选择有限,而DeepSeek系列大模型凭借强大的代码理解、生成与推理能力,成为开发者的优质选择。DeepCodex作为轻量桥接工具,能解决两者协议不兼容问题,实现Codex与DeepSeek的无缝对接,让AI编程助手自由切换模型,满足不同开发场景需求。本文从准备工作、DeepCodex部署、模型配置、功能验证到常见问题排查,提供零门槛全流程操作指南,覆盖Windows、macOS、Linux多平台,新手也能快速完成配置。
848 0
|
8月前
|
Ubuntu 安全 Java
Docker 拉取部署 OpenJDK 全指南:替代方案、实操步骤与最佳实践
本文详解Docker部署OpenJDK全流程:搭建环境、选择eclipse-temurin等替代镜像,避开已弃用的官方镜像,通过Dockerfile构建应用,配置JVM参数与容器资源限制,并提供最佳实践与问题排查方案,助力企业级Java应用高效、安全运行。
4646 2
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
1548 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
存储 JSON NoSQL
MongoDB入门-MongDB介绍和安装
MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
2311 1
|
JSON Java 数据库连接
IDEA的插件大总汇 (让你的工作效率大大提高!)
我是小假 期待与你的下一次相遇 ~
3994 5
|
Linux
Linux Crontab 查看定时任务启动没
【10月更文挑战第20天】在Linux系统中,crontab用于设置周期性执行的任务。查看当前用户的Crontab任务列表,使用`crontab -l`;查看所有用户任务,使用`sudo crontab -l`或指定用户`sudo crontab -u username -l`。
3066 5