我正在尝试从 Crashlytics Beta 迁移到 Firebase App Distribution。CircleCi 在中间。
CircleCi 中的构建失败,并显示以下错误:
- 出了什么问题:任务“:FiverrApp:appDistributionUploadRelease”的执行失败。服务凭证文件不存在。请检查服务凭证路径并重试
这是我在 build.gradle 中配置 serviceCredentialsFile 变量的方法:
release {
buildConfigField "boolean", "FORCE_LOGS", "true"
firebaseAppDistribution {
releaseNotes="Notes\n" + getCommitMessages()
groups="android-testers"
serviceCredentialsFile="/api-project-xxx-yyy.json"
}
}
Run Code Online (Sandbox Code Playgroud)
文件 api-project-xxx-yyy.json 与 build.gradle 文件位于同一文件夹中。我也试过:
serviceCredentialsFile="api-project-xxx-yyy.json"
serviceCredentialsFile='api-project-xxx-yyy.json'
Run Code Online (Sandbox Code Playgroud)
仍然没有运气......如果有人能帮助我,我将不胜感激。
- 解析配置文件时出错:yaml:第 22 行:未找到预期的密钥
- 在配置文件的部分中找不到名为
build
运行的作业。jobs:
我遇到了这些错误,但我对 yaml 真的很陌生,所以我无法真正找到它不起作用的原因。有任何想法吗?有人说它可能有额外的空格或其他东西,但我真的找不到它。
yaml 文件
defaults: &defaults:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run: npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
version: 2
jobs:
build:
docker:
- image: circleci/node:10.3.0
working_directory: ~/repo
steps:
<<: *defaults // << here
- run: npm run test
- run: npm run build
deploy:
docker:
- image: circleci/node:10.3.0
working_directory: ~/repo
steps:
<<: *defaults
- run:
name: Deploy …
Run Code Online (Sandbox Code Playgroud) 当前,rake db:schema:load
运行以在 CircleCI 上设置数据库。在从 using 迁移schema.rb
到 时structure.sql
,命令已更新为:rake db:structure:load
。
不幸的是,它似乎挂起并且没有返回:
$ bin/rake db:structure:load --trace
** Invoke db:structure:load (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:structure:load
WARNING: terminal is not fully functional
set_config
------------
(1 row)
(END)rake aborted!
Interrupt:
<STACK TRACE>
bin/rake:9:in `<main>'
Tasks: TOP => db:structure:load
Too long with no output (exceeded 10m0s)
Run Code Online (Sandbox Code Playgroud)
在 CircleCI 上发现其他人有同样的问题,但没有答案。
尝试使用capybara,selenium和chromedriver-helper运行测试时出现以下错误.使用相同版本的chromedriver,测试在Mac上本地运行良好.我已经尝试在我的spec_helper中显式设置远程调试端口,但显然这被忽略,因为chromedriver使用随机远程调试端口.
Selenium::WebDriver::Error::UnknownError:
unknown error: Devtools port number file contents <37329> were in an unexpected format
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.4.0-127-generic x86_64)
Run Code Online (Sandbox Code Playgroud) 摘自 CircleCI 配置文件:
deploy:
machine:
enabled: true
steps:
- run:
name: AWS EC2 deploy
command: |
ssh -o "StrictHostKeyChecking no" ubuntu@xxx.xxx.xxx.xxx "cd ~/circleci-aws; git pull; npm i; npm run build; pm2 restart build/server
Run Code Online (Sandbox Code Playgroud)
如何将命令分成多行?尝试了以下语法,但它只运行第一个命令:
deploy:
machine:
enabled: true
steps:
- run:
name: Deploy
command: |
ssh -o StrictHostKeyChecking=no ubuntu@xxx.xxx.xxx.xxx
cd ~/circleci-aws
git pull
npm i
npm run build
pm2 restart build/server
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个 Circleci 工作流程,该工作流程构建 java WAR 并将其上传到我的组织现有的 S3 工件存储桶存储库。首先,构建项目并将一些信息保存在文件中,并将 VERSION 放入 BASH_ENV 中:
export "VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $BASH_ENV
if [ $CIRCLE_BRANCH = "master" ]; then
ENVIRONMENT=production
elif [ $CIRCLE_BRANCH = "develop" ]; then
ENVIRONMENT=qa
elif [ $CIRCLE_BRANCH = "release-1.0" ]; then
ENVIRONMENT=staging
else
ENVIRONMENT=$CIRCLE_BRANCH
fi
echo "ENVIRONMENT=$ENVIRONMENT" >> project.info
if [ -z "$ENVIRONMENT" ]; then
echo No environment is set
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
然后,我尝试使用官方 S3 orb 上传工件:
steps:
- attach_workspace:
at: .
- run: source project.info
- …
Run Code Online (Sandbox Code Playgroud) CircleCI 有一个CIRCLE_BRANCH
环境变量,它告诉您 PR 本身的分支名称。
但我想要相反,我需要 PR 试图合并的分支名称。
我在安卓上使用react-native。一切都很好,直到我升级到最新版本(0.59.4)。
CircleCI 上的构建不断失败,并出现“Gradle 构建守护进程意外消失”错误。在本地运行良好。
我知道这是一个内存问题,并尝试了多种方法来设置 java opts 等。
environment:
_JAVA_OPTIONS: '-Xms512m -Xmx3g'
GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx3g -XX:+HeapDumpOnOutOfMemoryError"'
Run Code Online (Sandbox Code Playgroud)
还尝试过设置gradle.properties
。这些都不起作用。
对于我的项目,我正在尝试从 GitHub Packages 安装(而不是发布!)一个 npm 包。它托管在组织中的私有存储库上。我已经制作了一个个人访问令牌,具有从该 repo 和 org 读取所需的权限。所有这些都可以通过以下步骤在本地工作:
.npmrc
文件中设置注册表:registry=https://npm.pkg.github.com/OWNER
npm login --registry=https://npm.pkg.github.com
然后会提示:> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
Run Code Online (Sandbox Code Playgroud)
Username
是你的标准 github 用户名Token
是使用正确权限创建的个人访问令牌Email
可以是随机的填写完成后,一切正常,我可以安装该包,以及托管在普通 npm 注册表中的所有其他包。现在问题来了:我试图在 circleCI 上复制相同的内容,但它似乎并没有让我覆盖 npm 注册表。该项目在.npmrc
其所在的同一文件夹中包含一个文件package.json
。这是圆 ci conf 的一部分:
- run:
name: "Set NPM registry"
command: npm config set registry https://npm.pkg.github.com/OWNER
- run:
name: "Authenticate with GitHub package registry"
command: echo "//npm.pkg.github.com/:_authToken=${GITHUB_PACKAGES}" > web_ui/frontend/.npmrc
- …
Run Code Online (Sandbox Code Playgroud) 我在本地使用 CircleCI CLI 来测试我的.circleci/config.yml
. 它看起来是这样的:
version: 2.1
jobs:
test:
docker:
- image: circleci/node:4.8.2
steps:
- checkout
- run: echo 'test step'
workflows:
version: 2
workflow:
jobs:
- test
Run Code Online (Sandbox Code Playgroud)
此操作失败并出现以下错误:
* 无法在配置文件的部分中找到名为
build
运行的作业。jobs:
如果您希望运行工作流程,请检查您的配置是否包含名为“workflows:”的顶级密钥
CLI 文档中的“hello world”工作流程运行良好。
我在这里缺少什么?
circleci-2.0 ×10
circleci ×8
android ×2
database ×1
github ×1
postgresql ×1
react-native ×1
ruby ×1
ssh ×1
unix ×1
yaml ×1