From 091e2dc49814e7694c4bd8b1f74ca371852b0703 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Tue, 24 Sep 2019 16:11:17 -0700 Subject: [PATCH] Set up CI with Azure Pipelines (#304) --- .github/workflows/fuzzit.yml | 24 ----- .github/workflows/go.yml | 80 ----------------- README.md | 3 +- azure-pipelines.yml | 167 +++++++++++++++++++++++++++++++++++ benchmark.sh | 1 - 5 files changed, 168 insertions(+), 107 deletions(-) delete mode 100644 .github/workflows/fuzzit.yml delete mode 100644 .github/workflows/go.yml create mode 100644 azure-pipelines.yml diff --git a/.github/workflows/fuzzit.yml b/.github/workflows/fuzzit.yml deleted file mode 100644 index 1c01942..0000000 --- a/.github/workflows/fuzzit.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Fuzzit -on: - push: - branches: - - master -jobs: - fuzzing: - name: Run fuzzing - runs-on: ubuntu-latest - steps: - - uses: actions/setup-go@v1 - with: - go-version: '1.13' - - uses: actions/checkout@v1 - - name: Add GOPATH/bin to PATH - run: echo '##[add-path]/home/runner/go/bin' - - name: Copy source to GOPATH/src - run: mkdir -p ${TARGET} && cp -R . ${TARGET}/ - env: - TARGET: /home/runner/go/src/github.com/pelletier/go-toml - - run: ./fuzzit.sh - env: - TYPE: fuzzing - FUZZIT_API_KEY: ${{ secrets.FUZZIT_API_KEY }} diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml deleted file mode 100644 index 3b33401..0000000 --- a/.github/workflows/go.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: Go -on: [push] -jobs: - test: - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] - go: ['1.12', '1.13'] - runs-on: ${{ matrix.os }} - name: Test Go ${{ matrix.go }} on ${{ matrix.os }} - steps: - - uses: pelletier/setup-go@v1.0.2-patch - with: - go-version: ${{ matrix.go }} - - uses: actions/checkout@v1 - - run: go test ./... - - coverage: - name: Coverage - runs-on: ubuntu-latest - steps: - - uses: pelletier/setup-go@v1.0.2-patch - with: - go-version: '1.12' - - uses: actions/checkout@v1 - - run: go test -race -coverprofile=coverage.txt -covermode=atomic - - run: bash <(curl -s https://codecov.io/bash) - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - fmt: - name: Go fmt - runs-on: ubuntu-latest - steps: - - uses: pelletier/setup-go@v1.0.2-patch - - uses: actions/checkout@v1 - - run: go fmt ./... - - benchmark: - name: Run benchmark - runs-on: ubuntu-latest - steps: - - uses: pelletier/setup-go@v1.0.2-patch - with: - go-version: '1.13' - - uses: actions/checkout@v1 - - run: ./benchmark.sh master https://github.com/$GITHUB_REPOSITORY.git - - fuzzing: - name: Run fuzzing - runs-on: ubuntu-latest - steps: - - uses: pelletier/setup-go@v1.0.2-patch - with: - go-version: '1.13' - - uses: actions/checkout@v1 - - run: mkdir -p /home/runner/go/src/github.com/pelletier/go-toml - | cp -R . /home/runner/go/src/github.com/pelletier/go-toml - - run: ./fuzzit.sh - env: - TYPE: local-regression - - docker: - name: Build Docker image - runs-on: ubuntu-latest - needs: [test, fuzzing, fmt] - steps: - - uses: actions/setup-go@v1 - with: - go-version: '1.13' - - uses: actions/checkout@v1 - - run: docker build -t toml . - - uses: actions/docker/tag@master - with: - args: toml pelletier/go-toml --no-latest - - run: docker tag pelletier/go-toml pelletier/go-toml:latest - if: github.ref == 'heads/refs/master' - - name: Docker login - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - - run: docker push pelletier/go-toml diff --git a/README.md b/README.md index 2cc02a2..0ebf150 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,7 @@ This library supports TOML version [![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml) [![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE) -[![Build Status](https://travis-ci.org/pelletier/go-toml.svg?branch=master)](https://travis-ci.org/pelletier/go-toml) -[![Windows Build status](https://ci.appveyor.com/api/projects/status/4aepwwjori266hkt/branch/master?svg=true)](https://ci.appveyor.com/project/pelletier/go-toml/branch/master) +[![Build Status](https://dev.azure.com/pelletierthomas/go-toml-ci/_apis/build/status/pelletier.go-toml?branchName=master)](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master) [![codecov](https://codecov.io/gh/pelletier/go-toml/branch/master/graph/badge.svg)](https://codecov.io/gh/pelletier/go-toml) [![Go Report Card](https://goreportcard.com/badge/github.com/pelletier/go-toml)](https://goreportcard.com/report/github.com/pelletier/go-toml) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield) diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..d8d7944 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,167 @@ +trigger: +- master + +stages: +- stage: fuzzit + displayName: "Run Fuzzit" + dependsOn: [] + condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master')) + jobs: + - job: submit + displayName: "Submit" + pool: + vmImage: ubuntu-latest + steps: + - task: GoTool@0 + displayName: "Install Go 1.13" + inputs: + version: "1.13" + - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/" + - script: mkdir -p ${HOME}/go/src/github.com/pelletier/go-toml + - script: cp -R . ${HOME}/go/src/github.com/pelletier/go-toml + - task: Bash@3 + inputs: + filePath: './fuzzit.sh' + env: + TYPE: fuzzing + FUZZIT_API_KEY: $(FUZZIT_API_KEY) + +- stage: run_checks + displayName: "Check" + dependsOn: [] + jobs: + - job: fmt + displayName: "fmt" + pool: + vmImage: ubuntu-latest + steps: + - task: GoTool@0 + displayName: "Install Go 1.13" + inputs: + version: "1.13" + - task: Go@0 + displayName: "go fmt ./..." + inputs: + command: 'custom' + customCommand: 'fmt' + arguments: './...' + - job: coverage + displayName: "coverage" + pool: + vmImage: ubuntu-latest + steps: + - task: GoTool@0 + displayName: "Install Go 1.13" + inputs: + version: "1.13" + - task: Go@0 + displayName: "Generate coverage" + inputs: + command: 'test' + arguments: "-race -coverprofile=coverage.txt -covermode=atomic" + - task: Bash@3 + inputs: + targetType: 'inline' + script: 'bash <(curl -s https://codecov.io/bash) -t $(CODECOV_TOKEN)' + - job: benchmark + displayName: "benchmark" + pool: + vmImage: ubuntu-latest + steps: + - task: GoTool@0 + displayName: "Install Go 1.13" + inputs: + version: "1.13" + - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/" + - task: Bash@3 + inputs: + filePath: './benchmark.sh' + arguments: "master $(Build.Repository.Uri)" + + - job: fuzzing + displayName: "fuzzing" + pool: + vmImage: ubuntu-latest + steps: + - task: GoTool@0 + displayName: "Install Go 1.13" + inputs: + version: "1.13" + - script: echo "##vso[task.setvariable variable=PATH]${PATH}:/home/vsts/go/bin/" + - script: mkdir -p ${HOME}/go/src/github.com/pelletier/go-toml + - script: cp -R . ${HOME}/go/src/github.com/pelletier/go-toml + - task: Bash@3 + inputs: + filePath: './fuzzit.sh' + env: + TYPE: local-regression + + - job: go_unit_tests + displayName: "unit tests" + strategy: + matrix: + linux 1.13: + goVersion: '1.13' + imageName: 'ubuntu-latest' + mac 1.13: + goVersion: '1.13' + imageName: 'macos-10.13' + windows 1.13: + goVersion: '1.13' + imageName: 'vs2017-win2016' + linux 1.12: + goVersion: '1.12' + imageName: 'ubuntu-latest' + mac 1.12: + goVersion: '1.12' + imageName: 'macos-10.13' + windows 1.12: + goVersion: '1.12' + imageName: 'vs2017-win2016' + pool: + vmImage: $(imageName) + steps: + - task: GoTool@0 + displayName: "Install Go $(goVersion)" + inputs: + version: $(goVersion) + - task: Go@0 + displayName: "go test ./..." + inputs: + command: 'test' + arguments: './...' + +- stage: build_docker_image + displayName: "Build Docker image" + dependsOn: run_checks + jobs: + - job: build + displayName: "Build" + pool: + vmImage: ubuntu-latest + steps: + - task: Docker@2 + inputs: + command: 'build' + Dockerfile: 'Dockerfile' + buildContext: '.' + addPipelineData: false + +- stage: publish_docker_image + displayName: "Publish Docker image" + dependsOn: build_docker_image + condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master')) + jobs: + - job: publish + displayName: "Publish" + pool: + vmImage: ubuntu-latest + steps: + - task: Docker@2 + inputs: + containerRegistry: 'DockerHub' + repository: 'pelletier/go-toml' + command: 'buildAndPush' + Dockerfile: 'Dockerfile' + buildContext: '.' + tags: 'latest' \ No newline at end of file diff --git a/benchmark.sh b/benchmark.sh index 8300bd3..7914fff 100755 --- a/benchmark.sh +++ b/benchmark.sh @@ -8,7 +8,6 @@ reference_git=${2:-.} if ! `hash benchstat 2>/dev/null`; then echo "Installing benchstat" go get golang.org/x/perf/cmd/benchstat - go install golang.org/x/perf/cmd/benchstat fi tempdir=`mktemp -d /tmp/go-toml-benchmark-XXXXXX`