如何解决无法在Bitbucket管道中的Node.js映像中执行bash脚本
我正在为React app的CI / CD使用标准的位桶管道模板-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
...
解决方法
我通过在 /bin/bash
中运行脚本解决了这个问题:
...
script:
- npm install
- npm test
- chmod +x ./postbuild.sh
- npm run build
- /bin/bash postbuild.sh
...
This 有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。