5 git nrwl google-cloud-build nrwl-nx
我正在尝试建立一个使用 nx.dev 开发的 monorepo 完整 CI/CD 管道,在其中我仅构建和部署在提交中已更改的应用程序和服务。
我的云构建链接到我的 github 存储库,当推送更改时,它会启动构建。首先 npm install 然后构建更改的应用程序。
根据 nx 上的 nrwls 文档https://nx.dev/guides/monorepo-affected#ci他们说使用
npm run affected:build -- --base=origin/master~1 --head=origin/master
Run Code Online (Sandbox Code Playgroud)
这会将当前提交与之前的提交进行比较,以找出要构建哪些服务或应用程序。
我尝试过使用它,但在云构建中运行时出现此错误
Step #1: fatal: Not a valid object name master~1
Step #1: Command failed: git merge-base master~1 master
Step #1: fatal: Not a valid object name master~1
Run Code Online (Sandbox Code Playgroud)
当使用 cloud-build-local 在本地构建它时,它工作正常并成功地确定要构建哪些服务。
我认为它失败的原因是因为当 cloud build 检查 git 存储库时,它只检查提交,而不检查以前的提交信息。因此它无法引用先前的提交。
有什么办法可以解决这个问题还是我错过了什么?
谢谢!
您也许可以用表达式来做到这一点。
npm run affected:build -- --base=$(git rev-parse HEAD~1) --head=origin/master
Run Code Online (Sandbox Code Playgroud)
这就是我如何使用 github actions 来做到这一点
name: Test develop and feature branches
on:
push:
branches:
- develop
- "feature/*"
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Use node.js 12
uses: actions/setup-node@v1
with:
node-version: 12
- name: Cache Yarn
uses: actions/cache@v1
with:
path: node_modules
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.OS }}-yarn-${{ env.cache-name }}-
${{ runner.os }}-yarn-
- name: Yarn install
run: yarn install --frozen-lockfile --non-interactive
- name: Retreive last test sha
id: last-test-sha
run: |
if [[ $GITHUB_BASE_REF ]]
then
echo "::set-output name=sha::remotes/origin/$GITHUB_BASE_REF"
else
echo "::set-output name=sha::$(git rev-parse HEAD~1)"
fi
- name: Run affected tests
run: yarn affected:test --ci --runInBand --base=${{ steps.last-test-sha.outputs.sha }} --head=${GITHUB_SHA}
env:
CI: "true"
TZ: "utc"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |