Zettat123 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							48e5a74f21 
							
						 
					 
					
						
						
							
							Support pull_request_target event ( #25229 )  
						
						... 
						
						
						
						Fix  #25088 
This PR adds the support for
[`pull_request_target`](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target )
workflow trigger. `pull_request_target` is similar to `pull_request`,
but the workflow triggered by the `pull_request_target` event runs in
the context of the base branch of the pull request rather than the head
branch. Since the workflow from the base is considered trusted, it can
access the secrets and doesn't need approvals to run. 
					
						2023-06-26 14:33:18 +08:00 
						 
				 
			
				
					
						
							
							
								sillyguodong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							35a653d7ed 
							
						 
					 
					
						
						
							
							Support configuration variables on Gitea Actions ( #24724 )  
						
						... 
						
						
						
						Co-Author: @silverwind @wxiaoguang 
Replace: #24404 
See:
- [defining configuration variables for multiple
workflows](https://docs.github.com/en/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows )
- [vars
context](https://docs.github.com/en/actions/learn-github-actions/contexts#vars-context )
Related to:
- [x] protocol: https://gitea.com/gitea/actions-proto-def/pulls/7 
- [x] act_runner: https://gitea.com/gitea/act_runner/pulls/157 
- [x] act: https://gitea.com/gitea/act/pulls/43 
#### Screenshoot
Create Variable:


Workflow:
```yaml
  test_vars:
    runs-on: ubuntu-latest
    steps:
      - name: Print Custom Variables
        run: echo "${{ vars.test_key }}"
      - name: Try to print a non-exist var
        run: echo "${{ vars.NON_EXIST_VAR }}"
```
Actions Log:

---
This PR just implement the org / user (depends on the owner of the
current repository) and repo level variables, The Environment level
variables have not been implemented.
Because
[Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#about-environments )
is a module separate from `Actions`. Maybe it would be better to create
a new PR to do it.
---------
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Giteabot <teabot@gitea.io> 
						
						
					 
					
						2023-06-20 22:54:15 +00:00 
						 
				 
			
				
					
						
							
							
								Daniel Wolf 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							bd2e3226be 
							
						 
					 
					
						
						
							
							Fix incorrect actions ref_name ( #25358 )  
						
						... 
						
						
						
						Fix  #25357  .
Just a simple fix the result of `${{ gitea.ref_name }}` to show the
shortened name rather than the full ref. 
					
						2023-06-19 17:32:09 +08:00 
						 
				 
			
				
					
						
							
							
								wxiaoguang 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4e2f1ee58d 
							
						 
					 
					
						
						
							
							Refactor web package and context package ( #25298 )  
						
						... 
						
						
						
						1. The "web" package shouldn't depends on "modules/context" package,
instead, let each "web context" register themselves to the "web"
package.
2. The old Init/Free doesn't make sense, so simplify it
* The ctx in "Init(ctx)" is never used, and shouldn't be used that way
* The "Free" is never called and shouldn't be called because the SSPI
instance is shared
---------
Co-authored-by: Giteabot <teabot@gitea.io> 
						
						
					 
					
						2023-06-18 09:59:09 +02:00 
						 
				 
			
				
					
						
							
							
								sillyguodong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							8228751c55 
							
						 
					 
					
						
						
							
							Support changing labels of Actions runner without re-registration ( #24806 )  
						
						... 
						
						
						
						close  #24540 
related:
- Protocol: https://gitea.com/gitea/actions-proto-def/pulls/9 
- Runner side: https://gitea.com/gitea/act_runner/pulls/201 
changes:
- Add column of `labels` to table `action_runner`, and combine the value
of `agent_labels` and `custom_labels` column to `labels` column.
- Store `labels` when registering `act_runner`.
- Update `labels` when `act_runner` starting and calling `Declare`.
- Users cannot modify the `custom labels` in edit page any more.
other changes:
- Store `version` when registering `act_runner`.
- If runner is latest version, parse version from `Declare`. But older
version runner still parse version from request header. 
					
						2023-06-13 22:28:31 +08:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							419804fd4d 
							
						 
					 
					
						
						
							
							Fix compatible for webhook ref type ( #25195 )  
						
						... 
						
						
						
						Fix  #25185  
Caused by #24634  
					
						2023-06-13 06:05:28 +00:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							e4922d484b 
							
						 
					 
					
						
						
							
							Fix ref type error ( #24941 )  
						
						
						
						
					 
					
						2023-05-26 15:00:27 +08:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							f9cfd6ce5b 
							
						 
					 
					
						
						
							
							Use the type RefName for all the needed places and fix pull mirror sync bugs ( #24634 )  
						
						... 
						
						
						
						This PR replaces all string refName as a type `git.RefName` to make the
code more maintainable.
Fix  #15367 
Replaces #23070  
It also fixed a bug that tags are not sync because `git remote --prune
origin` will not remove local tags if remote removed.
We in fact should use `git fetch --prune --tags origin` but not `git
remote update origin` to do the sync.
Some answer from ChatGPT as ref.
> If the git fetch --prune --tags command is not working as expected,
there could be a few reasons why. Here are a few things to check:
> 
>Make sure that you have the latest version of Git installed on your
system. You can check the version by running git --version in your
terminal. If you have an outdated version, try updating Git and see if
that resolves the issue.
> 
>Check that your Git repository is properly configured to track the
remote repository's tags. You can check this by running git config
--get-all remote.origin.fetch and verifying that it includes
+refs/tags/*:refs/tags/*. If it does not, you can add it by running git
config --add remote.origin.fetch "+refs/tags/*:refs/tags/*".
> 
>Verify that the tags you are trying to prune actually exist on the
remote repository. You can do this by running git ls-remote --tags
origin to list all the tags on the remote repository.
> 
>Check if any local tags have been created that match the names of tags
on the remote repository. If so, these local tags may be preventing the
git fetch --prune --tags command from working properly. You can delete
local tags using the git tag -d command.
---------
Co-authored-by: delvh <dev.lh@web.de> 
						
						
					 
					
						2023-05-26 01:04:48 +00:00 
						 
				 
			
				
					
						
							
							
								wxiaoguang 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							6b33152b7d 
							
						 
					 
					
						
						
							
							Decouple the different contexts from each other ( #24786 )  
						
						... 
						
						
						
						Replace #16455 
Close  #21803 
Mixing different Gitea contexts together causes some problems:
1. Unable to respond proper content when error occurs, eg: Web should
respond HTML while API should respond JSON
2. Unclear dependency, eg: it's unclear when Context is used in
APIContext, which fields should be initialized, which methods are
necessary.
To make things clear, this PR introduces a Base context, it only
provides basic Req/Resp/Data features.
This PR mainly moves code. There are still many legacy problems and
TODOs in code, leave unrelated changes to future PRs. 
						
						
					 
					
						2023-05-21 09:50:53 +08:00 
						 
				 
			
				
					
						
							
							
								FuXiaoHei 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c757765a9e 
							
						 
					 
					
						
						
							
							Implement actions artifacts ( #22738 )  
						
						... 
						
						
						
						Implement action artifacts server api.
This change is used for supporting
https://github.com/actions/upload-artifact  and
https://github.com/actions/download-artifact  in gitea actions. It can
run sample workflow from doc
https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts .
The api design is inspired by
https://github.com/nektos/act/blob/master/pkg/artifacts/server.go  and
includes some changes from gitea internal structs and methods.
Actions artifacts contains two parts:
- Gitea server api and storage (this pr implement basic design without
some complex cases supports)
- Runner communicate with gitea server api (in comming)
Old pr https://github.com/go-gitea/gitea/pull/22345  is outdated after
actions merged. I create new pr from main branch.

Add artifacts list in actions workflow page. 
						
						
					 
					
						2023-05-19 21:37:57 +08:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							2d0ff00823 
							
						 
					 
					
						
						
							
							Improve updating Actions tasks ( #24600 )  
						
						... 
						
						
						
						Co-authored-by: Giteabot <teabot@gitea.io> 
						
						
					 
					
						2023-05-10 13:54:18 +02:00 
						 
				 
			
				
					
						
							
							
								ChristopherHX 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							6dfc0c87ec 
							
						 
					 
					
						
						
							
							Gitea Actions add base_ref, head_ref, api_url, ref_type fields ( #24356 )  
						
						... 
						
						
						
						As discussed in https://gitea.com/gitea/act_runner/issues/147 
`github.base_ref` is empty.
This change adds these fields to the server side context data. 
						
						
					 
					
						2023-04-28 07:35:21 +08:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							ac384c4e1d 
							
						 
					 
					
						
						
							
							Support upload outputs and use needs context on Actions ( #24230 )  
						
						... 
						
						
						
						See [Defining outputs for
jobs](https://docs.github.com/en/actions/using-jobs/defining-outputs-for-jobs )
and [Example usage of the needs
context](https://docs.github.com/en/actions/learn-github-actions/contexts#example-usage-of-the-needs-context ).
Related to:
- [actions-proto-def
#5 ](https://gitea.com/gitea/actions-proto-def/pulls/5 )
- [act_runner #133 ](https://gitea.com/gitea/act_runner/pulls/133 )
<details>
<summary>Tests & screenshots</summary>
Test workflow file:
```yaml
name: outputs
on: push
jobs:
  job1:
    runs-on: ubuntu-latest
    outputs:
      output1: ${{ steps.step1.outputs.output1 }}
      output2: ${{ steps.step2.outputs.output2 }}
    steps:
      - name: step1
        id: step1
        run: |
          date -Is > output1
          cat output1
          echo "output1=$(cat output1)" >> $GITHUB_OUTPUT
      - name: step2
        id: step2
        run: |
          cat /proc/sys/kernel/random/uuid > output2
          cat output2
          echo "output2=$(cat output2)" >> $GITHUB_OUTPUT
  job2:
    needs: job1
    runs-on: ubuntu-latest
    steps:
      - run: echo ${{ needs.job1.outputs.output1 }}
      - run: echo ${{ needs.job1.outputs.output2 }}
      - run: echo ${{ needs.job1.result }}
```
<img width="397" alt="image"
src="https://user-images.githubusercontent.com/9418365/233313322-903e7ebf-49a7-48e2-8c17-95a4581b3284.png ">
<img width="385" alt="image"
src="https://user-images.githubusercontent.com/9418365/233313442-30909135-1711-4b78-a5c6-133fcc79f47c.png ">
</details>
---------
Co-authored-by: Giteabot <teabot@gitea.io> 
						
						
					 
					
						2023-04-22 16:12:41 -04:00 
						 
				 
			
				
					
						
							
							
								sillyguodong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							3876f56c7b 
							
						 
					 
					
						
						
							
							Set ref to fully-formed of the tag when trigger event is release ( #23944 )  
						
						... 
						
						
						
						Fix  #23943 
When trigger event is `release`, ref should be like
`refs/tags/<tag_name>` instead of `CommitID` 
					
						2023-04-07 16:40:40 -04:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							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 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							371520d7ab 
							
						 
					 
					
						
						
							
							Display the version of runner in the runner list ( #23490 )  
						
						... 
						
						
						
						Close : #23489  
### Change
1. Add version column to action_runner table.
2. Read the runner version from the request header, and update it in DB.
3. Display version in runner list
### Screenshot
 
					
						2023-03-19 22:19:40 -04:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							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 
						 
				 
			
				
					
						
							
							
								ChristianSch 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							79acf7acc4 
							
						 
					 
					
						
						
							
							Fix grammar in error message ( #23273 )  
						
						... 
						
						
						
						Fixes the grammar in the error message in case a runner token has
already been activated 
						
						
					 
					
						2023-03-03 14:53:46 -06:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							cbc9a0fe47 
							
						 
					 
					
						
						
							
							Avoid too long names for actions ( #23162 )  
						
						... 
						
						
						
						The name of the job or step comes from the workflow file, while the name
of the runner comes from its registration. If the strings used for these
names are too long, they could cause db issues. 
						
						
					 
					
						2023-02-28 18:20:36 +08:00 
						 
				 
			
				
					
						
					 
					
						
						
							
							
						
						
						
							
						
						
							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