Merge pull request 'fix(jobparser): template job name if it's defined' (#41) from thefox/job-matrix into main

Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/41
This commit is contained in:
thefox 2024-07-01 19:49:30 +00:00
commit e89fbf5d6a
4 changed files with 128 additions and 5 deletions

View file

@ -48,12 +48,15 @@ func Parse(content []byte, options ...ParseOption) ([]*SingleWorkflow, error) {
} }
for _, matrix := range matricxes { for _, matrix := range matricxes {
job := job.Clone() job := job.Clone()
if job.Name == "" {
job.Name = id
}
job.Name = nameWithMatrix(job.Name, matrix)
job.Strategy.RawMatrix = encodeMatrix(matrix)
evaluator := NewExpressionEvaluator(NewInterpeter(id, origin.GetJob(id), matrix, pc.gitContext, results, pc.vars)) evaluator := NewExpressionEvaluator(NewInterpeter(id, origin.GetJob(id), matrix, pc.gitContext, results, pc.vars))
if job.Name == "" {
job.Name = nameWithMatrix(id, matrix)
} else {
job.Name = evaluator.Interpolate(job.Name)
}
job.Strategy.RawMatrix = encodeMatrix(matrix)
runsOn := origin.GetJob(id).RunsOn() runsOn := origin.GetJob(id).RunsOn()
for i, v := range runsOn { for i, v := range runsOn {
runsOn[i] = evaluator.Interpolate(v) runsOn[i] = evaluator.Interpolate(v)

View file

@ -17,6 +17,11 @@ func TestParse(t *testing.T) {
options []ParseOption options []ParseOption
wantErr bool wantErr bool
}{ }{
{
name: "multiple_named_matrix",
options: nil,
wantErr: false,
},
{ {
name: "multiple_jobs", name: "multiple_jobs",
options: nil, options: nil,

View file

@ -0,0 +1,14 @@
name: test
jobs:
job1:
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-20.04]
version: [1.17, 1.18, 1.19]
runs-on: ${{ matrix.os }}
name: On ${{ matrix.os }} with go v${{ matrix.version }}
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version

View file

@ -0,0 +1,101 @@
name: test
jobs:
job1:
name: On ubuntu-20.04 with go v1.17
runs-on: ubuntu-20.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-20.04
version:
- 1.17
---
name: test
jobs:
job1:
name: On ubuntu-20.04 with go v1.18
runs-on: ubuntu-20.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-20.04
version:
- 1.18
---
name: test
jobs:
job1:
name: On ubuntu-20.04 with go v1.19
runs-on: ubuntu-20.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-20.04
version:
- 1.19
---
name: test
jobs:
job1:
name: On ubuntu-22.04 with go v1.17
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-22.04
version:
- 1.17
---
name: test
jobs:
job1:
name: On ubuntu-22.04 with go v1.18
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-22.04
version:
- 1.18
---
name: test
jobs:
job1:
name: On ubuntu-22.04 with go v1.19
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.version }}
- run: uname -a && go version
strategy:
matrix:
os:
- ubuntu-22.04
version:
- 1.19