无法在位桶管道中的 node.js 图像中执行 bash 脚本
Cannot execute bash script in node.js image in bitbucket pipelines
我正在为 React 应用程序的 CI/CD 使用标准 bitbucket 管道模板 - CRA。
我在 React App 中设置了 postbuild
步骤到 运行 简单的 bash 脚本,它只是改变构建文件夹中的文件结构。
在package.json中:
"postbuild": "postbuild.sh"
bitbucket-pipelines.yml:
# Template React Deploy
# This template allows you to deploy your React app to an AWS S3 bucket and invalidate the old AWS Cloudfront distribution.
# The workflow allows running tests, code linting and security scans on feature branches (as well as master).
# The react app will be validated, deployed to S3 and trigger an AWS Cloudfront distribution invalidation to refresh the CDN caches after the code is merged to master.
# Prerequisites: $AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY setup in the Deployment variables.
# For advanced cases, please, follow examples from the pipe's:
# README https://bitbucket.org/atlassian/aws-s3-deploy/src/master/README.md
# README https://bitbucket.org/atlassian/aws-cloudfront-invalidate/src/master/README.md
image: node:10.15.3
# Workflow Configuration
pipelines:
default:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
# CI=true in default variables for Bitbucket Pipelines https://support.atlassian.com/bitbucket-cloud/docs/variables-in-pipelines/
- npm test
- step:
name: Lint the node package
script:
# Run your linter of choice here
- npm install eslint
- npx eslint src
caches:
- node
branches:
master:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
# CI=true in default variables for Bitbucket Pipelines https://support.atlassian.com/bitbucket-cloud/docs/variables-in-pipelines/
- npm test
- chmod +x ./postbuild.sh
- npm run build
artifacts:
- build/**
- step:
name: Security Scan
script:
# Run a security scan for sensitive data.
# See more security tools at https://bitbucket.org/product/features/pipelines/integrations?&category=security
- pipe: atlassian/git-secrets-scan:0.4.3
- step:
name: Deploy to Production
deployment: Production
trigger: manual
clone:
enabled: false
script:
# sync your files to S3
- pipe: atlassian/aws-s3-deploy:0.4.4
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: 'my-bucket-name'
LOCAL_PATH: 'build'
# triggering a distribution invalidation to refresh the CDN caches
- pipe: atlassian/aws-cloudfront-invalidate:0.1.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
DISTRIBUTION_ID: '123xyz'
build
一切正常,但后来 postbuild
我遇到了这个错误:
> @plutora/client@0.1.0 postbuild /opt/atlassian/pipelines/agent/build
> postbuild.sh
sh: 1: postbuild.sh: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! @plutora/client@0.1.0 postbuild: `postbuild.sh`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the @plutora/client@0.1.0 postbuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-11-11T12_04_22_330Z-debug.log
我通过 运行 /bin/bash
中的脚本解决了这个问题:
...
script:
- npm install
- npm test
- chmod +x ./postbuild.sh
- npm run build
- /bin/bash postbuild.sh
...
This 有帮助。
我正在为 React 应用程序的 CI/CD 使用标准 bitbucket 管道模板 - CRA。
我在 React App 中设置了 postbuild
步骤到 运行 简单的 bash 脚本,它只是改变构建文件夹中的文件结构。
在package.json中:
"postbuild": "postbuild.sh"
bitbucket-pipelines.yml:
# Template React Deploy
# This template allows you to deploy your React app to an AWS S3 bucket and invalidate the old AWS Cloudfront distribution.
# The workflow allows running tests, code linting and security scans on feature branches (as well as master).
# The react app will be validated, deployed to S3 and trigger an AWS Cloudfront distribution invalidation to refresh the CDN caches after the code is merged to master.
# Prerequisites: $AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY setup in the Deployment variables.
# For advanced cases, please, follow examples from the pipe's:
# README https://bitbucket.org/atlassian/aws-s3-deploy/src/master/README.md
# README https://bitbucket.org/atlassian/aws-cloudfront-invalidate/src/master/README.md
image: node:10.15.3
# Workflow Configuration
pipelines:
default:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
# CI=true in default variables for Bitbucket Pipelines https://support.atlassian.com/bitbucket-cloud/docs/variables-in-pipelines/
- npm test
- step:
name: Lint the node package
script:
# Run your linter of choice here
- npm install eslint
- npx eslint src
caches:
- node
branches:
master:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
# CI=true in default variables for Bitbucket Pipelines https://support.atlassian.com/bitbucket-cloud/docs/variables-in-pipelines/
- npm test
- chmod +x ./postbuild.sh
- npm run build
artifacts:
- build/**
- step:
name: Security Scan
script:
# Run a security scan for sensitive data.
# See more security tools at https://bitbucket.org/product/features/pipelines/integrations?&category=security
- pipe: atlassian/git-secrets-scan:0.4.3
- step:
name: Deploy to Production
deployment: Production
trigger: manual
clone:
enabled: false
script:
# sync your files to S3
- pipe: atlassian/aws-s3-deploy:0.4.4
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
S3_BUCKET: 'my-bucket-name'
LOCAL_PATH: 'build'
# triggering a distribution invalidation to refresh the CDN caches
- pipe: atlassian/aws-cloudfront-invalidate:0.1.1
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
DISTRIBUTION_ID: '123xyz'
build
一切正常,但后来 postbuild
我遇到了这个错误:
> @plutora/client@0.1.0 postbuild /opt/atlassian/pipelines/agent/build
> postbuild.sh
sh: 1: postbuild.sh: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! @plutora/client@0.1.0 postbuild: `postbuild.sh`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the @plutora/client@0.1.0 postbuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-11-11T12_04_22_330Z-debug.log
我通过 运行 /bin/bash
中的脚本解决了这个问题:
...
script:
- npm install
- npm test
- chmod +x ./postbuild.sh
- npm run build
- /bin/bash postbuild.sh
...
This 有帮助。