36 lines
1.3 KiB
Bash
Executable File
36 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright 2024 The Fuchsia Authors
|
|
#
|
|
# Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
|
|
# <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT
|
|
# license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option.
|
|
# This file may not be copied, modified, or distributed except according to
|
|
# those terms.
|
|
|
|
set -eo pipefail
|
|
which yq > /dev/null
|
|
jobs=$(for i in $(find .github -iname '*.yaml' -or -iname '*.yml')
|
|
do
|
|
# Select jobs that are triggered by pull request.
|
|
if yq -e '.on | has("pull_request")' "$i" 2>/dev/null >/dev/null
|
|
then
|
|
# This gets the list of jobs that all-jobs-succeed does not depend on.
|
|
comm -23 \
|
|
<(yq -r '.jobs | keys | .[]' "$i" | sort | uniq) \
|
|
<(yq -r '.jobs.all-jobs-succeed.needs[]' "$i" | sort | uniq)
|
|
fi
|
|
|
|
# The grep call here excludes all-jobs-succeed from the list of jobs that
|
|
# all-jobs-succeed does not depend on. If all-jobs-succeed does
|
|
# not depend on itself, we do not care about it.
|
|
done | sort | uniq | (grep -v '^all-jobs-succeed$' || true)
|
|
)
|
|
|
|
if [ -n "$jobs" ]
|
|
then
|
|
missing_jobs="$(echo "$jobs" | tr ' ' '\n')"
|
|
echo "all-jobs-succeed missing dependencies on some jobs: $missing_jobs" | tee -a $GITHUB_STEP_SUMMARY >&2
|
|
exit 1
|
|
fi
|