kind: pipeline
name: default

workspace:
  base: /go
  path: src/gitbase.de/apairon/mark2web

steps:
  - name: build for linux
    image: golang:latest
    environment:
      CGO_ENABLED: 0
      GOOS: linux
      GOARCH: amd64
    commands:
      - git submodule update --init --recursive
      - git fetch --tags
      - ./build.sh
    when:
      event: [ push, tag ]

  - name: test with example content
    image: alpine
    commands:
      - ./dist/mark2web-`cat VERSION`-linux-amd64 -version
      - ./dist/mark2web-`cat VERSION`-linux-amd64 -in example -out example_out -create -logLevel debug
    when:
      event: [ push, tag ]

  - name: build for freebsd
    image: golang:latest
    environment:
      CGO_ENABLED: 0
      GOOS: freebsd
      GOARCH: amd64
    commands:
      - ./build.sh
    when:
      event: [ tag ]

  - name: build for macos
    image: golang:latest
    environment:
      CGO_ENABLED: 0
      GOOS: darwin
      GOARCH: amd64
    commands:
      - ./build.sh
    when:
      event: [ tag ]

  - name: build for windows
    image: golang:latest
    environment:
      CGO_ENABLED: 0
      GOOS: windows
      GOARCH: amd64
      FILEEXT: .exe
    commands:
      - ./build.sh
    when:
      event: [ tag ]

  - name: build docker image
    image: docker
    commands:
      - cp dist/mark2web-`cat VERSION`-linux-amd64 mark2web
      - docker build -t apairon/mark2web .
    volumes:
      - name: docker
        path: /var/run/docker.sock
    when:
      branch: [ master ]
      event: [ push ]

  - name: deploy website
    image: apairon/mark2web:latest
    pull: never
    environment:
      RSYNC_PASS:
        from_secret: rsync_pass    
    commands:
      - /mark2web -version
      - /mark2web -in website -out html -create -logLevel info
      - '
        rsync -rlcgD -i -u -v --stats
          --delete
          -e "sshpass -p $${RSYNC_PASS} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 22222"
          html/
          basiskonfiguration_mark2web_rsync@deploy.bc1.basehosts.de:./'
    when:
      branch: [ master ]
      event: [ promote, push ]
      target: [ "", website ]

  - name: prepare release
    image: apairon/mark2web:latest
    pull: never
    commands:
      - gzip dist/*
      - ls -la dist/
    when:
      event: [ tag ]

  - name: gitea release
    image: plugins/gitea-release
    settings:
      api_key:
        from_secret: gitea_token
      base_url: https://gitbase.de
      files:
        - dist/*
      title: VERSION
      note: RELEASE.md
      checksum:
        - md5
        - sha256
    when:
      event: [ tag ]

volumes:
  - name: docker
    host:
      path: /var/run/docker.sock