BitBucket Pipelines 未找到存档

问题描述 投票:0回答:1

我正在使用 Bitbucket Pipelines 构建一个 jar 文件并将其部署到 Spring Boot 服务器。

  1. 第一步是自动构建默认管道 jar 文件 (

    pow-wow-0.0.2-SNAPSHOT.jar
    ),它成功完成了。

  2. 第二步是自定义管道复制jar文件 (

    pow-wow-0.0.2-SNAPSHOT.jar
    ) 到 AWS S3 存储桶,但失败 因为它找不到构建的jar文件。

我有以下内容:

bitbucket-pipelines.yml

image: maven:3.9.0
pipelines:
  default:
    - parallel:
        - step:
            name: Build
            caches:
              - maven
            script:
              - echo 'Maven Build'
              - mvn clean install -Dmaven.test.skip
              - echo "$(date +%Y-%m-%d) $BITBUCKET_BUILD_NUMBER $BITBUCKET_COMMIT"
            artifacts:
              - target/pow-wow-0.0.2-SNAPSHOT.jar
              - appspec.yml
  custom:
    upload-and-deploy-to-uat:
        - step:
            name: Upload to UAT S3
            script:
              - echo "Upload to AWS S3 Bucket on UAT $(date +%Y-%m-%d) (powwow-$BITBUCKET_BUILD_NUMBER-$BITBUCKET_COMMIT)"
              - pipe: atlassian/aws-code-deploy:1.2.0
                variables:
                  AWS_ACCESS_KEY_ID: $UAT_AWS_ACC_KEY
                  AWS_SECRET_ACCESS_KEY: $UAT_AWS_SEC_ACC_KEY
                  AWS_DEFAULT_REGION: $UAT_AWS_DEFAULT_REGION
                  COMMAND: 'upload'
                  ZIP_FILE: 'target/pow-wow-0.0.2-SNAPSHOT.zip'
                  APPLICATION_NAME: 'pow-wow'
                  S3_BUCKET: ${UAT_S3_BUCKET}
                  VERSION_LABEL: "powwow-${BITBUCKET_BUILD_NUMBER}-${BITBUCKET_COMMIT}"
        - step:
            name: Deploy to the UAT Server
            script:
              - echo "Deploy with AWS CodeDeploy to UAT Application Server $(date +%Y-%m-%d) (powwow-$BITBUCKET_BUILD_NUMBER-$BITBUCKET_COMMIT)"
              - pipe: atlassian/aws-code-deploy:1.2.0
                variables:
                  AWS_ACCESS_KEY_ID: $UAT_AWS_ACC_KEY
                  AWS_SECRET_ACCESS_KEY: $UAT_AWS_SEC_ACC_KEY
                  AWS_DEFAULT_REGION: $UAT_AWS_DEFAULT_REGION
                  COMMAND: 'deploy'
                  APPLICATION_NAME: 'pow-wow'
                  DEPLOYMENT_GROUP: 'deployment-group'
                  IGNORE_APPLICATION_STOP_FAILURES: 'true'
                  FILE_EXISTS_BEHAVIOR: 'OVERWRITE'
                  WAIT: 'true'
                  S3_BUCKET: ${UAT_S3_BUCKET}
                  VERSION_LABEL: 'powwow-${BITBUCKET_BUILD_NUMBER}-${BITBUCKET_COMMIT}'

输出(有错误):

INFO: Uploading target/pow-wow-0.0.2-SNAPSHOT.zip to S3.
Traceback (most recent call last):
  File "/pipe.py", line 264, in <module>
    pipe.run()
  File "/pipe.py", line 254, in run
    self.upload_to_s3()
  File "/pipe.py", line 230, in upload_to_s3
    with open(self.get_variable('ZIP_FILE'), 'rb') as zip_file:
FileNotFoundError: [Errno 2] No such file or directory: 'target/pow-wow-0.0.2-SNAPSHOT.zip'

附注我也尝试将其命名为

.jar
,但出现了相同的错误。

ZIP_FILE: 'target/pow-wow-0.0.2-SNAPSHOT.jar'

appspec.yml

version: 0.0
os: linux
files:
  - source: target/pow-wow-0.0.2-SNAPSHOT.jar
    destination: /home/jboss/bitbucket/pow-wow/pow-wow
hooks:
  BeforeInstall:
    - location: scripts/powwow-deploy.sh
amazon-s3 bitbucket bitbucket-pipelines
1个回答
0
投票

错误是正确的,没有这样的文件。在您的管道定义中,您有

default
管道来创建文件。但工件仅保留在该管道运行中。由于您的上传位于自定义管道中,并且必须在不同的管道中运行,因此它们无法访问该文件。

要解决此问题,您需要将上传步骤设置为默认值,或者将构建步骤添加到自定义管道中。请注意,前者不能并行执行上传步骤(这对于当前设置来说没有意义,因为它是唯一的步骤),否则工件将不会出现在上传步骤中。

© www.soinside.com 2019 - 2024. All rights reserved.