Fixes include when using matrix and strategy build. (#415)
* fixes include directive of strategy build. * Adds test for include and exclude in matrix builds. * ubuntu-16.04 instead of 20.04 * Adds more platforms for runner_test Prevent most "skipping unsupported platform messages". * correct printing for unsupported platform * fix merge
This commit is contained in:
parent
d784bce96a
commit
e47a2395a5
4 changed files with 42 additions and 10 deletions
|
@ -3,6 +3,7 @@ package model
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -176,16 +177,12 @@ func (j *Job) GetMatrixes() []map[string]interface{} {
|
||||||
continue MATRIX
|
continue MATRIX
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, include := range includes {
|
|
||||||
if commonKeysMatch(matrix, include) {
|
|
||||||
log.Debugf("Setting add'l values on matrix '%v' due to include '%v'", matrix, include)
|
|
||||||
for k, v := range include {
|
|
||||||
matrix[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
matrixes = append(matrixes, matrix)
|
matrixes = append(matrixes, matrix)
|
||||||
}
|
}
|
||||||
|
for _, include := range includes {
|
||||||
|
log.Debugf("Adding include '%v'", include)
|
||||||
|
matrixes = append(matrixes, include)
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
matrixes = append(matrixes, make(map[string]interface{}))
|
matrixes = append(matrixes, make(map[string]interface{}))
|
||||||
|
@ -195,7 +192,7 @@ func (j *Job) GetMatrixes() []map[string]interface{} {
|
||||||
|
|
||||||
func commonKeysMatch(a map[string]interface{}, b map[string]interface{}) bool {
|
func commonKeysMatch(a map[string]interface{}, b map[string]interface{}) bool {
|
||||||
for aKey, aVal := range a {
|
for aKey, aVal := range a {
|
||||||
if bVal, ok := b[aKey]; ok && aVal != bVal {
|
if bVal, ok := b[aKey]; ok && ! reflect.DeepEqual(aVal, bVal) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,7 +258,10 @@ func (rc *RunContext) isEnabled(ctx context.Context) bool {
|
||||||
|
|
||||||
img := rc.platformImage()
|
img := rc.platformImage()
|
||||||
if img == "" {
|
if img == "" {
|
||||||
l.Infof("\U0001F6A7 Skipping unsupported platform '%+v'", job.RunsOn())
|
for _, runnerLabel := range job.RunsOn() {
|
||||||
|
platformName := rc.ExprEval.Interpolate(runnerLabel)
|
||||||
|
l.Infof("\U0001F6A7 Skipping unsupported platform '%+v'", platformName)
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -89,6 +89,7 @@ func TestRunEvent(t *testing.T) {
|
||||||
{"testdata", "local-action-dockerfile", "push", "", platforms},
|
{"testdata", "local-action-dockerfile", "push", "", platforms},
|
||||||
{"testdata", "local-action-js", "push", "", platforms},
|
{"testdata", "local-action-js", "push", "", platforms},
|
||||||
{"testdata", "matrix", "push", "", platforms},
|
{"testdata", "matrix", "push", "", platforms},
|
||||||
|
{"testdata", "matrix-include-exclude", "push", "", platforms},
|
||||||
{"testdata", "commands", "push", "", platforms},
|
{"testdata", "commands", "push", "", platforms},
|
||||||
{"testdata", "workdir", "push", "", platforms},
|
{"testdata", "workdir", "push", "", platforms},
|
||||||
//{"testdata", "issue-228", "push", "", platforms}, // TODO [igni]: Remove this once everything passes
|
//{"testdata", "issue-228", "push", "", platforms}, // TODO [igni]: Remove this once everything passes
|
||||||
|
|
31
pkg/runner/testdata/matrix-include-exclude/push.yml
vendored
Normal file
31
pkg/runner/testdata/matrix-include-exclude/push.yml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
name: matrix-include-exclude
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: PHP ${{ matrix.os }} ${{ matrix.node}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- run: echo ${NODE_VERSION} | grep ${{ matrix.node }}
|
||||||
|
env:
|
||||||
|
NODE_VERSION: ${{ matrix.node }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-18.04, macos-latest]
|
||||||
|
node: [4, 6, 8, 10]
|
||||||
|
exclude:
|
||||||
|
- os: macos-latest
|
||||||
|
node: 4
|
||||||
|
include:
|
||||||
|
- os: ubuntu-16.04
|
||||||
|
node: 10
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node: [8.x, 10.x, 12.x, 13.x]
|
||||||
|
steps:
|
||||||
|
- run: echo ${NODE_VERSION} | grep ${{ matrix.node }}
|
||||||
|
env:
|
||||||
|
NODE_VERSION: ${{ matrix.node }}
|
Loading…
Add table
Reference in a new issue