gitea/modules/structs
胖梁 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
..
activity.go Document possible action types for the user activity feed API (#31196) 2024-06-03 13:40:48 +00:00
activitypub.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
admin_user.go chore(api): support ignore password if login source type is LDAP for creating user API (#28491) 2023-12-19 02:32:45 +00:00
attachment.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
commit_status.go Restore warning commit status (#27504) 2023-10-08 22:16:06 +00:00
commit_status_test.go refactor improve NoBetterThan (#26126) 2023-07-26 08:52:07 +00:00
cron.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
doc.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
fork.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
git_blob.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
git_hook.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
hook.go Actions support workflow dispatch event (#28163) 2024-08-18 22:38:40 -04:00
issue.go Support issue template assignees (#31083) 2024-08-12 16:00:40 +08:00
issue_comment.go Add API management for issue/pull and comment attachments (#21783) 2022-12-09 14:35:56 +08:00
issue_label.go Support using label names when changing issue labels (#30943) 2024-05-13 04:28:53 +00:00
issue_milestone.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
issue_reaction.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
issue_stopwatch.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
issue_test.go Support issue template assignees (#31083) 2024-08-12 16:00:40 +08:00
issue_tracked_time.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
lfs_lock.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
mirror.go Fix push mirror, wrong timestamp format (#27153) 2023-09-23 12:15:05 +00:00
miscellaneous.go Fix missing images in editor preview due to wrong links (#31299) 2024-06-17 14:16:14 +08:00
nodeinfo.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
notifications.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
org.go Allow Organisations to have a E-Mail (#25082) 2023-07-25 08:26:27 +00:00
org_member.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
org_team.go Increase max length of org team names from 30 to 255 characters (#31410) 2024-06-19 10:36:09 -04:00
package.go Fix package webhook (#27839) 2023-10-31 04:43:38 +00:00
pull.go Fix null requested_reviewer from API (#31773) 2024-08-05 10:59:53 +00:00
pull_review.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
release.go add Upload URL to release API (#26663) 2023-08-24 10:36:10 +00:00
repo.go Add topics for repository API (#31127) 2024-05-28 10:03:54 +00:00
repo_actions.go Add API endpoints for getting action jobs status (#26673) 2024-05-01 09:40:23 +08:00
repo_branch.go Allow force push to protected branches (#28086) 2024-07-05 18:21:56 +00:00
repo_collaborator.go Add permission description for API to add repo collaborator (#31744) 2024-08-01 09:33:40 +00:00
repo_commit.go Add file status for API "Get a single commit from a repository" (#16205) (#25831) 2023-07-20 16:35:47 +08:00
repo_compare.go feat(api): implement branch/commit comparison API (#30349) 2024-04-16 11:45:04 +08:00
repo_file.go Refactor "Content" for file uploading (#25851) 2023-07-18 18:14:47 +00:00
repo_key.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
repo_note.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
repo_refs.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
repo_tag.go Add tag protection via rest api #17862 (#31295) 2024-06-14 18:56:10 +02:00
repo_topic.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
repo_tree.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
repo_watch.go Replace `interface{}` with `any` (#25686) 2023-07-04 18:36:08 +00:00
repo_wiki.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
secret.go refactor(API): refactor secret creation and update functionality (#26751) 2023-08-28 13:08:19 +08:00
settings.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
status.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
task.go Make repo migration cancelable and fix various bugs (#24605) 2023-05-11 08:25:46 +00:00
user.go Make gitea webhooks openproject compatible (#28435) 2024-05-26 04:08:13 +00:00
user_app.go add skip secondary authorization option for public oauth2 clients (#31454) 2024-07-19 14:28:30 -04:00
user_email.go add admin API email endpoints (#22792) 2023-03-14 03:54:40 -04:00
user_gpgkey.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
user_key.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
variable.go Add API for `Variables` (#29520) 2024-03-28 20:40:35 +00:00
visible_type.go change org_type.go to visible_type.go and fix the notes (#22752) 2023-02-09 06:40:34 +00:00