Skip to content

Latest commit

 

History

History
58 lines (52 loc) · 1.99 KB

05.2_action-type.md

File metadata and controls

58 lines (52 loc) · 1.99 KB

Action Types {docsify-ignore-all}

GitHub Actions are open source repositories written in a variety of languages.

Actions can be written with Dockerfiles so you can utilize any language and environment that your step needs. Sample action.yml for a Docker action:

# action.yml
name: 'Hello World'
description: 'Greet someone and record the time'
inputs:
  who-to-greet:  # id of input
    description: 'Who to greet'
    required: true
    default: 'World'
outputs:
  time: # id of output
    description: 'The time we greeted you'
runs:
  using: 'docker'
  image: 'Dockerfile'
  args:
    - ${{ inputs.who-to-greet }}

Traditional Actions are written in Node. They can utilize any language that can compile in to Javascript, so many of them are written in Typescript and compiled into a index.js file. GitHub provides helper libraries that allow you to interact with the Actions context and the GitHub API easily.

Finally you can now write Shell scripts and treat them like actions.
Sample action.yml:

name: 'Hello World'
description: 'Greet someone'
inputs:
  who-to-greet:  # id of input
    description: 'Who to greet'
    required: true
    default: 'World'
outputs:
  random-number:
    description: "Random number"
    value: ${{ steps.random-number-generator.outputs.random-id }}
runs:
  using: "composite"
  steps:
    - run: echo Hello ${{ inputs.who-to-greet }}.
      shell: bash
    - id: random-number-generator
      run: echo "::set-output name=random-id::$(echo $RANDOM)"
      shell: bash
    - run: ${{ github.action_path }}/goodbye.sh
      shell: bash