Amazon web services AWS s3 cp无法从gitlab版本中找到文件?
我正在从事一个Gitlab CI项目,我必须将APK推送到我们的aws S3存储桶中,因为我已经在存储库的项目设置中指定了环境变量中的键,现在这里是我的Amazon web services AWS s3 cp无法从gitlab版本中找到文件?,amazon-web-services,amazon-s3,continuous-integration,gitlab,devops,Amazon Web Services,Amazon S3,Continuous Integration,Gitlab,Devops,我正在从事一个Gitlab CI项目,我必须将APK推送到我们的aws S3存储桶中,因为我已经在存储库的项目设置中指定了环境变量中的键,现在这里是我的Gitlab CI.yml文件: stages: - build - deploy variables: AWS_DEFAULT_REGION: us-east-2 # The region of our S3 bucket BUCKET_NAME: abc.bycket.info # bucket name
Gitlab CI.yml
文件:
stages:
- build
- deploy
variables:
AWS_DEFAULT_REGION: us-east-2 # The region of our S3 bucket
BUCKET_NAME: abc.bycket.info # bucket name
FILE_NAME: ConfuRefac.apk
assembleDebug:
stage: build
script:
- export ANDROID_HOME=/home/bitnami/android-sdk-linux
- export ANDROID_NDK_HOME=/opt/android-ndk
- export PATH=$PATH:/home/bitnami/android-sdk-linux/platform-tools/
- export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
- export PATH=/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin:$PATH
- chmod +x ./gradlew
- ./gradlew assembleDebug
- cd app/build/outputs/apk/debug
- mv app-debug.apk ${FILE_NAME}
artifacts:
paths:
- app/build/outputs/apk/debug/${FILE_NAME}
deploys3:
image: "python:latest" # We use python because there is a well-working AWS Sdk
stage: deploy
dependencies:
- assembleDebug
script:
- pip install awscli
- cd app/build/outputs/apk/debug/
- ls && pwd
- aws s3 cp ${FILE_NAME} s3://${BUCKET_NAME}/${FILE_NAME} --recursive
因此,当部署阶段开始启动时,它无法找到文件,即使在ls
中,您可以清楚地看到文件确实存在
采集期货=2.2.0;python_version==“2.7”(来自s3transfer=0.3.0->awscli)
使用缓存https://files.pythonhosted.org/packages/d8/a6/f46ae3f1da0cd4361c344888f59ec2f5785e69c872e175a748ef6071cdb5/futures-3.3.0-py2-none-any.whl
收集六个>=1.5(来自python dateutil=2.1->botocore==1.16.13->awscli)
使用缓存https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl
安装收集的软件包:urlib3、docutils、jmespath、six、python-dateutil、botocore、pyasn1、rsa、futures、s3transfer、PyYAML、colorama、awscli
已成功安装PyYAML-5.3.1 awscli-1.18.63 botocore-1.16.13 colorama-0.4.3 docutils-0.15.2 futures-3.3.0 jmespath-0.10.0 pyasn1-0.4.8 python-dateutil-2.8.1 rsa-3.4.2 s3transfer-0.3.3 six-1.14.0 urllib3-1.25.9
您使用的是pip版本8.1.1,但版本20.1.1可用。
您应该考虑通过“PIP安装升级PIP”命令进行升级。
$cd${PWD}/app/build/outputs/apk/debug/
$ls&pwd
孔子学院
/home/gitlab runner/builds/CeGhSYCJ/0/root/confu-android/app/build/outputs/apk/debug
$aws s3 cp${PWD}/${FILE_NAME}s3://${BUCKET_NAME}/${FILE_NAME}递归
警告:正在跳过文件/home/gitlab runner/builds/CeGhSYCJ/0/root/confu-android/app/build/outputs/apk/debug/ConfuRefac.apk/。文件不存在。
在脚本之后运行
00:00
上载失败作业的工件
00:01
错误:作业失败:退出状态1
正如我在评论中指出的,这个问题是因为--recursive
将${FILE\u NAME}视为一个目录,而不是文件
这当然是有道理的,因为不能递归地复制单个文件 我认为
--recursive
将${FILE\u NAME}视为一个目录,而不是文件。这当然是有道理的,因为你不能递归地复制一个文件。我看到文件末尾有一个尾随的/
(../ConfuRefac.apk/
),这可能是原因。如果您想使用文件的完整绝对路径以防万一,请尝试readlink-f ConfuRefac.apk
@Marcin是的,让我试试。@Marcin谢谢!你让我解决了这个愚蠢的滥杀案哈哈。你可以发布一个答案,我会批准的!没问题。提供了答案。谢谢
Collecting futures<4.0.0,>=2.2.0; python_version == "2.7" (from s3transfer<0.4.0,>=0.3.0->awscli)
Using cached https://files.pythonhosted.org/packages/d8/a6/f46ae3f1da0cd4361c344888f59ec2f5785e69c872e175a748ef6071cdb5/futures-3.3.0-py2-none-any.whl
Collecting six>=1.5 (from python-dateutil<3.0.0,>=2.1->botocore==1.16.13->awscli)
Using cached https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl
Installing collected packages: urllib3, docutils, jmespath, six, python-dateutil, botocore, pyasn1, rsa, futures, s3transfer, PyYAML, colorama, awscli
Successfully installed PyYAML-5.3.1 awscli-1.18.63 botocore-1.16.13 colorama-0.4.3 docutils-0.15.2 futures-3.3.0 jmespath-0.10.0 pyasn1-0.4.8 python-dateutil-2.8.1 rsa-3.4.2 s3transfer-0.3.3 six-1.14.0 urllib3-1.25.9
You are using pip version 8.1.1, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
$ cd ${PWD}/app/build/outputs/apk/debug/
$ ls && pwd
ConfuRefac.apk
/home/gitlab-runner/builds/CeGhSYCJ/0/root/confu-android/app/build/outputs/apk/debug
$ aws s3 cp ${PWD}/${FILE_NAME} s3://${BUCKET_NAME}/${FILE_NAME} --recursive
warning: Skipping file /home/gitlab-runner/builds/CeGhSYCJ/0/root/confu-android/app/build/outputs/apk/debug/ConfuRefac.apk/. File does not exist.
Running after_script
00:00
Uploading artifacts for failed job
00:01
ERROR: Job failed: exit status 1