[pw-ci] [RFC v3 2/2] github_get_logs: handle multiple failed step in a single job

Michael Santana msantana at redhat.com
Mon Aug 2 21:15:44 UTC 2021


On Thu, Jul 29, 2021 at 5:36 PM Salvatore Daniele <sdaniele at redhat.com> wrote:
>
> A github job can fail multiple steps within a single job.
> The current implementation fails to pull logs when handed a
> job with multiple failed steps.
>
> This patch generates logs for each step of each job.
>
> Signed-off-by: Salvatore Daniele <sdaniele at redhat.com>
> ---
>  github_get_logs.sh | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/github_get_logs.sh b/github_get_logs.sh
> index 2f6cc9c..1cd4086 100755
> --- a/github_get_logs.sh
> +++ b/github_get_logs.sh
> @@ -99,26 +99,27 @@ print_errored_logs_for_commit () {
>      echo "-----------------------Summary of failed steps-----------------------"
>      echo "$jobs_results" | jq -r ".[].name" | while read -r job; do
>          echo "\"$job\" failed at step \"$(echo "$jobs_results" | jq -r ".[] | \
> -            select(.name==\"$job\") | .failed_step.name")\""
> +            select(.name==\"$job\") | .failed_step.name")\"" | sed 'N;s/\n/, /'
jq does not have a built-in way to make a comma separated list? if not, it's ok.

I thought sed could not replace new lines. Is that what the N flag is for?
>      done
>      echo "----------------------End summary of failed steps--------------------"
>
>      echo ""
>      echo "-------------------------------BEGIN LOGS----------------------------"
>      spacing=0
> +
>      # Print out logs for failed jobs
> -    echo "$jobs_results" | jq -r ".[].name" | while read -r job; do
> +    echo "$jobs_results" | jq -r '.[] | .name, .failed_step.name, .failed_step.number'| while \
> +        read -r job && read -r step && read -r log_number; do
> +
Just nit-picking:
why switch from " to ' ?
add a space between ' and |
remove 4 empty trailing spaces

One question, do the arguments come out one on each line from jq? is
that why you had to call read separately multiple times?
>          if [ ! "$spacing" -eq "0" ]
>          then
>              echo -ne "\n\n\n\n"
>          fi
>
> -        step="\"$(echo "$jobs_results" | jq -r ".[] | select(.name==\"$job\") | .failed_step.name")\""
>          echo "####################################################################################"
>          echo "#### [Begin job log] \"$job\" at step $step"
>          echo "####################################################################################"
>
> -        log_number=$(echo "$jobs_results" | jq ".[] | select(.name==\"$job\") | .failed_step.number")
>          cat "build_logs_series_$series_id/$job/$log_number"_* | tail -n 25 | cut -d' ' -f2- | sed 's/\r$//'
>
>          echo "####################################################################################"
> --
> 2.31.1
>
> _______________________________________________
> Pwci mailing list
> Pwci at lists.esnacc.org
> http://mail.esnacc.org/mailman/listinfo/pwci
>



More information about the Pwci mailing list