# Fine-grained \`block\` Github status

**URL:** <https://forum.buildkite.community/t/fine-grained-block-github-status/849>\
**Category:** General\
**Created:** [January 2, 2020, 12:45am UTC](https://forum.buildkite.community/t/fine-grained-block-github-status/849 "2020-01-02T00:45:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![huon](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.buildkite.community/huon/32/455_2.png) [@huon](https://forum.buildkite.community/u/huon)\
**Post date:** [January 2, 2020, 12:45am UTC](https://forum.buildkite.community/t/fine-grained-block-github-status/849/1 "2020-01-02T00:45:54Z")

</div>

We’ve interested in two sorts of block steps:

1. “critical” block steps, where a build cannot continue without it, and isn’t validated without user input. Examples:
  - we have an open source pipeline where we want an approved committer to unblock the build, representing an approval/validation before running the arbitrary external code on our CI (for instance, [stellargraph-public #171](https://buildkite.com/stellar/stellargraph-public/builds/171))
  - we’re using gitflow, and have set up enough automation so that QA for a release happens via a PR from `release/x.y.z` to `master`, and CI tests that vigorously, along with a release checklist for a few final pieces that are impossible/costly to automate. The release PR shouldn’t merge without checking that release checklist, and we use a block step to remind/force us to do this.

2. “optional” block steps, where there’s extra actions one might occasionally want to trigger. Examples:
  - a release can start from any commit on `develop`, and it’s nice to have the start of that process as an automated step that can optionally be triggered by just clicking a button on the BK UI

These are quite different, and the GitHub status for each should be different:

1. “critical” blocks need to be `pending`: the testing hasn’t finished and isn’t successful, when the build blocks, and so this shouldn’t fulfil any GitHub required status checks
2. “optional” blocks need to be `passed`: the testing is successful, and any status checks should be fulfilled

This can be somewhat controlled using “Pipeline settings \> GitHub \> GitHub Settings” configuration, but it forces each pipeline to choose only one of the above because it seems to be global. ![image](https://us1.discourse-cdn.com/flex016/uploads/buildkite1/original/1X/ca374d6aee6a927e1e1d1af071bacbf329b71a9c.png)

Is there a way to control this in a more fine-grained way (e.g. mark an individual block step as `pending_when_blocked: true` or `status: pending`/`status: passed` something)?
