Giter VIP home page Giter VIP logo

trigger-workflow-and-wait's Introduction

Trigger Workflow and Wait

Github Action for trigger a workflow from another workflow. The action then waits for a response.

When would you use it?

When deploying an app you may need to deploy additional services, this Github Action helps with that.

Arguments

Argument Name Required Default Description
owner True N/A The owner of the repository where the workflow is contained.
repo True N/A The repository where the workflow is contained.
github_token True N/A The Github access token with access to the repository. Its recommended you put it under secrets.
workflow_file_name True N/A The reference point. For example, you could use main.yml.
github_user False N/A The name of the github user whose access token is being used to trigger the workflow.
ref False main The reference of the workflow run. The reference can be a branch, tag, or a commit SHA.
wait_interval False 10 The number of seconds delay between checking for result of run.
client_payload False {} Payload to pass to the workflow, must be a JSON string
propagate_failure False true Fail current job if downstream job fails.
trigger_workflow False true Trigger the specified workflow.
wait_workflow False true Wait for workflow to finish.
last_workflow_interval False 0 The number of seconds delay between checking for the last workflow. default: 0

Example

Simple

- uses: convictional/[email protected]
  with:
    owner: keithconvictional
    repo: myrepo
    github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}

All Options

- uses: convictional/[email protected]
  with:
    owner: keithconvictional
    repo: myrepo
    github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}
    github_user: github-user
    workflow_file_name: main.yml
    ref: release-branch
    wait_interval: 10
    client_payload: '{}'
    propagate_failure: false
    trigger_workflow: true
    wait_workflow: true
    last_workflow_interval: 1

Testing

You can test out the action locally by cloning the repository to your computer. You can run:

INPUT_WAIT_INTERVAL=10 \
  INPUT_PROPAGATE_FAILURE=false \
  INPUT_TRIGGER_WORKFLOW=true \
  INPUT_WORKFLOW_FILE_NAME="main.yml" \
  INPUT_GITHUB_USER="github-user" \
  INPUT_WAIT_WORKFLOW=true \
  INPUT_LAST_WORKFLOW_INTERVAL=1 \
  INPUT_OWNER="keithconvictional" \
  INPUT_REPO="trigger-workflow-and-wait-example-repo1" \
  INPUT_GITHUB_TOKEN="<REDACTED>" \
  INPUT_CLIENT_PAYLOAD='{}' \
  busybox sh entrypoint.sh

You will have to create a Github Personal access token. You can create a test workflow to be executed. In a repository, add a new main.yml to .github/workflows/. The workflow will be:

name: Main
on:
  workflow_dispatch
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: Pause for 25 seconds
        run: |
          sleep 25

You can see the example here. For testing a failure case, just add this line after the sleep:

...
- name: Pause for 25 seconds
  run: |
    sleep 25
    echo "For testing failure"
    exit 1

Potential Issues

Changes

If you do not want the latest build all of the time, please use a versioned copy of the Github Action. You specify the version after the @ sign.

- uses: convictional/[email protected]
  with:
    owner: keithconvictional
    repo: myrepo
    github_token: ${{ secrets.GITHUB_PERSONAL_ACCESS_TOKEN }}

trigger-workflow-and-wait's People

Contributors

keithconvictional avatar shabih-paystack avatar anuruddhal avatar karadikidd avatar hex0cter avatar duhow avatar lakshmiravalir avatar neilmayhew avatar steph0 avatar victor-shvartsman avatar

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.