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  
				
					
						
							
							
								 
						
							
								e81ccc406b 
								
							 
						 
						
							
							
								
								Implement FSFE REUSE for golang files ( #21840 )  
							
							... 
							
							
							
							Change all license headers to comply with REUSE specification.
Fix  #16132 
Co-authored-by: flynnnnnnnnnn <flynnnnnnnnnn@github>
Co-authored-by: John Olheiser <john.olheiser@gmail.com> 
							
						 
						
							2022-11-27 18:20:29 +00:00  
				
					
						
							
							
								 
						
							
								34283a74e8 
								
							 
						 
						
							
							
								
								Allow detect whether it's in a database transaction for a context.Context ( #21756 )  
							
							... 
							
							
							
							Fix  #19513 
This PR introduce a new db method `InTransaction(context.Context)`,
and also builtin check on `db.TxContext` and `db.WithTx`.
There is also a new method `db.AutoTx` has been introduced but could be used by other PRs.
`WithTx` will always open a new transaction, if a transaction exist in context, return an error.
`AutoTx` will try to open a new transaction if no transaction exist in context.
That means it will always enter a transaction if there is no error.
Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: 6543 <6543@obermui.de> 
						
							2022-11-12 21:18:50 +01:00  
				
					
						
							
							
								 
						
							
								716fcfcf72 
								
							 
						 
						
							
							
								
								Make every not exist error unwrappable to a fs.ErrNotExist ( #20891 )  
							
							... 
							
							
							
							A lot of our code is repeatedly testing if individual errors are
specific types of Not Exist errors. This is repetitative and unnecesary.
`Unwrap() error` provides a common way of labelling an error as a
NotExist error and we can/should use this.
This PR has chosen to use the common `io/fs` errors e.g.
`fs.ErrNotExist` for our errors. This is in some ways not completely
correct as these are not filesystem errors but it seems like a
reasonable thing to do and would allow us to simplify a lot of our code
to `errors.Is(err, fs.ErrNotExist)` instead of
`package.IsErr...NotExist(err)`
I am open to suggestions to use a different base error - perhaps
`models/db.ErrNotExist` if that would be felt to be better.
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: delvh <dev.lh@web.de> 
							
						 
						
							2022-10-18 07:50:37 +02:00  
				
					
						
							
							
								 
						
							
								52c2e82813 
								
							 
						 
						
							
							
								
								Custom regexp external issues ( #17624 )  
							
							... 
							
							
							
							* Implement custom regular expression for external issue tracking.
Signed-off-by: Alexander Beyn <malex@fatelectrons.org>
* Fix syntax/style
* Update repo.go
* Set metas['regexp']
* gofmt
* fix some tests
* fix more tests
* refactor frontend
* use LRU cache for regexp
* Update modules/markup/html_internal_test.go
Co-authored-by: Alexander Beyn <malex@fatelectrons.org>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> 
							
						 
						
							2022-06-10 13:39:53 +08:00  
				
					
						
							
							
								 
						
							
								0c759fd4de 
								
							 
						 
						
							
							
								
								feat: add DEFAULT_MERGE_STYLE to `repository.pull-request` section for repo init ( #19751 )  
							
							
							
						 
						
							2022-06-02 23:45:54 -04:00  
				
					
						
							
							
								 
						
							
								fd7d83ace6 
								
							 
						 
						
							
							
								
								Move almost all functions' parameter db.Engine to context.Context ( #19748 )  
							
							... 
							
							
							
							* Move almost all functions' parameter db.Engine to context.Context
* remove some unnecessary wrap functions 
							
						 
						
							2022-05-20 22:08:52 +08:00  
				
					
						
							
							
								 
						
							
								368baf9e77 
								
							 
						 
						
							
							
								
								Use Vue to refactor pull merge UI ( #19650 )  
							
							... 
							
							
							
							* Use Vue to refactor pull merge UI
* add comments
* fix comments
* small fine tune
* fix tests
* adopt new pull default messages
* clean up
Co-authored-by: 6543 <6543@obermui.de> 
							
						 
						
							2022-05-12 21:39:02 +08:00  
				
					
						
							
							
								 
						
							
								d4834071da 
								
							 
						 
						
							
							
								
								Repository level enable package or disable ( #19323 )  
							
							
							
						 
						
							2022-05-08 17:51:50 +02:00  
				
					
						
							
							
								 
						
							
								4344a64107 
								
							 
						 
						
							
							
								
								Allow custom default merge message with .gitea/default_merge_message/<merge_style>_TEMPLATE.md ( #18177 )  
							
							... 
							
							
							
							* Allow custom default merge message with .gitea/MERGE_MESSAGE_<merge_style>_TEMPLATE.md
* Some improvements
* Follow some advices
* Fix bug
* Fix bug
* Fix lint
* Fix close comment
* Fix test
* Fix and docs
* Improve codes
* Update docs and remove unnecessary variables
* return error for GetDefaultMergeMessage
* Fix test
* improve code
* ignore unknow unit type
* return error for GetDefaultMergeMessage
* Update services/pull/merge.go
* Some improvements
* Follow some advices
* Fix bug
* Fix lint
* Improve codes
* Update docs and remove unnecessary variables
* return error for GetDefaultMergeMessage
* improve code
* Handle deleted HeadRepo in GetDefaultMergeMessage
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix test
* Fix test
Co-authored-by: zeripath <art27@cantab.net> 
							
						 
						
							2022-05-08 20:32:45 +08:00  
				
					
						
							
							
								 
						
							
								5184c83f6b 
								
							 
						 
						
							
							
								
								Add config option to disable "Update branch by rebase" ( #18745 )  
							
							
							
						 
						
							2022-03-04 03:30:49 -05:00  
				
					
						
							
							
								 
						
							
								de8e3948a5 
								
							 
						 
						
							
							
								
								Refactor auth package ( #17962 )  
							
							
							
						 
						
							2022-01-02 21:12:35 +08:00  
				
					
						
							
							
								 
						
							
								5723240490 
								
							 
						 
						
							
							
								
								Some repository refactors ( #17950 )  
							
							... 
							
							
							
							* some repository refactors
* remove unnecessary code
* Fix test
* Remove unnecessary banner 
							
						 
						
							2021-12-12 23:48:20 +08:00  
				
					
						
							
							
								 
						
							
								719bddcd76 
								
							 
						 
						
							
							
								
								Move repository model into models/repo ( #17933 )  
							
							... 
							
							
							
							* Some refactors related repository model
* Move more methods out of repository
* Move repository into models/repo
* Fix test
* Fix test
* some improvements
* Remove unnecessary function 
							
						 
						
							2021-12-10 09:27:50 +08:00