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