mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-03 09:33:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			189 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
trigger:
 | 
						|
- master
 | 
						|
 | 
						|
stages:
 | 
						|
- stage: run_checks
 | 
						|
  displayName: "Check"
 | 
						|
  dependsOn: []
 | 
						|
  jobs:
 | 
						|
  - job: fmt
 | 
						|
    displayName: "fmt"
 | 
						|
    pool:
 | 
						|
      vmImage: ubuntu-latest
 | 
						|
    steps:
 | 
						|
    - task: GoTool@0
 | 
						|
      displayName: "Install Go 1.16"
 | 
						|
      inputs:
 | 
						|
        version: "1.16"
 | 
						|
    - 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.16"
 | 
						|
      inputs:
 | 
						|
        version: "1.16"
 | 
						|
    - 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}'
 | 
						|
      env:
 | 
						|
        CODECOV_TOKEN: $(CODECOV_TOKEN)
 | 
						|
  - job: benchmark
 | 
						|
    displayName: "benchmark"
 | 
						|
    pool:
 | 
						|
      vmImage: ubuntu-latest
 | 
						|
    steps:
 | 
						|
    - task: GoTool@0
 | 
						|
      displayName: "Install Go 1.16"
 | 
						|
      inputs:
 | 
						|
        version: "1.16"
 | 
						|
    - 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: go_unit_tests
 | 
						|
    displayName: "unit tests"
 | 
						|
    strategy:
 | 
						|
      matrix:
 | 
						|
        linux 1.16:
 | 
						|
          goVersion: '1.16'
 | 
						|
          imageName: 'ubuntu-latest'
 | 
						|
        mac 1.16:
 | 
						|
          goVersion: '1.16'
 | 
						|
          imageName: 'macOS-latest'
 | 
						|
        windows 1.16:
 | 
						|
          goVersion: '1.16'
 | 
						|
          imageName: 'windows-latest'
 | 
						|
        linux 1.15:
 | 
						|
          goVersion: '1.15'
 | 
						|
          imageName: 'ubuntu-latest'
 | 
						|
        mac 1.15:
 | 
						|
          goVersion: '1.15'
 | 
						|
          imageName: 'macOS-latest'
 | 
						|
        windows 1.15:
 | 
						|
          goVersion: '1.15'
 | 
						|
          imageName: 'windows-latest'
 | 
						|
    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_binaries
 | 
						|
  displayName: "Build binaries"
 | 
						|
  dependsOn: run_checks
 | 
						|
  jobs:
 | 
						|
  - job: build_binary
 | 
						|
    displayName: "Build binary"
 | 
						|
    strategy:
 | 
						|
      matrix:
 | 
						|
        linux_amd64:
 | 
						|
          GOOS: linux
 | 
						|
          GOARCH: amd64
 | 
						|
        darwin_amd64:
 | 
						|
          GOOS: darwin
 | 
						|
          GOARCH: amd64
 | 
						|
        windows_amd64:
 | 
						|
          GOOS: windows
 | 
						|
          GOARCH: amd64
 | 
						|
    pool:
 | 
						|
      vmImage: ubuntu-latest
 | 
						|
    steps:
 | 
						|
    - task: GoTool@0
 | 
						|
      displayName: "Install Go"
 | 
						|
      inputs:
 | 
						|
        version: 1.16
 | 
						|
    - task: Bash@3
 | 
						|
      inputs:
 | 
						|
        targetType: inline
 | 
						|
        script: "make dist"
 | 
						|
      env:
 | 
						|
        go.goos: $(GOOS)
 | 
						|
        go.goarch: $(GOARCH)
 | 
						|
    - task: CopyFiles@2
 | 
						|
      inputs:
 | 
						|
        sourceFolder: '$(Build.SourcesDirectory)'
 | 
						|
        contents: '*.tar.xz'
 | 
						|
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
 | 
						|
    - task: PublishBuildArtifacts@1
 | 
						|
      inputs:
 | 
						|
        pathtoPublish: '$(Build.ArtifactStagingDirectory)'
 | 
						|
        artifactName: binaries
 | 
						|
- stage: build_binaries_manifest
 | 
						|
  displayName: "Build binaries manifest"
 | 
						|
  dependsOn: build_binaries
 | 
						|
  jobs:
 | 
						|
  - job: build_manifest
 | 
						|
    displayName: "Build binaries manifest"
 | 
						|
    steps:
 | 
						|
      - task: DownloadBuildArtifacts@0
 | 
						|
        inputs:
 | 
						|
          buildType: 'current'
 | 
						|
          downloadType: 'single'
 | 
						|
          artifactName: 'binaries'
 | 
						|
          downloadPath: '$(Build.SourcesDirectory)'
 | 
						|
      - task: Bash@3
 | 
						|
        inputs:
 | 
						|
          targetType: inline
 | 
						|
          script: "cd binaries && sha256sum --binary *.tar.xz | tee $(Build.ArtifactStagingDirectory)/sha256sums.txt"
 | 
						|
      - task: PublishBuildArtifacts@1
 | 
						|
        inputs:
 | 
						|
          pathtoPublish: '$(Build.ArtifactStagingDirectory)'
 | 
						|
          artifactName: manifest
 | 
						|
 | 
						|
- 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'
 |