> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 制品 (Artifacts)

> 访问您的制品

要在快照设置期间使用制品，您需要在仓库配置过程中完成对这些制品的身份验证。

如果您需要存储用于制品身份验证的机密或凭据，可以将它们直接保存在机器的文件系统中 (例如写入文件，或通过导出环境变量) ，也可以使用 [Devin 的 Secret Manager](/zh/product-guides/secrets)。下面分别介绍 AWS、Azure 和 JFrog 的配置方式。

如果您的制品位于私有网络中，请参阅 [部署选项](/zh/enterprise/deployment/overview)。

<div id="devin-machine-setup">
  ## Devin 机器设置
</div>

要与制品库集成，你需要为 Devin 机器配置相应的凭证和工具。主要有两种方式可以完成此操作：

1. 使用 Devin 内置的 Terminal，在机器上直接安装和配置制品库工具。
2. 使用 **Setup Agent** 选项卡 (在进行仓库设置时，位于 Devin 的 Machine 视图中间列) ，让 Devin 协助完成设置。

<Frame caption="使用内置 Terminal 进行 Jfrog 仓库设置的示例">
  <img src="https://mintcdn.com/cognitionai/3GUHd_GCvClklCye/images/artifacts/Jfrog-repo-setup.png?fit=max&auto=format&n=3GUHd_GCvClklCye&q=85&s=a697a0f544fe7b8fe838b990deed0f31" alt="Example of using Jfrog Repo Setup" width="3534" height="1992" data-path="images/artifacts/Jfrog-repo-setup.png" />
</Frame>

<div id="jfrog-artifactory">
  ## JFrog Artifactory
</div>

### 步骤一：下载 CLI

```bash theme={null}
curl -fL https://getcli.jfrog.io | sh
sudo mv jfrog /usr/local/bin/
jfrog config add
jfrog rt config
```

<div id="step-2-download-artifact">
  ### 步骤 2：下载制品
</div>

```bash theme={null}
#!/bin/bash

# 为 Artifactory 实例和制品详情设置变量
ARTIFACTORY_URL="https://your-artifactory-instance.jfrog.io/artifactory"  # 修改为您的 Artifactory URL
REPO="my-repository"  # 替换为您的仓库名称
ARTIFACT_PATH="my-artifact/my-package/1.0.0/my-package-1.0.0.jar"  # 制品在 Artifactory 中的路径
OUTPUT_DIR="./downloads"  # 保存下载制品的目录

## 步骤 1:下载制品
echo "Downloading artifact $ARTIFACT_PATH from $ARTIFACTORY_URL"
jfrog rt dl "$REPO/$ARTIFACT_PATH" "$OUTPUT_DIR/"

## 步骤 2:检查下载是否成功
if [ $? -eq 0 ]; then
  echo "Artifact downloaded successfully to $OUTPUT_DIR/"
else
  echo "Failed to download the artifact."
  exit 1
fi
```

<div id="aws-code-artifact">
  ## AWS Code Artifact
</div>

### 步骤 1：下载 CLI

```bash theme={null}
#!/bin/bash

# 变量
ROLE_NAME="robot-artifact-iam-role"
POLICY_ARN="arn:aws:iam::aws:policy/AWSArtifactReadOnlyAccess"
KEY_PAIR_NAME="robot-artifact-key-pair"

# 步骤 1:为 AWS Artifact 创建 IAM 角色
echo "Creating IAM Role: $ROLE_NAME"
aws iam create-role \
  --role-name "$ROLE_NAME" \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Principal": {
          "Service": "artifact.amazonaws.com"
        }
      }
    ]
  }' > create_role_output.json

# 检查 IAM 角色是否创建成功
if [ $? -eq 0 ]; then
  echo "IAM Role $ROLE_NAME created successfully."
else
  echo "Failed to create IAM Role $ROLE_NAME."
  exit 1
fi

# 步骤 2:将策略附加到角色以访问 Artifact
echo "Attaching AWSArtifactReadOnlyAccess policy to IAM Role $ROLE_NAME"
aws iam attach-role-policy \
  --role-name "$ROLE_NAME" \
  --policy-arn "$POLICY_ARN"

if [ $? -eq 0 ]; then
  echo "Policy attached successfully."
else
  echo "Failed to attach policy."
  exit 1
fi

# 步骤 3:创建 IAM 访问密钥(用于编程访问)
echo "Creating Access Keys for IAM Role: $ROLE_NAME"
aws iam create-access-key \
  --user-name "$ROLE_NAME" \
  > access_keys_output.json

# 检查密钥是否已创建
if [ $? -eq 0 ]; then
  echo "Access keys created successfully."
  ACCESS_KEY_ID=$(jq -r '.AccessKey.AccessKeyId' access_keys_output.json)
  SECRET_ACCESS_KEY=$(jq -r '.AccessKey.SecretAccessKey' access_keys_output.json)

  echo "Access Key ID: $ACCESS_KEY_ID"
  echo "Secret Access Key: $SECRET_ACCESS_KEY"
else
  echo "Failed to create access keys."
  exit 1
fi

# 步骤 4:显示 IAM 角色和访问密钥信息
echo "IAM Role $ROLE_NAME has been created with the policy: $POLICY_ARN"
echo "Access Key ID: $ACCESS_KEY_ID"
echo "Secret Access Key: $SECRET_ACCESS_KEY"
```

