set ci fail conditions

This commit is contained in:
ibrahim0814
2019-12-05 18:25:24 -08:00
parent 3dfea70b3f
commit 08a0ecb0f3
2 changed files with 37 additions and 21 deletions

View File

@@ -21,7 +21,7 @@ steps:
flags: unittests #optional flags: unittests #optional
name: codecov-umbrella #optional name: codecov-umbrella #optional
yml: ./codecov.yml #optional yml: ./codecov.yml #optional
fail_ci_if_error: yes #optional (default = no) fail_ci_if_error: true #optional (default = false)
``` ```
>**Note**: This assumes that you've set your Codecov token inside *Settings > Secrets* as `CODECOV_TOKEN`. If not, you can [get an upload token](https://docs.codecov.io/docs/frequently-asked-questions#section-where-is-the-repository-upload-token-found-) for your specific repo on [codecov.io](https://www.codecov.io). >**Note**: This assumes that you've set your Codecov token inside *Settings > Secrets* as `CODECOV_TOKEN`. If not, you can [get an upload token](https://docs.codecov.io/docs/frequently-asked-questions#section-where-is-the-repository-upload-token-found-) for your specific repo on [codecov.io](https://www.codecov.io).
@@ -36,7 +36,7 @@ Codecov's Action currently supports five inputs from the user: `token`, `file`,
| `flags` | Flag the upload to group coverage metrics (unittests, uitests, etc.) | Optional | `flags` | Flag the upload to group coverage metrics (unittests, uitests, etc.) | Optional
| `name` | Custom defined name for the upload | Optional | `name` | Custom defined name for the upload | Optional
| `yml` | Path to codecov.yml config file | Optional | `yml` | Path to codecov.yml config file | Optional
| `fail_ci_if_error` | Specify whether CI pipeline should fail if there are errors related to Codecov. *Defaults to no*. | Optional | `fail_ci_if_error` | Specify if CI pipeline should fail when Codecov runs into errors during upload. *Defaults to **false***. | Optional
### Example `workflow.yml` with Codecov Action ### Example `workflow.yml` with Codecov Action
@@ -68,7 +68,7 @@ jobs:
flags: unittests flags: unittests
name: codecov-umbrella name: codecov-umbrella
yml: ./codecov.yml yml: ./codecov.yml
fail_ci_if_error: yes fail_ci_if_error: true
``` ```
## Contributing ## Contributing

View File

@@ -3,20 +3,40 @@ const exec = require("@actions/exec");
const request = require("request"); const request = require("request");
const fs = require("fs"); const fs = require("fs");
let fail_ci;
try { try {
const name = core.getInput("name"); const name = core.getInput("name");
const token = core.getInput("token"); const token = core.getInput("token");
const flags = core.getInput("flags"); const flags = core.getInput("flags");
const file = core.getInput("file"); const file = core.getInput("file");
const yml = core.getInput("yml"); const yml = core.getInput("yml");
let fail_ci = core.getInput("fail_ci_if_error"); fail_ci = core.getInput("fail_ci_if_error").toLowerCase();
fail_ci = fail_ci.toLowerCase();
if (
fail_ci === "yes" ||
fail_ci === "y" ||
fail_ci === "true" ||
fail_ci === "t" ||
fail_ci === "1"
) {
fail_ci = true;
} else {
fail_ci = false;
}
request("https://codecov.io/bash", (error, response, body) => { request("https://codecov.io/bash", (error, response, body) => {
if (error) throw error; if (error && fail_ci) {
throw error;
} else if (error) {
core.warning(error);
}
fs.writeFile("codecov.sh", body, err => { fs.writeFile("codecov.sh", body, err => {
if (err) throw err; if (err && fail_ci) {
throw err;
} else if (err) {
core.warning(err);
}
let output = ""; let output = "";
let execError = ""; let execError = "";
@@ -38,18 +58,6 @@ try {
GITHUB_SHA: process.env.GITHUB_SHA GITHUB_SHA: process.env.GITHUB_SHA
}; };
if (
fail_ci === "yes" ||
fail_ci === "y" ||
fail_ci === "true" ||
fail_ci === "t" ||
fail_ci === "1"
) {
fail_ci = true;
} else {
fail_ci = false;
}
if (file) { if (file) {
if (fail_ci) { if (fail_ci) {
exec exec
@@ -138,11 +146,19 @@ try {
const unlinkFile = () => { const unlinkFile = () => {
fs.unlink("codecov.sh", err => { fs.unlink("codecov.sh", err => {
if (err) throw err; if (err && fail_ci) {
throw err;
} else if (err) {
core.warning(err);
}
}); });
}; };
}); });
}); });
} catch (error) { } catch (error) {
core.setFailed(error.message); if (fail_ci) {
core.setFailed(error.message);
} else {
core.warning(error.message);
}
} }