Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS s3 cp无法从gitlab版本中找到文件?_Amazon Web Services_Amazon S3_Continuous Integration_Gitlab_Devops - Fatal编程技术网

Amazon web services AWS s3 cp无法从gitlab版本中找到文件?

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项目,我必须将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
  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