<div id="step-2-download-artifact">
  ### 步骤 2：下载制品
</div>

```bash theme={null}
#!/bin/bash

# Variables
ARTIFACT_ID="example-artifact-id"  # 替换为实际的 Artifact ID
# Step 1: Get Artifact URL for downloading the report
echo "Fetching artifact download URL for Artifact ID: $ARTIFACT_ID"
DOWNLOAD_URL=$(aws artifact describe-artifact \
  --artifact-id "$ARTIFACT_ID" \
  --query "artifactDetails[0].downloadUrl" \
  --output text)
```

<div id="azure-artifacts">
  ## Azure Artifacts
</div>

<div id="step-1-downloading-cli">
  ### 第 1 步：下载 CLI
</div>

```bash theme={null}
# 安装 Microsoft 软件包存储库
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

# 更新软件包列表并安装 .NET SDK
sudo apt update
sudo apt install -y dotnet-sdk-8.0
dotnet tool install -g AzureArtifactsCredentialProvider
```

<div id="step-2-generating-a-pat">
  ### 步骤 2：生成 PAT
</div>

接下来，你需要生成一个个人访问令牌 (PAT，Personal Access Token) 。

1. 登录你的 [Azure DevOps 门户](https://dev.azure.com)。
2. 在右上角点击你的头像并选择 **Security (安全) **。
3. 在 **Personal Access Tokens (个人访问令牌) ** 部分，点击 **New Token (新建令牌) **。
4. 为令牌设置权限范围。你至少需要 **"Packaging (read)"** 权限范围才能访问 Azure Artifacts。
5. 将你的 PAT 安全保存好，因为之后将无法再次查看它。

<div id="step-3-configure-npmrc-file">
  ### 第 3 步：配置 .npmrc 文件
</div>

```bash theme={null}
echo "//pkgs.dev.azure.com/your-organization-name/_packaging/your-feed-name/npm/registry/:username=AzureDevOps" >> ~/.npmrc
echo "//pkgs.dev.azure.com/your-organization-name/_packaging/your-feed-name/npm/registry/:_password=$(echo -n your-PAT | base64)" >> ~/.npmrc
```

如果你使用 NuGet，需要以下内容：

```bash theme={null}
mkdir -p ~/.nuget
cat <<EOL > ~/.nuget/nuget.config
<configuration>
  <packageSources>
    <add key="Azure Artifacts" value="https://pkgs.dev.azure.com/your-organization-name/_packaging/your-feed-name/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <Azure_Artifacts>
      <add key="Username" value="AzureDevOps" />
      <add key="ClearTextPassword" value="your-PAT" />
    </Azure_Artifacts>
  </packageSourceCredentials>
</configuration>
EOL
```

如果你需要从 Azure 获取 Docker 制品：

```bash theme={null}
echo your-PAT | docker login https://your-organization-name.azurecr.io --username your-username --password-stdin
```

<Note>
  如需开始使用 Devin Enterprise，请联系我们的[企业销售团队](mailto:enterprise@cognition.ai)。
</Note>
