GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - jcansdale/github-script

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

52 Commits
52 Commits

Folders and files

NameName
Last commit message
Last commit date
dist
dist
 
 
src
src
 
 
.gitignore
.gitignore
 
 
LICENSE.md
LICENSE.md
 
 
README.md
README.md
 
 
action.yml
action.yml
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 
tsconfig.json
tsconfig.json
 
 
yarn.lock
yarn.lock
 
 

Repository files navigation

github-script

This action makes it easy to quickly write a script in your workflow that uses the GitHub API and the workflow run context.

In order to use this action, a script input is provided. The value of that input should be the body of an asynchronous function call. Two arguments will be provided:

  • github A pre-authenticated octokit/rest.js client
  • context An object containing the context of the workflow run

Since the script is just a function body, these values will already be defined, so you don't have to (see examples below).

See octokit/rest.js for the API client documentation.

Note This action is still a bit of an experiment—the API may change in *future versions. 🙂

Examples

Comment on an issue

on:
  issues: {types: opened}

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue,
              owner: context.owner,
              repo: context.repo,
              body: '👋 Thanks for reporting!'
            })

Apply a label to an issue

on:
  issues: {types: opened}

jobs:
  apply-label:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.addLabels({
              issue_number: context.issue,
              owner: context.owner,
              repo: context.repo,
              labels: ['Triage']
            })

Welcome a first-time contributor

on: pull_request

jobs:
  welcome:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            // Get a list of all issues created by the PR opener
            // See: https://octokit.github.io/rest.js/#pagination
            const creator = context.payload.sender.login
            const opts = github.issues.listForRepo.endpoint.merge({
              ...context.issue,
              creator,
              state: 'all'
            })
            const issues = await github.paginate(opts)

            for (const issue of issues) {
              if (issue.number === context.issue.number) {
                continue
              }

              if (issue.pull_request) {
                return // Creator is already a contributor.
              }
            }

            await github.issues.createComment({
              issue_number: context.issue,
              owner: context.owner,
              repo: context.repo,
              body: 'Welcome, new contributor!'
            })

Download data from a URL

You can use the github object to access the Octokit API. For instance, github.request

on:
  pull_request

jobs:
  diff:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const diff_url = context.payload.pull_request.diff_url
            const result = await github.request(diff_url)
            console.log(result)

This will print the full diff object in the screen; result.data will contain the actual diff text.

Result encoding

By default, the JSON-encoded return value of the function is set as the "result" in the output of a github-script step. For some workflows, string encoding is preferred. This option can be set using the result-encoding input:

- uses: actions/[email protected]
  with:
    github-token: ${{secrets.GITHUB_TOKEN}}
    result-encoding: string
    script: |
      return "I will be string (not JSON) encoded!"

About

No description, website, or topics provided.

Resources

Readme
MIT license
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.