You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Device Farm中为Appium测试获取AWS CodeArtifact私有包

在AWS Device Farm中解决Appium测试访问CodeArtifact私有NPM包的问题

针对你遇到的三个核心问题,以下是具体的解决方案,无需sudo权限,可直接在Device Farm环境中执行:


核心思路

  1. 无sudo安装AWS CLI v2到用户本地目录
  2. 利用Device Farm实例的IAM角色自动获取凭证,无需手动配置密钥
  3. 通过AWS CLI生成CodeArtifact的npm登录命令并执行
  4. 修改测试配置,直接从CodeArtifact拉取私有包,替代手动tgz安装

步骤1:无sudo安装AWS CLI v2

在测试配置的install阶段添加以下命令,将CLI安装到用户主目录的.local/bin(该目录默认在PATH中):

# 下载AWS CLI v2压缩包
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# 静默解压到用户目录
unzip -q awscliv2.zip -d $HOME
# 无sudo安装到.local目录
$HOME/aws/install -i $HOME/.local/aws-cli -b $HOME/.local/bin
# 验证安装成功
aws --version

步骤2:配置CodeArtifact npm登录

在install阶段添加登录命令(替换占位符为你的实际信息):

# 生成并执行CodeArtifact npm登录命令
aws codeartifact login --tool npm --repository YOUR_REPO_NAME --domain YOUR_DOMAIN --domain-owner YOUR_ACCOUNT_ID --region YOUR_REGION

注意:需确保Device Farm测试项目关联的IAM角色拥有codeartifact:GetAuthorizationToken和codeartifact:ReadFromRepository权限,无需手动输入Access Key。

步骤3:修改测试配置文件

更新后的完整配置如下,替换手动安装tgz的逻辑为直接从CodeArtifact拉取依赖:

version: 0.1
android_test_host: amazon_linux_2
phases:
    install:
        commands:
            - devicefarm-cli use node 20
            - node --version
            - devicefarm-cli use appium 2
            - appium --version
            - export APPIUM_BASE_PATH=/wd/hub
            - cd $DEVICEFARM_TEST_PACKAGE_PATH
            # 无sudo安装AWS CLI v2
            - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
            - unzip -q awscliv2.zip -d $HOME
            - $HOME/aws/install -i $HOME/.local/aws-cli -b $HOME/.local/bin
            - aws --version
            # 登录CodeArtifact npm仓库
            - aws codeartifact login --tool npm --repository YOUR_REPO_NAME --domain YOUR_DOMAIN --domain-owner YOUR_ACCOUNT_ID --region YOUR_REGION
            # 安装所有依赖(包括私有包)
            - npm install

    pre_test:
        commands:
            - |-
                appium --base-path=$APPIUM_BASE_PATH --log-timestamp \
                  --log-no-colors --relaxed-security --default-capabilities \
                  "{\"appium:deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \
                  \"platformName\": \"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \
                  \"appium:app\": \"$DEVICEFARM_APP_PATH\", \
                  \"appium:udid\":\"$DEVICEFARM_DEVICE_UDID\", \
                  \"appium:platformVersion\": \"$DEVICEFARM_DEVICE_OS_VERSION\", \
                  \"appium:chromedriverExecutableDir\": \"$DEVICEFARM_CHROMEDRIVER_EXECUTABLE_DIR\", \
                  \"appium:automationName\": \"CustomDriver\"}" \
                  >> $DEVICEFARM_LOG_DIR/appium.log 2>&1 &

            - |-
                appium_initialization_time=0;
                until curl --silent --fail "http://0.0.0.0:4723${APPIUM_BASE_PATH}/status"; do
                  if [[ $appium_initialization_time -gt 30 ]]; then
                    echo "Appium did not start within 30 seconds. Exiting...";
                    exit 1;
                  fi;
                  appium_initialization_time=$((appium_initialization_time + 1));
                  echo "Waiting for Appium to start on port 4723...";
                  sleep 1;
                done;

    test:
        commands:
            - cd $DEVICEFARM_TEST_PACKAGE_PATH/node_modules/tests/tests
            # 直接从CodeArtifact安装私有包
            - npm install @your-scope/private-package --save
            - npm run remote:tests

    post_test:
        commands:
            - npm run generate-report
            - cp generated-report/index.html $DEVICEFARM_LOG_DIR

artifacts:
    - $DEVICEFARM_LOG_DIR

关键注意事项

  • 权限配置:必须确保Device Farm测试项目的IAM角色具备CodeArtifact的读取和授权令牌获取权限,否则登录会失败。
  • 依赖声明:在package.json中正确声明私有包的依赖(如"@your-scope/private-package": "^1.0.1"),npm install会自动从CodeArtifact拉取。
  • 避免手动tgz:手动上传tgz容易引发依赖树不完整、权限验证失败等问题,通过CodeArtifact直接拉取是更可靠的方案。

内容的提问来源于stack exchange,提问作者rafaelasguerra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:16:13