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 在版本发行上分类较多且杂。
1745 0
制品库 Jfrog Artifactory 搭建私服
|
缓存 算法 开发者
【Conan 入门问题】Conan 删除本地缓存后的解决方法
【Conan 入门问题】Conan 删除本地缓存后的解决方法
689 0
|
前端开发 数据安全/隐私保护
SonarQube的LDAP配置
SonarQube的ldap配置
2205 0
SonarQube的LDAP配置
|
Linux
阿里云官方yum源
阿里云官方yum源
73440 0
|
监控 Java 网络性能优化
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
本文介绍了 Kubernetes 中的容器工作内存(WorkingSet)概念,它用于表示容器内存的实时使用量,尤其是活跃内存。
57217 116
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
|
弹性计算 安全 API
HTTP 405 Method Not Allowed:解析与解决
本文详细解析了HTTP 405 &quot;Method Not Allowed&quot; 错误,包括其定义、常见原因、示例代码及解决方案。通过检查API文档、修改请求方法或更新服务器配置,可有效解决此错误,提升Web开发效率。
7454 2
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
1118 0
|
机器学习/深度学习 Kubernetes 监控
Jupyter 集群管理:大规模部署的最佳策略
【8月更文第29天】当涉及大规模部署 Jupyter 笔记本服务器时,组织通常需要考虑如何有效地管理这些资源,以便支持多用户、高可用性和高性能的需求。Jupyter 集群管理不仅关乎于提供一个稳定的开发环境,还涉及到安全性、可扩展性和资源优化等问题。
561 1
|
jenkins Java API
jenkins API实践
jenkins API实践
|
安全 Java Maven
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
295 2