Set up CI with Azure Pipelines (#304)

This commit is contained in:
Thomas Pelletier
2019-09-24 16:11:17 -07:00
committed by GitHub
parent 095a905e04
commit 091e2dc498
5 changed files with 168 additions and 107 deletions
-24
View File
@@ -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 }}
-80
View File
@@ -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
+1 -2
View File
@@ -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)
+167
View File
@@ -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'
-1
View File
@@ -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`