Coder Social home page Coder Social logo

airflow-label-when-approved's Introduction

Label When Approved action

label-when-approved-action status

Table of Contents generated with DocToc

Context and motivation

Label When Approved is an action that checks is Pull Request is approved and assign label to it. Label is not set or removed when Pull Request has awaiting requested changes.

Setting label is optional that only output can be used in the workflow.

The required input require_committers_approval says is approval can be done by people with read access to the repo or by anyone. It may be useful in repositories which requires committers approvals like Apache Software Foundation projects.

It can be used in workflows triggered by "pull_request_review" or "workflow_run". When used on "pull_request_review" any workflows triggered from pull request created from fork will fail due to insufficient permissions. Because of this support for "workflow_run" was added. It should be triggered by workflows "pull_request_review" and requires additional input pullRequestNumber. Pull request number can be obtained by using potiuk/get-workflow-origin) action (see example workflow-run-event).

Inputs and outputs

Inputs

Input Required Example Comment
token yes ${{ secrets.GITHUB_TOKEN }} The github token passed from ${{ secrets.GITHUB_TOKEN }}
label no Approved by committers Label to be added/removed to the Pull Request if approved/not approved
require_committers_approval no true Is approval from user with write permission required
comment no PR approved by at least one committer and no changes requested. Add optional comment to the PR when approved (requires label input to be set)
pullRequestNumber no ${{ steps.source-run-info.outputs.pullRequestNumber }} Pull request number if triggered by "worfklow_run"

Outputs

Output
isApproved is Pull Reqeuest approved
labelSet was label set
labelRemoved was label removed

Examples

Workflow Run event

name: "Label when approved"
on:
  workflow_run:
    workflows: ["Workflow triggered on pull_request_review"]
    types: ['requested']

jobs:

  label-when-approved:
    name: "Label when approved"
    runs-on: ubuntu-latest
    steps:
      - name: "Get information about the original trigger of the run"
        uses: potiuk/get-workflow-origin@v1_2
        id: source-run-info
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          sourceRunId: ${{ github.event.workflow_run.id }}
      - name: Label when approved by anyone
        uses: TobKed/[email protected]
        id: label-when-approved-by-anyone
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          require_committers_approval: 'true'
          label: 'Approved by committer'
          comment: 'PR approved by at least one committer and no changes requested.'
          pullRequestNumber: ${{ steps.source-run-info.outputs.pullRequestNumber }}

Pull Request Review event

name: Label when approved
on: pull_request_review

jobs:

  label-when-approved:
    name: "Label when approved"
    runs-on: ubuntu-latest
    outputs:
      isApprovedByCommiters: ${{ steps.label-when-approved-by-commiters.outputs.isApproved }}
      isApprovedByAnyone: ${{ steps.label-when-approved-by-anyone.outputs.isApproved }}
    steps:
      - name: Label when approved by commiters
        uses: TobKed/[email protected]
        id: label-when-approved-by-commiters
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          label: 'ready to merge (committers)'
          require_committers_approval: 'true'
          comment: 'PR approved by at least one committer and no changes requested.'
      - name: Label when approved by anyone
        uses: TobKed/[email protected]
        id: label-when-approved-by-anyone
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

Development environment

It is highly recommended tu use pre commit. The pre-commits installed via pre-commit tool handle automatically linting (including automated fixes) as well as building and packaging Javascript index.js from the main.ts Typescript code, so you do not have to run it yourself.

License

MIT License covers the scripts and documentation in this project.

airflow-label-when-approved's People

Contributors

potiuk avatar tobked avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

isabella232

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.