- step: build@maven
  name: build_maven
  displayName: Maven 构建
  # 支持6、7、8、9、10、11六个版本
  jdkVersion: 8
  # 支持2.2.1、3.2.5、3.3.9、3.5.2、3.5.3、3.5.4、3.6.1、3.6.3八个版本
  mavenVersion: 3.3.9
  # 构建命令
  commands:
    - mvn -B clean package -Dmaven.test.skip=true
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径,如通常jar包在target目录下。当前目录为代码库根目录
      path:
        - ./target
- step: build@gradle
  name: build_gradle
  displayName: Gradle 构建
  jdkVersion: 8
  gradleVersion: 4.4
  # 构建命令
  commands:
    - chmod +x ./gradlew
    - ./gradlew build
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径,如通常jar包在target目录下。当前目录为代码库根目录
      path:
        - ./build
- step: build@ant
  name: build_ant
  displayName: Ant 构建
  jdkVersion: 8
  antVersion: 1.9.16
  # 构建命令
  commands:
    - ant
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径,如通常jar包在target目录下。当前目录为代码库根目录
      path:
        - ./build
- step: build@golang
  name: build_golang
  displayName: Golang 构建
  golangVersion: 1.12
  # 构建命令
  commands: |
      mkdir output
      GOOS=linux GOARCH=amd64 go build -o output/main.amd64 main.go
      GOOS=linux GOARCH=386 go build -o output/main.linux32 main.go
      GOOS=windows GOARCH=amd64 go build -o output/main.win64.exe main.go
      GOOS=windows GOARCH=386 go build -o output/main.win32.exe main.go
      GOOS=darwin GOARCH=amd64 go build -o output/main.darwin main.go 
      chmod +X output/main.linux32
      ./output/main.linux32
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
      path:
        - ./output
- step: build@nodejs
  name: build_nodejs
  displayName: NodeJs构建
  nodeVersion: 14.16.0
  # 构建命令:安装依赖 -> 清除上次打包产物残留 -> 执行构建 【请根据项目实际产出进行填写】
  commands:
    - npm install && rm -rf ./dist && npm run build
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
      path:
        - ./dist
- step: build@php
  name: build_php
  displayName: PHP 构建
  phpVersion: 8.0
  # 构建命令
  commands:
    - php --version
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
      path:
        - ./
- step: build@python
  name: build_python
  displayName: Python 构建
  pythonVersion: 3.9
  # 构建命令
  commands: 
    - python3 -m pip install --upgrade pip
    - pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    - pip3 install -r requirements.txt
    - python3 ./main.py
  # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
  artifacts:
      # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
    - name: BUILD_ARTIFACT
      # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
      path:
        - ./
step: build@ruby
 name: build_ruby
 displayName: Ruby 构建
 rubyVersion: 3.0.2
 # 构建命令
 commands:
   - set -ex
   - bundle install
   - chmod +x -R bin
   - bin/rails  webpacker:install
   - bin/rails db:migrate RAILS_ENV=test
   - bin/rails test
   - RAILS_ENV=production bin/rails assets:precompile
 # 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
 artifacts:
     # 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
   - name: BUILD_ARTIFACT
     # 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
     path:
       - ./
             
steps:
  - step: build@gcc
    name: build_gcc
    displayName: GCC 构建
    gccVersion: 4.8.5
    commands:
      - gcc -V
    artifacts:
      - name: BUILD_ARTIFACT
        path:
          - ./target