如何在Github Action中优先执行子包B、C的npm test再执行仓库A
如何在GitHub Action中先执行子仓库B、C的npm test再执行父仓库A的测试?
我有三个仓库A、B、C,其中A是父仓库,B和C作为包存在于A仓库中。当前A仓库的GitHub Action配置如下,想知道能不能实现先跑B、C的npm test,再跑A的npm test?如果可以,具体该怎么操作?
on: push: tags: - '*' name: 🚀 Deploy website on create tag jobs: web-deploy: name: 🎉 Deploy runs-on: ubuntu-latest steps: - name: 🚚 Get latest code uses: actions/checkout@v2 - name: Use Node.js 14 uses: actions/setup-node@v2 with: node-version: '14' registry-url: 'https://registry.npmjs.org' scope: '@xxxxxx' - name: 🔨 NPM install en build prod run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc - run: npm ci - run: npm run build - run: npm run test - name: Copy public dir to production uses: appleboy/scp-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.SSH_USER }} key: ${{secrets.SSH_PRIVATE_KEY}} port: ${{secrets.SSH_PORT}} command_timeout: 30s source: "./public" target: "/var/www/html/"
当然可以实现,核心就是在A仓库的测试命令之前,分别进入B、C对应的目录执行它们的测试用例。具体操作如下:
修改后的GitHub Action配置
on: push: tags: - '*' name: 🚀 Deploy website on create tag jobs: web-deploy: name: 🎉 Deploy runs-on: ubuntu-latest steps: - name: 🚚 Get latest code uses: actions/checkout@v2 - name: Use Node.js 14 uses: actions/setup-node@v2 with: node-version: '14' registry-url: 'https://registry.npmjs.org' scope: '@xxxxxx' - name: 🔨 配置NPM认证 run: echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" > .npmrc - run: npm ci - run: npm run build # 新增:执行仓库B的测试 - name: 🧪 运行仓库B的测试用例 run: npm test working-directory: ./packages/B # 替换成B在A仓库中的实际路径 # 新增:执行仓库C的测试 - name: 🧪 运行仓库C的测试用例 run: npm test working-directory: ./packages/C # 替换成C在A仓库中的实际路径 - run: npm run test - name: Copy public dir to production uses: appleboy/scp-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.SSH_USER }} key: ${{secrets.SSH_PRIVATE_KEY}} port: ${{secrets.SSH_PORT}} command_timeout: 30s source: "./public" target: "/var/www/html/"
关键说明
- 务必将
./packages/B和./packages/C替换为B、C在A仓库中的真实目录路径,比如如果B直接放在根目录下的B文件夹,就写./B - 因为
npm ci已经安装了所有项目依赖(包括B、C的依赖),所以不需要在B、C目录重复执行npm install或npm ci - 测试步骤的顺序可以按需调整,只要保证B、C的测试在A的测试之前执行即可
内容的提问来源于stack exchange,提问作者Bas
相关产品推荐
相关产品推荐

