Github Action跳过前置步骤后成功通知未触发的修复问询
问题修复方案
问题原因
原工作流中notification任务的if: ${{ success() }}依赖全局工作流状态判断,当buildImageAndPush被跳过(状态为skipped)时,即使deploy执行成功,全局success()函数不会判定为true(因为存在未执行的任务),导致成功通知无法触发。而notificationFailure使用的failure()函数会在任意任务失败时触发,因此不受跳过任务的影响。
修复后的工作流代码
jobs: buildImageAndPush: if: ${{ !inputs.only-deploy }} uses: MY_WS/common/.github/workflows/build-publish-docker.yml deploy: needs: buildImageAndPush if: ${{ always() }} uses: MY_WS/common/.github/workflows/docker-deploy.yml notification: needs: deploy if: ${{ needs.deploy.result == 'success' }} uses: MY_WS/common/.github/workflows/notification.yml with: status: SUCCESS notificationFailure: needs: deploy if: ${{ needs.deploy.result == 'failure' }} uses: MY_WS/common/.github/workflows/notification.yml with: status: FAILURE
修复说明
- 将
notification的触发条件改为${{ needs.deploy.result == 'success' }},精准判断deploy任务自身的执行结果,无视其他任务是否被跳过,只要deploy成功就触发通知。 - 同步将
notificationFailure的条件改为${{ needs.deploy.result == 'failure' }},让失败通知的触发逻辑与成功通知保持统一,避免全局状态判断的歧义。
内容的提问来源于stack exchange,提问作者DeejonZ
相关产品推荐
相关产品推荐

