chore: make sure global notification color makes sense

This commit is contained in:
Arthur Meyre
2021-09-21 17:13:30 +02:00
parent 90fa06f80a
commit d6986a0d93
2 changed files with 64 additions and 9 deletions

View File

@@ -52,7 +52,7 @@ jobs:
with:
format: 'space-delimited'
- name: Should rebuild docker check
run : |
run: |
set +e
echo "${{ steps.files.outputs.all }}" | grep "${ENV_DOCKERFILE}"
DOCKERFILE_CHANGED=$?
@@ -434,17 +434,30 @@ jobs:
send-report:
if: ${{ always() }}
needs: [
build-preflight-docker,
build,
publish-docs,
push-docker-image,
package-release,
]
needs:
[
build-preflight-docker,
build,
publish-docs,
push-docker-image,
package-release,
]
name: Send Slack notification
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- name: Prepare whole job status
if: ${{ always() }}
continue-on-error: true
env:
NEEDS_JSON: ${{ toJSON(needs) }}
run: |
echo "${NEEDS_JSON}" > /tmp/needs_context.json
JOB_STATUS=$(python3 ./script/actions_utils/actions_combine_status.py \
--needs_context_json /tmp/needs_context.json)
echo "JOB_STATUS=${JOB_STATUS}" >> "$GITHUB_ENV"
- name: Slack Notification
if: ${{ always() }}
continue-on-error: true
@@ -452,7 +465,7 @@ jobs:
env:
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
SLACK_ICON: https://pbs.twimg.com/profile_images/1274014582265298945/OjBKP9kn_400x400.png
SLACK_COLOR: ${{ job.status }}
SLACK_COLOR: ${{ env.JOB_STATUS || 'failure' }}
SLACK_MESSAGE: "Full run here: ${{ env.ACTION_RUN_URL }}\n\
- build-preflight-docker: ${{ needs.build-preflight-docker.outputs.report || 'Did not run.' }}\n\n\
- build: ${{ needs.build.outputs.report || 'Did not run.' }}\n\n\

View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""Helper script for github actions to combine job statuses"""
import argparse
import json
RESULTS_TO_DISPLAY_LEVEL = {
"failure": 0,
"cancelled": 1,
"success": 2,
"skipped": 3,
}
DISPLAY_LEVEL_TO_RESULTS = {val: key for key, val in RESULTS_TO_DISPLAY_LEVEL.items()}
def main(args):
"""Entry point"""
need_context_data = None
with open(args.needs_context_json, encoding="utf-8") as f:
need_context_data = json.load(f)
display_level = min(
RESULTS_TO_DISPLAY_LEVEL[job_object["result"]] for job_object in need_context_data.values()
)
print(DISPLAY_LEVEL_TO_RESULTS[display_level])
if __name__ == "__main__":
parser = argparse.ArgumentParser("Combine github actions statuses", allow_abbrev=False)
parser.add_argument(
"--needs_context_json",
type=str,
help="Pass the json file path containing the workflow needs context",
)
cli_args = parser.parse_args()
main(cli_args)