delve/_scripts/gen-travis.go
Alessandro Arzilli 715224cea0
Change TeamCity test matrix and drop appveyor/travis-ci configurations (#2315)
* TeamCity: change test matrix and test scripts

Changes test matrix to test:

* 1.13 through 1.16 on linux/amd64
* 1.15, 1.16 on windows/amd64
* 1.15 on linux/386

Also includes tests on go-tip for windows/amd64 and linux/amd64
(currently disabled, but can be turned on in a PR).

Changes test scripts to automatically select the latest patch version
of Go.

* CI: remove Travis-CI and Appveyor configuration
2021-01-25 20:48:27 -08:00

96 lines
2.1 KiB
Go

// Generates .travis.yml configuration using pkg/goversion/compat.go
// Usage go run scripts/gen-travis.go > .travis.yml
package main
import (
"bufio"
"fmt"
"os"
"text/template"
"github.com/go-delve/delve/pkg/goversion"
)
type arguments struct {
GoVersions []goVersion
}
type goVersion struct {
Major, Minor int
}
var maxVersion = goVersion{Major: goversion.MaxSupportedVersionOfGoMajor, Minor: goversion.MaxSupportedVersionOfGoMinor}
var minVersion = goVersion{Major: goversion.MinSupportedVersionOfGoMajor, Minor: goversion.MinSupportedVersionOfGoMinor}
func (v goVersion) dec() goVersion {
v.Minor--
if v.Minor < 0 {
panic("TODO: fill the maximum minor version number for v.Maxjor here")
}
return v
}
func (v goVersion) MaxVersion() bool {
return v == maxVersion
}
func (v goVersion) DotX() string {
return fmt.Sprintf("%d.%d.x", v.Major, v.Minor)
}
func (v goVersion) String() string {
return fmt.Sprintf("%d.%d", v.Major, v.Minor)
}
func main() {
var args arguments
args.GoVersions = append(args.GoVersions, maxVersion)
for {
v := args.GoVersions[len(args.GoVersions)-1].dec()
args.GoVersions = append(args.GoVersions, v)
if v == minVersion {
break
}
}
githubfh, err := os.Create(".github/workflows/test.yml")
if err != nil {
fmt.Fprintf(os.Stderr, "Could not create .github/test.yml: %v", err)
os.Exit(1)
}
out := bufio.NewWriter(githubfh)
err = template.Must(template.New(".github/workflows/test.yml").Parse(`name: Delve CI
on: [push, pull_request]
jobs:
build:
runs-on: ${{"{{"}}matrix.os{{"}}"}}
strategy:
matrix:
include:
- go: {{index .GoVersions 0}}
os: macos-latest
- go: {{index .GoVersions 1}}
os: ubuntu-latest
- go: {{index .GoVersions 2}}
os: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v1
with:
go-version: ${{"{{"}}matrix.go{{"}}"}}
- run: go run _scripts/make.go test
`)).Execute(out, args)
if err != nil {
fmt.Fprintf(os.Stderr, "Error executing template: %v", err)
os.Exit(1)
}
_ = out.Flush()
_ = githubfh.Close()
}