TheFox0x7 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							ee3c82f874 
							
						 
					 
					
						
						
							
							Enable addtional linters ( #34085 )  
						
						... 
						
						
						
						enable mirror, usestdlibbars and perfsprint 
part of: https://github.com/go-gitea/gitea/issues/34083 
---------
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> 
						
						
					 
					
						2025-04-01 10:14:01 +00:00 
						 
				 
			
				
					
						
							
							
								yp05327 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							32d45ee069 
							
						 
					 
					
						
						
							
							Update status check for all supported on.pull_request.types in Gitea ( #33117 )  
						
						... 
						
						
						
						Thanks @Zettat123
Follow #33116 
Fix  #33051 
on.pull_request.types doc:
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request 
on.pull_request.types added in this PR:
```
assigned, unassigned, review_requested, review_request_removed, milestoned, demilestoned, labeled, unlabeled
```
unsupported types in Gitea:
```
// Unsupported activity types:
// converted_to_draft, ready_for_review, locked, unlocked, auto_merge_enabled, auto_merge_disabled, enqueued, dequeued
```
TODO:
- [x] add test 
						
						
					 
					
						2025-01-08 01:58:47 +08:00 
						 
				 
			
				
					
						
							
							
								Lunny Xiao 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							331e878e81 
							
						 
					 
					
						
						
							
							Add new event commit status creation and webhook implementation ( #27151 )  
						
						... 
						
						
						
						This PR introduces a new event which is similar as Github's. When a new
commit status submitted, the event will be trigged. That means, now we
can receive all feedback from CI/CD system in webhooks or other notify
systems.
ref:
https://docs.github.com/en/webhooks/webhook-events-and-payloads#status 
Fix  #20749  
						
						
					 
					
						2024-11-07 06:41:49 +00:00 
						 
				 
			
				
					
						
							
							
								Zettat123 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4b376a0ed9 
							
						 
					 
					
						
						
							
							Support pull_request_target event for commit status ( #31703 )  
						
						... 
						
						
						
						Fix [act_runner #573 ](https://gitea.com/gitea/act_runner/issues/573 )
Before:

After:
 
						
						
					 
					
						2024-07-26 18:00:07 +08:00 
						 
				 
			
				
					
						
							
							
								Lunny Xiao 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							fc34481d05 
							
						 
					 
					
						
						
							
							Add commit status summary table to reduce query from commit status table ( #30223 )  
						
						... 
						
						
						
						This PR adds a new table named commit status summary to reduce queries
from the commit status table. After this change, commit status summary
table will be used for the final result, commit status table will be for
details.
---------
Co-authored-by: Jason Song <i@wolfogre.com> 
						
						
					 
					
						2024-04-12 09:41:50 +08:00 
						 
				 
			
				
					
						
							
							
								Lunny Xiao 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							f8ab9dafb7 
							
						 
					 
					
						
						
							
							Use db.ListOptionsAll instead of db.ListOptions{ListAll: true} ( #29995 )  
						
						
						
						
					 
					
						2024-03-22 13:53:52 +01:00 
						 
				 
			
				
					
						
							
							
								KN4CK3R 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							7e8ff70940 
							
						 
					 
					
						
						
							
							Show commit status for releases ( #29149 )  
						
						... 
						
						
						
						Fixes  #29082 
 
					
						2024-02-19 10:27:05 +00:00 
						 
				 
			
				
					
						
							
							
								Lunny Xiao 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4eb2a29910 
							
						 
					 
					
						
						
							
							Improve ObjectFormat interface ( #28496 )  
						
						... 
						
						
						
						The 4 functions are duplicated, especially as interface methods. I think
we just need to keep `MustID` the only one and remove other 3.
```
MustID(b []byte) ObjectID
MustIDFromString(s string) ObjectID
NewID(b []byte) (ObjectID, error)
NewIDFromString(s string) (ObjectID, error)
```
Introduced the new interfrace method `ComputeHash` which will replace
the interface `HasherInterface`. Now we don't need to keep two
interfaces.
Reintroduced `git.NewIDFromString` and `git.MustIDFromString`. The new
function will detect the hash length to decide which objectformat of it.
If it's 40, then it's SHA1. If it's 64, then it's SHA256. This will be
right if the commitID is a full one. So the parameter should be always a
full commit id.
@AdamMajer Please review. 
						
						
					 
					
						2023-12-19 07:20:47 +00:00 
						 
				 
			
				
					
						
							
							
								Adam Majer 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							cbf923e87b 
							
						 
					 
					
						
						
							
							Abstract hash function usage ( #28138 )  
						
						... 
						
						
						
						Refactor Hash interfaces and centralize hash function. This will allow
easier introduction of different hash function later on.
This forms the "no-op" part of the SHA256 enablement patch. 
						
						
					 
					
						2023-12-13 21:02:00 +00:00 
						 
				 
			
				
					
						
							
							
								caicandong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							983167cf49 
							
						 
					 
					
						
						
							
							Fix pull request check list is limited ( #26179 )  
						
						... 
						
						
						
						In the original implementation, we can only get the first 30 records of
the commit status (the default paging size), if the commit status is
more than 30, it will lead to the bug #25990 . I made the following two
changes.
- On the page, use the ` db.ListOptions{ListAll: true}` parameter
instead of `db.ListOptions{}`
- The `GetLatestCommitStatus` function makes a determination as to
whether or not a pager is being used.
fixed  #25990  
						
						
					 
					
						2023-07-31 02:21:09 +00:00 
						 
				 
			
				
					
						
							
							
								caicandong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							840830b655 
							
						 
					 
					
						
						
							
							Remove commit status running and warning to align GitHub ( #25839 )  
						
						... 
						
						
						
						Fix  #25776 . Close  #25826 .
In the discussion of #25776 , @wolfogre's suggestion was to remove the
commit status of `running` and `warning` to keep it consistent with
github.
references:
-
https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#about-commit-statuses 
## ⚠️  BREAKING ⚠️ 
So the commit status of Gitea will be consistent with GitHub, only
`pending`, `success`, `error` and `failure`, while `warning` and
`running` are not supported anymore.
---------
Co-authored-by: Jason Song <i@wolfogre.com> 
					
						2023-07-21 16:24:36 +08:00 
						 
				 
			
				
					
						
							
							
								Jason Song 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							cbe2e99aed 
							
						 
					 
					
						
						
							
							Handle canceled workflow as a warning instead of a fail ( #24282 )  
						
						... 
						
						
						
						Follow what Drone CI does:
 
						
						
					 
					
						2023-04-23 14:41:55 -04:00 
						 
				 
			
				
					
						
							
							
								Jason Song 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							8cbc4a367d 
							
						 
					 
					
						
						
							
							Use actions job link as commit status URL instead of run link ( #24023 )  
						
						... 
						
						
						
						A commit status is bound to a job, not a run.
---------
Co-authored-by: silverwind <me@silverwind.io> 
						
						
					 
					
						2023-04-10 06:40:30 -04:00 
						 
				 
			
				
					
						
							
							
								Jason Song 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							3e8db31a5b 
							
						 
					 
					
						
						
							
							Refactor commit status for Actions jobs ( #23786 )  
						
						... 
						
						
						
						Before:
<img width="353" alt="xnip_230329_163852"
src="https://user-images.githubusercontent.com/9418365/228479807-424452df-10fa-45cf-ae4b-09939c0ed54c.png ">
After:
<img width="508" alt="xnip_230329_163358"
src="https://user-images.githubusercontent.com/9418365/228479923-537b54fe-9564-4105-a068-bcc75fa2a7ea.png ">
Highlights:
- Treat `StatusSkipped` as `CommitStatusSuccess` instead of
`CommitStatusFailure`, so it fixed  #23599 .
- Use the bot user `gitea-actions` instead of the trigger as the creator
of commit status.
- New format `<run_name> / <job_name> / (<event>)` for the context of
commit status to avoid conflicts.
- Add descriptions for commit status.
- Add the missing calls to `CreateCommitStatus`.
- Refactor `CreateCommitStatus` to make it easier to use. 
						
						
					 
					
						2023-03-29 11:27:37 -04:00 
						 
				 
			
				
					
						
							
							
								sillyguodong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							023e61e678 
							
						 
					 
					
						
						
							
							Create commit status when event is pull_request_sync ( #23683 )  
						
						... 
						
						
						
						Fix : #23674 
If the type of `hook_event` is `pull_request_sync`, also need to insert
a record of `commit_status` into DB.
Because `pull_request` event and `pull_request_sync` event have the same
payload, so the code is reusable.
Screenshot:
 
					
						2023-03-24 16:05:48 -04:00 
						 
				 
			
				
					
						
							
							
								sillyguodong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							5eea61dbc8 
							
						 
					 
					
						
						
							
							Fix missing commit status in PR which from forked repo ( #23351 )  
						
						... 
						
						
						
						close : #23347 
### Reference and Inference
According to Github REST API
[doc](https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#list-commit-statuses-for-a-reference ):
1. The `Drone CI` that can create some commit status by
[API](https://docs.github.com/en/rest/commits/statuses?apiVersion=2022-11-28#create-a-commit-status )
is enabled in `go-gitea/gitea`. So I tried to call the API to get a
commit status list of a PR which is commited to upstream
repo(`go-gitea/gitea`). As a result, the API returned a array of commit
status.

2. Then I tried to call the API to get commit status list of the
reference which of the `SHA` is the same as step 1 in the repo which is
forked from `go-gitea/gitea`. But I got a empty array.

So, I believe it that:
1. The commit status is not shared between upstream repo and forked
repo.
2. The coomit status is bound to a repo that performs actions. (Gitea's
logic is the same)
### Cause
During debugging, I found it that commit status are not stored in the DB
as expected.
So, I located the following code:
8cadd51bf2/services/actions/commit_status.go (L18-L26)https://user-images.githubusercontent.com/33891828/223939339-dadf539c-1fdd-40c4-96e9-2e4fa733f531.png )


### Other 
In this PR, I also fix the problem of missing icon which represents
running in PRs list.

 
					
						2023-03-13 16:05:19 -05:00 
						 
				 
			
				
					
						
							
							
								Jason Song 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							47b912cd52 
							
						 
					 
					
						
						
							
							Avoid panic caused by broken payload when creating commit status ( #23216 )  
						
						... 
						
						
						
						When creating commit status for Actons jobs, a payload with nil
`HeadCommit` will cause panic.
Reported at:
https://gitea.com/gitea/act_runner/issues/28#issuecomment-732166 
Although the `HeadCommit` probably can not be nil after #23215 ,
`CreateCommitStatus` should protect itself, to avoid being broken in the
future.
In addition, it's enough to print error log instead of returning err
when `CreateCommitStatus` failed.
---------
Co-authored-by: delvh <dev.lh@web.de> 
						
						
					 
					
						2023-03-04 02:12:37 -05:00 
						 
				 
			
				
					
						
							
							
								wxiaoguang 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							e9288c2477 
							
						 
					 
					
						
						
							
							Fix improper HTMLURL usages in Go code ( #22839 )  
						
						... 
						
						
						
						In Go code, HTMLURL should be only used for external systems, like
API/webhook/mail/notification, etc.
If a URL is used by `Redirect` or rendered in a template, it should be a
relative URL (aka `Link()` in Gitea)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> 
						
						
					 
					
						2023-02-11 14:34:11 +08:00 
						 
				 
			
				
					
						
							
							
								Jason Song 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4011821c94 
							
						 
					 
					
						
						
							
							Implement actions ( #21937 )  
						
						... 
						
						
						
						Close  #13539 .
Co-authored by: @lunny @appleboy @fuxiaohei and others.
Related projects:
- https://gitea.com/gitea/actions-proto-def 
- https://gitea.com/gitea/actions-proto-go 
- https://gitea.com/gitea/act 
- https://gitea.com/gitea/act_runner 
### Summary
The target of this PR is to bring a basic implementation of "Actions",
an internal CI/CD system of Gitea. That means even though it has been
merged, the state of the feature is **EXPERIMENTAL**, and please note
that:
- It is disabled by default;
- It shouldn't be used in a production environment currently;
- It shouldn't be used in a public Gitea instance currently;
- Breaking changes may be made before it's stable.
**Please comment on #13539  if you have any different product design
ideas**, all decisions reached there will be adopted here. But in this
PR, we don't talk about **naming, feature-creep or alternatives**.
### ⚠️  Breaking
`gitea-actions` will become a reserved user name. If a user with the
name already exists in the database, it is recommended to rename it.
### Some important reviews
- What is `DEFAULT_ACTIONS_URL` in `app.ini` for?
  - https://github.com/go-gitea/gitea/pull/21937#discussion_r1055954954 
- Why the api for runners is not under the normal `/api/v1` prefix?
  - https://github.com/go-gitea/gitea/pull/21937#discussion_r1061173592 
- Why DBFS?
  - https://github.com/go-gitea/gitea/pull/21937#discussion_r1061301178 
- Why ignore events triggered by `gitea-actions` bot?
  - https://github.com/go-gitea/gitea/pull/21937#discussion_r1063254103 
- Why there's no permission control for actions?
  - https://github.com/go-gitea/gitea/pull/21937#discussion_r1090229868 
### What it looks like
<details>
#### Manage runners
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205870657-c72f590e-2e08-4cd4-be7f-2e0abb299bbf.png ">
#### List runs
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205872794-50fde990-2b45-48c1-a178-908e4ec5b627.png ">
#### View logs
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205872501-9b7b9000-9542-4991-8f55-18ccdada77c3.png ">
</details>
### How to try it
<details>
#### 1. Start Gitea
Clone this branch and [install from
source](https://docs.gitea.io/en-us/install-from-source ).
Add additional configurations in `app.ini` to enable Actions:
```ini
[actions]
ENABLED = true
```
Start it.
If all is well, you'll see the management page of runners:
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205877365-8e30a780-9b10-4154-b3e8-ee6c3cb35a59.png ">
#### 2. Start runner
Clone the [act_runner](https://gitea.com/gitea/act_runner ), and follow
the
[README](https://gitea.com/gitea/act_runner/src/branch/main/README.md )
to start it.
If all is well, you'll see a new runner has been added:
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205878000-216f5937-e696-470d-b66c-8473987d91c3.png ">
#### 3. Enable actions for a repo
Create a new repo or open an existing one, check the `Actions` checkbox
in settings and submit.
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205879705-53e09208-73c0-4b3e-a123-2dcf9aba4b9c.png ">
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205879383-23f3d08f-1a85-41dd-a8b3-54e2ee6453e8.png ">
If all is well, you'll see a new tab "Actions":
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205881648-a8072d8c-5803-4d76-b8a8-9b2fb49516c1.png ">
#### 4. Upload workflow files
Upload some workflow files to `.gitea/workflows/xxx.yaml`, you can
follow the [quickstart](https://docs.github.com/en/actions/quickstart )
of GitHub Actions. Yes, Gitea Actions is compatible with GitHub Actions
in most cases, you can use the same demo:
```yaml
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 
on: [push]
jobs:
  Explore-GitHub-Actions:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉  The job was automatically triggered by a ${{ github.event_name }} event."
      - run: echo "🐧  This job is now running on a ${{ runner.os }} server hosted by GitHub!"
      - run: echo "🔎  The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
      - name: Check out repository code
        uses: actions/checkout@v3
      - run: echo "💡  The ${{ github.repository }} repository has been cloned to the runner."
      - run: echo "🖥️  The workflow is now ready to test your code on the runner."
      - name: List files in the repository
        run: |
          ls ${{ github.workspace }}
      - run: echo "🍏  This job's status is ${{ job.status }}."
```
If all is well, you'll see a new run in `Actions` tab:
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205884473-79a874bc-171b-4aaf-acd5-0241a45c3b53.png ">
#### 5. Check the logs of jobs
Click a run and you'll see the logs:
<img width="1792" alt="image"
src="https://user-images.githubusercontent.com/9418365/205884800-994b0374-67f7-48ff-be9a-4c53f3141547.png ">
#### 6. Go on
You can try more examples in [the
documents](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions )
of GitHub Actions, then you might find a lot of bugs.
Come on, PRs are welcome.
</details>
See also: [Feature Preview: Gitea
Actions](https://blog.gitea.io/2022/12/feature-preview-gitea-actions/ )
---------
Co-authored-by: a1012112796 <1012112796@qq.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: ChristopherHX <christopher.homberger@web.de>
Co-authored-by: John Olheiser <john.olheiser@gmail.com> 
					
						2023-01-31 09:45:19 +08:00