15 Commits

Author SHA1 Message Date
a7271f9dd7 GHA: Fix bad job-names & links in monitoring emails
Due to a bad file-format design, if a cirrus-cron job happened to have a
name w/ spaces, the generated e-mail text would be broken.  For example:

```
Cron build 'VM' Failed: https://cirrus-ci.com/build/Image Maintenance
5630822628196352
```

Fix this by flipping the field-order in an intermediate file, so the
build ID comes first, then the job name.  This makes it much easier for
`read` to process, since all words will be stored into the final
variable (now the job name).

Also change all variables that reference this intermediate file such
that they continue to reflect the expected field order.  Update script
tests and add a new test to confirm expected file processing and output.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-06-07 15:22:17 -04:00
f877d7dcd0 Replace egrep/fgrep with grep -E/-F
There are days when I really, really, really hate GNU. Remember
when someone decided that 'head -1' would no longer work, and
that it was OK to break an infinite number of legacy production
scripts? Someone now decided that egrep/fgrep are deprecated,
and our CI logs (especially pr-should-include-tests) are now
filled with hundreds of warning lines, making it difficult
to find actual errors.

I expect that those warnings will be removed quickly after
furious community backlash, just like the 'head -1' fiasco
was quietly reverted, but ITM the warnings are annoying
so I capitulate.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-03 07:32:42 -06:00
50f72fe7b1 [CI:BUILD] Cirrus: Fix GraphQL ownerRepository:null error
A semantic change to a Cirrus-CI GraphQL API parameter caused a
unit-test to fail (as it should have) with the error:

```
Query result did not pass filter '.data.ownerRepository.cronSettings':
'{"data":{"ownerRepository":null}}'
```

As per Cirrus-support, a change was introduced in schema affecting certain
fields that were incorrectly marked Nullable.  They indicated the `platform`
field was set incorrectly, and should use the value `github`.

* Fix the platform field's value to `github` instead of `LINUX`.
* Change the unit-test to only execute as part of the 'main' cirrus-cron
  job so it cannot impact PRs.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-02-06 15:57:51 -05:00
f17479c711 Run codespell on code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-11-28 15:13:43 -05:00
dca407d466 GHA: Fix typo setting output parameter
Ref:
https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-10 12:59:11 -05:00
0334d8d611 Cirrus: Add tests for GHA scripts
Also, fix the rerun_cirrus_cron workflow.  Thanks @ygalblum for spotting
the error.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-07 11:47:30 -05:00
66d857cdd7 GHA: Update scripts to pass shellcheck
Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-07 11:47:29 -05:00
462ce32e66 GHA: Fix cirrus-cron scripts
Lack of proper testing possibility for github actions and lack of
script-testing by me, allowed several flaws through into 'main'.  Fix
the problems and manually test the scripts to make sure they're working.

Note: Also revert the stupid SHA-based action-pinning back to normal,
human-readable version numbers.  The value of using SHAs in the name of
improved "security" is real, but the value of human-readability and
ease of maintenance is greater.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-07 11:46:34 -05:00
35523d560a GHA: Auto. re-run failed cirrus-cron builds once
With a seemingly ever growing list of cirrus-cron jobs running on
release branches, there are bound to be some hiccups.  Sometimes a lot
of them.  Normally any failures require a human to eyeball the logs
and/or manually re-run the job to see if it was simply a flake.  This
doesn't take long, but can be distracting and compounds over time.

Attempt to alleviate some maintainer burden by using a new github action
workflow to perform **one** automatic re-run on any failed builds.  This
task is scheduled an hour prior to a second failure check, and generation
of notification e-mail for review.

Note: If there are no failures, due to the auto. re-run or luck, no
e-mail is generated. If this proves useful in this repo, I intend to
re-use this workflow for other repo's cirrus-cron jobs.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-03 13:54:39 -04:00
3a85d537b6 GHA: Migrate inline script to file
Inline scripts make github-action workflow YAML harder to read/maintain.
Relocate the e-mail formation script to a dedicated file.  This also
permits better input-validation and re-use of a common `err()` function.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-11-03 13:54:39 -04:00
d95e79ebe3 GHA: Fix dumb error check
Previously the reply JSON was examined for the literal presence of the
string 'error'.  This was intended to catch server or query errors and
the like.  However it's not a sound design as valid/legitimate contents
could potentially contain the string.  Fix this by using the `-e` option
to `jq`, with a filter that should always result in a non-empty/null
match.  If this fails or returns null for some reason, then it's safe to
throw a real error code & message.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-07-14 14:42:59 -04:00
72ddacdbe9 Github workflow: Fix parsing of GraphQL response JSON
While #12998 fixed the query string, it neglected to address
presence of the old `githubRepository` field name in the reply.  This
resulted in the job throwing an error:

`jq: error (at ./artifacts/reply.json:0): Cannot iterate over null`

However, the job did preserve an artifacts archive containing the new
response data.  As a test for the fix in this commit, I ran the
raw response data through the corrected jq command-line.  This
confirmed the change by properly parsing the data as expected by
the workflow.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-01-25 14:39:32 -05:00
0d42d9f8d1 Github workflow: Update Cirrus-cron GraphQL query
Sometime on Jan. 14th the GraphQL schema for Cirrus-CI changed, leading
to the following error:

`Validation error of type FieldUndefined: Field 'githubRepository' in
type 'Root' is undefined @ 'githubRepository'`

After some exploration, it was determined the field had been replaced
with a new root-level field `ownerRepository`.  Manual experimentation
revealed the scalar value `LINUX` was appropriate to use for the new
`platform` parameter.  The query reply appears to remain compatible.

Update the script which performs this query to use the new field name
and parameter.  ***NOTE*** This script is shared across multiple
containers-org repos. All of which are/were affected by the schema
change.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-01-24 15:25:47 -05:00
bf5d184325 Fix spelling mistakes
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-12-09 06:00:04 -05:00
887f88c490 Github-Actions: Send e-mail on Cirrus cron failure
This repository has a number of automaticly triggered branch-level
testing enabled.  However, other than remembering to go look at a
specific WebUI, there is no way for anybody to notice if/when these jobs
fail.

This commit introduces a github-action workflow which runs periodically,
checking for failed cron-triggered Cirrus-CI jobs.  When it finds any, it
formats a simple report for e-mail delivery.  The list of destination
addresses is configurable at any time by merging changes to a
simple CSV file.

Signed-off-by: Chris Evich <cevich@redhat.com>
2020-11-18 15:34:01 -05:00