Fail action execution on unhandled errors

Without this, the error logs contain an "UnhandledPromiseRejectionError"
but the action is reported as succeeding.
This commit is contained in:
Daz DeBoer 2021-09-14 05:33:50 -06:00
parent a802a3c0ce
commit cca55d0890
No known key found for this signature in database
GPG key ID: DD6B9F0B06683D5D
3 changed files with 20 additions and 11 deletions

View file

@ -11,26 +11,27 @@ env:
CACHE_KEY_PREFIX: ${{github.workflow}}#${{github.run_number}}-
jobs:
wrapper-missing:
continue-on-error: true
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Test wrapper missing
uses: ./
continue-on-error: true
with:
build-root-directory: __tests__/samples/no-wrapper
arguments: help
bad-configuration:
continue-on-error: true
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Test bad config value
uses: ./
continue-on-error: true
with:
build-root-directory: __tests__/samples/no-wrapper
arguments: help

View file

@ -9,12 +9,12 @@ import * as provision from './provision'
// Invoked by GitHub Actions
export async function run(): Promise<void> {
const workspaceDirectory = process.env[`GITHUB_WORKSPACE`] || ''
const buildRootDirectory = resolveBuildRootDirectory(workspaceDirectory)
await caches.restore(buildRootDirectory)
try {
const workspaceDirectory = process.env[`GITHUB_WORKSPACE`] || ''
const buildRootDirectory = resolveBuildRootDirectory(workspaceDirectory)
await caches.restore(buildRootDirectory)
const args: string[] = parseCommandLineArguments()
// TODO: instead of running with no-daemon, run `--stop` in post action.
args.push('--no-daemon')
@ -39,10 +39,10 @@ export async function run(): Promise<void> {
core.setFailed(`Gradle process exited with status ${result.status}`)
}
} catch (error) {
if (!(error instanceof Error)) {
throw error
core.setFailed(String(error))
if (error instanceof Error && error.stack) {
core.info(error.stack)
}
core.setFailed(error.message)
}
}

View file

@ -1,8 +1,16 @@
import * as core from '@actions/core'
import * as caches from './caches'
// Invoked by GitHub Actions
export async function run(): Promise<void> {
await caches.save()
try {
await caches.save()
} catch (error) {
core.setFailed(String(error))
if (error instanceof Error && error.stack) {
core.info(error.stack)
}
}
}
run()