我正在尝试在Bitbucket管道中构建React应用,然后使用git push将其部署到生产服务器中。
当我将所有内容都放在一个步骤中时,这很好用,就像这样:
image: node
clone:
depth: full
pipelines:
default:
- step:
name: Build app
caches:
- node
script:
- yarn
- yarn build
- git config user.email "<email>"
- git config user.name "<name>"
- git config remote.origin.url <remote ssh>
- git add .
- git commit -m "Add build"
- git push
但是,我想将构建过程和部署过程分为不同的步骤。稍后,我还将在构建步骤中添加测试。
这是我尝试过的:
image: node
clone:
depth: full
pipelines:
default:
- step:
name: Build app
caches:
- node
script:
- yarn
- yarn build
- step:
name: Deploy to production
deployment: production
script:
- git config user.email "<email>"
- git config user.name "<name>"
- git config remote.origin.url <remote ssh>
- git add .
- git commit -m "Add build"
- git push
这可以通过,但不会对我的生产服务器产生任何影响(与上述第一种方法相反)。我认为这是因为新步骤将意味着一个新容器,因此该新容器将无法访问我在上一步中所做的构建。
我试图用人工制品解决这个问题,但无济于事。我似乎找不到从第一步到第二步的构建方法。
有人有什么建议吗?
答案 0 :(得分:0)
执行的命令及其生成的文件不会在步骤之间保留下来,因此您将需要使用artifacts才能使第一步中yarn生成的文件仍然可用在第二步。因此,例如,如果您的yarn将文件写入项目根目录中的文件夹SELECT
si.Id,
si.AssetsName,
si.Rate,
si.Qty,
SUM(so.QtyOut) AS QtyOut,
COALESCE(si.Qty, 0) - SUM(so.QtyOut) AS Balance
FROM dbo.StockIn si
LEFT JOIN dbo.StockOut so ON so.Id = si.Id
GROUP BY si.Id, si.AssetsName, si.Rate, si.Qty;
中,则管道将变为:
yarn-output