Git Product home page Git Product logo

githubactions's Introduction

Github Actions for Scoop buckets

Set of automated actions, which bucket maintainers can use to save time managing issues / pull requests.

Available environment variables

  1. GITHUB_TOKEN
    • REQUIRED
    • Use ${{ secrets.GITHUB_TOKEN }}
  2. USER_EMAIL
    • String
    • Optional
  3. SCOOP_REPO
    • String
    • If specified, scoop config 'scoop_repo' will be configured and scoop updated
  4. SCOOP_BRANCH
    • String
    • If specified, scoop config 'scoop_branch' will be configured and scoop updated
  5. SKIP_UPDATED
    • String. Use '1' or '0'
    • If enabled, log of checkver utility will not print latest versions
  6. THROW_ERROR
    • String. Use '1' or '0'
    • If enabled, error from checkver utility will be thrown as exception and cause the run to fail
  7. SPECIAL_SNOWFLAKES
    • String
    • List of manifest names joined with , used as parameter for auto-pr utility.

Available actions

Excavator

Issues

As soon as a new issue is created or the label verify is added to an issue, the action is executed. Based on the issue title, a specific sub-action is executed. It could be one of these:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment

Pull Requests

As soon as a PR is created or the comment /verify is posted to it, validation tests are executed (see wiki) for detailed desciption):

  • ❗❗ Pull request created from forked repository cannot be verified due to security concern from GitHub side ❗❗
    • Manual /verify comment is needed

Overview of validatiors

  1. Required properties (License, Description) are in place
  2. Hashes of files are correct
  3. Checkver functionality
  4. Autoupdate functionality
    1. Hash extraction finished

Example workflows for all actions

  • Names could be changed as desired
  • if statements are not required
    • There are only time savers when finding appropriate action log
    • Save GitHub resources
#.github\workflows\schedule.yml
on:
  schedule:
  - cron: '*/30 * * * *'
name: Excavator
jobs:
  excavate:
    name: Excavator
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@main
    - name: Excavator
      uses: ScoopInstaller/GithubActions@main
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        SKIP_UPDATED: '1'
        THROW_ERROR: '0'

#.github\workflows\issues.yml
on:
  issues:
    types: [ opened, labeled ]
name: Issue
jobs:
  issueHandler:
    name: Issue Handler
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@main
    - name: Issue Handler
      uses: ScoopInstaller/Scoop-GithubActions@main
      if: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

#.github\workflows\issue_commented.yml
on:
  issue_comment:
    types: [ created ]
name: Commented Pull Request
jobs:
  pullRequestHandler:
    name: Pull Request Validator
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@main
    - name: Pull Request Validator
      uses: ScoopInstaller/GithubActions@main
      if: startsWith(github.event.comment.body, '/verify')
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

#.github\workflows\pull_request.yml
on:
  pull_request:
    types: [ opened ]
name: Pull Requests
jobs:
  pullRequestHandler:
    name: Pull Request Validator
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@main
    - name: Pull Request Validator
      uses: ScoopInstaller/GithubActions@main
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

githubactions's People

Contributors

ash258 avatar cebbinghaus avatar chawyehsu avatar crendking avatar issaclin32 avatar lazygeniusman avatar niheaven avatar rasa avatar rashil2000 avatar se35710 avatar yi-xu-0100 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.