gitea/web_src/js/features
胖梁 36232b69db
Actions support workflow dispatch event (#28163)
fix #23668 

My plan:
* In the `actions.list` method, if workflow is selected and IsAdmin,
check whether the on event contains `workflow_dispatch`. If so, display
a `Run workflow` button to allow the user to manually trigger the run.
* Providing a form that allows users to select target brach or tag, and
these parameters can be configured in yaml
* Simple form validation, `required` input cannot be empty
* Add a route `/actions/run`, and an `actions.Run` method to handle
* Add `WorkflowDispatchPayload` struct to pass the Webhook event payload
to the runner when triggered, this payload carries the `inputs` values
and other fields, doc: [workflow_dispatch
payload](https://docs.github.com/en/webhooks/webhook-events-and-payloads#workflow_dispatch)

Other PRs
* the `Workflow.WorkflowDispatchConfig()` method still return non-nil
when workflow_dispatch is not defined. I submitted a PR
https://gitea.com/gitea/act/pulls/85 to fix it. Still waiting for them
to process.

Behavior should be same with github, but may cause confusion. Here's a
quick reminder.
*
[Doc](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch)
Said: This event will `only` trigger a workflow run if the workflow file
is `on the default branch`.
* If the workflow yaml file only exists in a non-default branch, it
cannot be triggered. (It will not even show up in the workflow list)
* If the same workflow yaml file exists in each branch at the same time,
the version of the default branch is used. Even if `Use workflow from`
selects another branch


![image](https://github.com/go-gitea/gitea/assets/3114995/4bf596f3-426b-48e8-9b8f-0f6d18defd79)
```yaml
name: Docker Image CI

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'
        type: choice
        options:
        - info
        - warning
        - debug
      tags:
        description: 'Test scenario tags'
        required: false
        type: boolean
      boolean_default_true:
        description: 'Test scenario tags'
        required: true
        type: boolean
        default: true
      boolean_default_false:
        description: 'Test scenario tags'
        required: false
        type: boolean
        default: false
      environment:
        description: 'Environment to run tests against'
        type: environment
        required: true
        default: 'environment values'
      number_required_1:
        description: 'number '
        type: number
        required: true
        default: '100'
      number_required_2:
        description: 'number'
        type: number
        required: true
        default: '100'
      number_required_3:
        description: 'number'
        type: number
        required: true
        default: '100'
      number_1:
        description: 'number'
        type: number
        required: false
      number_2:
        description: 'number'
        type: number
        required: false
      number_3:
        description: 'number'
        type: number
        required: false

env:
  inputs_logLevel:              ${{ inputs.logLevel }}
  inputs_tags:                  ${{ inputs.tags }}
  inputs_boolean_default_true:  ${{ inputs.boolean_default_true }}
  inputs_boolean_default_false: ${{ inputs.boolean_default_false }}
  inputs_environment:           ${{ inputs.environment }}
  inputs_number_1:              ${{ inputs.number_1  }}
  inputs_number_2:              ${{ inputs.number_2  }}
  inputs_number_3:              ${{ inputs.number_3  }}
  inputs_number_required_1:     ${{ inputs.number_required_1  }}
  inputs_number_required_2:     ${{ inputs.number_required_2  }}
  inputs_number_required_3:     ${{ inputs.number_required_3  }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: ls -la
      - run: env | grep inputs
      - run: echo ${{ inputs.logLevel }}
      - run: echo ${{ inputs.boolean_default_false }}
```

![image](https://github.com/go-gitea/gitea/assets/3114995/a58a842d-a0ff-4618-bc6d-83a9596d07c8)

![image](https://github.com/go-gitea/gitea/assets/3114995/44a7cca5-7bd4-42a9-8723-91751a501c88)

---------

Co-authored-by: TKaxv_7S <954067342@qq.com>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Denys Konovalov <kontakt@denyskon.de>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2024-08-18 22:38:40 -04:00
..
admin Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
comp Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
autofocus-end.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
captcha.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
citation.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
clipboard.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
code-frequency.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
codeeditor.ts Code editor theme enhancements (#31629) 2024-07-14 23:22:48 +00:00
colorpicker.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-button.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-fetch-action.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-form.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-issue-list.test.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-issue-list.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-organization.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
common-page.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
contextpopup.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
contributors.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
copycontent.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
dropzone.ts Add types to various low-level functions (#31781) 2024-08-10 09:46:48 +00:00
emoji.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
eventsource.sharedworker.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
file-fold.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
heatmap.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
imagediff.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
install.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
notification.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
oauth2-settings.ts add skip secondary authorization option for public oauth2 clients (#31454) 2024-07-19 14:28:30 -04:00
org-team.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
pull-view-file.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
recent-commits.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-branch.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-code.test.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-code.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-commit.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-common.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-diff-commit.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-diff-commitselect.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-diff-filetree.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-diff.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-editor.ts Enable `no-jquery/no-parse-html-literal` and fix violation (#31684) 2024-07-27 14:44:41 +00:00
repo-findfile.test.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-findfile.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-graph.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-home.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-issue-content.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-issue-edit.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-issue-list.ts Add types to various low-level functions (#31781) 2024-08-10 09:46:48 +00:00
repo-issue-pr-form.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-issue-pr-status.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-issue.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-legacy.ts Actions support workflow dispatch event (#28163) 2024-08-18 22:38:40 -04:00
repo-migrate.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-migration.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-projects.ts Add types to various low-level functions (#31781) 2024-08-10 09:46:48 +00:00
repo-release.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-search.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-settings.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-template.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-unicode-escape.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
repo-wiki.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
scoped-access-token.ts fix the component of access token list not mounted (#31824) 2024-08-16 17:37:36 +00:00
sshkey-helper.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
stopwatch.ts Add types to various low-level functions (#31781) 2024-08-10 09:46:48 +00:00
tablesort.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
tribute.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
user-auth-webauthn.ts Run `detectWebAuthnSupport` only if necessary (#31691) 2024-07-25 23:26:41 +00:00
user-auth.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00
user-settings.ts Convert frontend code to typescript (#31559) 2024-07-07 15:32:30 +00:00