Add With field to jobparser.Job (#37)

Partially Fixes [gitea/act_runner#91 comment](https://gitea.com/gitea/act_runner/issues/91#issuecomment-734544)

nektos/act has added `With` to support reusable workflows (see [code](68c72b9a51/pkg/model/workflow.go (L160)))

GitHub actions also support [`jobs.<job_id>.with`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idwith)

Reviewed-on: https://gitea.com/gitea/act/pulls/37
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Zettat123 <zettat123@gmail.com>
Co-committed-by: Zettat123 <zettat123@gmail.com>
This commit is contained in:
Zettat123 2023-04-04 10:59:53 +08:00 committed by Lunny Xiao
parent 5e76853b55
commit cfedc518ca
4 changed files with 39 additions and 0 deletions

View file

@ -32,6 +32,11 @@ func TestParse(t *testing.T) {
options: nil, options: nil,
wantErr: false, wantErr: false,
}, },
{
name: "has_with",
options: nil,
wantErr: false,
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {

View file

@ -87,6 +87,7 @@ type Job struct {
Defaults Defaults `yaml:"defaults,omitempty"` Defaults Defaults `yaml:"defaults,omitempty"`
Outputs map[string]string `yaml:"outputs,omitempty"` Outputs map[string]string `yaml:"outputs,omitempty"`
Uses string `yaml:"uses,omitempty"` Uses string `yaml:"uses,omitempty"`
With map[string]interface{} `yaml:"with,omitempty"`
} }
func (j *Job) Clone() *Job { func (j *Job) Clone() *Job {
@ -107,6 +108,7 @@ func (j *Job) Clone() *Job {
Defaults: j.Defaults, Defaults: j.Defaults,
Outputs: j.Outputs, Outputs: j.Outputs,
Uses: j.Uses, Uses: j.Uses,
With: j.With,
} }
} }

15
pkg/jobparser/testdata/has_with.in.yaml vendored Normal file
View file

@ -0,0 +1,15 @@
name: test
jobs:
job1:
name: job1
runs-on: linux
uses: .gitea/workflows/build.yml
with:
package: service
job2:
name: job2
runs-on: linux
uses: .gitea/workflows/build.yml
with:
package: module

View file

@ -0,0 +1,17 @@
name: test
jobs:
job1:
name: job1
runs-on: linux
uses: .gitea/workflows/build.yml
with:
package: service
---
name: test
jobs:
job2:
name: job2
runs-on: linux
uses: .gitea/workflows/build.yml
with:
package: module