kind: pipeline
type: docker
name: default

steps:
- name: static_check
  image: golang:latest
  commands:
  - go install honnef.co/go/tools/cmd/staticcheck@latest
  - cd src && staticcheck ./...
  volumes:
  - name: gopath
    path: /go

- name: lint
  image: golang:latest
  commands:
  - go install golang.org/x/lint/golint@latest
  - golint ./src/...
  volumes:
  - name: gopath
    path: /go

- name: analyze
  image: golang:latest
  commands:
  - cd src && go vet ./...
  volumes:
  - name: gopath
    path: /go

- name: publish_image
  image: plugins/docker
  environment:
    DOCKER_USERNAME:
      from_secret: registry_username
    DOCKER_PASSWORD:
      from_secret: registry_password
  commands:
  - sleep 5
  - ./deploy/image-build.sh
  - ./deploy/image-push.sh
  volumes:
  - name: docker-sock
    path: /var/run
  when:
    branch:
      - main
  
services:
- name: docker
  image: docker:dind
  privileged: true
  volumes:
  - name: docker-sock
    path: /var/run

volumes:
- name: gopath
  temp: {}
- name: docker-sock
  temp: {}