tfagerlind / verso

Verso is an application aimed to simplify and standardize automatic versioning in a continuous delivery context.
MIT License
0 stars 0 forks source link

Make it mandatory for workflows to pass for PRs before merge #11

Open tfagerlind opened 1 year ago

tfagerlind commented 1 year ago

According to ChatGPT, you need to configure status checks in the workflow:

I have configured a workflow for a github repository. How do I make it mandatory for the workflow to pass for a pull request before merge? ChatGPT To make it mandatory for a GitHub Actions workflow to pass before a pull request can be merged, you can use branch protection rules in combination with status checks. Here's a step-by-step guide on how to set this up:

Create a GitHub Actions Workflow: If you haven't already, create a GitHub Actions workflow for your repository. This workflow should define the build and test steps for your project.

Define a Status Check: In your workflow, you can define a status check that you want to use to determine if the workflow has passed or failed. Typically, you would use the jobs and steps section of your workflow YAML file to specify your build and test steps. Make sure that the final step sets an appropriate status or uses a GitHub status API to set a custom status.

For example:

yaml Copy code name: CI/CD

on: pull_request: branches:

jobs: build: runs-on: ubuntu-latest

steps:
  - name: Checkout code
    uses: actions/checkout@v2

  # Add your build and test steps here

  - name: Set Status Check
    run: |
      # Your logic to set a status check
      if [ build_passed ]; then
        echo "::set-output name=check_status::success"
      else
        echo "::set-output name=check_status::failure"
      fi
    id: set_status

Add more jobs or steps as needed

Configure Branch Protection Rules: Now, you need to configure branch protection rules to enforce the status checks on your target branch (e.g., main). Here's how you can do it:

Go to your GitHub repository. Click on "Settings." In the left sidebar, click on "Branches." Under "Branch protection rules," click the "Add rule" button. Select the branch you want to protect (e.g., main). Enable the option "Require status checks to pass before merging." Select the status check(s) that you defined in your workflow YAML. Optionally, you can also enforce other rules like requiring reviews or requiring that the branch be up-to-date. Save your branch protection rule.

Now, when a pull request is created or updated, the workflow defined in your GitHub Actions will run, and the status check you defined will be updated based on the success or failure of your workflow. If the status check fails, the pull request cannot be merged until the check is successful.

Make sure that your workflow properly reports its status to GitHub using the status API, and that you replace "build_passed" with the actual logic that determines whether your build and tests passed in the workflow.

tfagerlind commented 1 year ago

It strange because I haven't find official documentation that supports the suggestion of chatgpt