kind: pipeline
type: exec
name: linux-amd64

platform:
  arch: amd64
  os: linux

steps:
- name: test
  commands:
  - mkdir -p $HOMEPATH/.docker; echo $IMAGE_PULL_SECRETS > $HOMEPATH/.docker/config.json
  - make test-style
  environment:
    VERSION: ${DRONE_TAG:-latest}-linux-amd64
    DEV_REGISTRY:
      from_secret: dev_registry
    DRYCC_REGISTRY:
      from_secret: drycc_registry
    CODECOV_TOKEN:
      from_secret: codecov_token
    IMAGE_PULL_SECRETS:
      from_secret: container_pull_secrets
  when:
    event:
    - push
    - tag
    - pull_request

- name: publish
  commands:
  - echo $CONTAINER_PASSWORD | docker login $DRYCC_REGISTRY --username $CONTAINER_USERNAME --password-stdin > /dev/null 2>&1
  - make docker-build docker-immutable-push
  environment:
    VERSION: ${DRONE_TAG:-latest}-linux-amd64
    DEV_REGISTRY:
      from_secret: dev_registry
    DRYCC_REGISTRY:
      from_secret: drycc_registry
    CONTAINER_USERNAME:
      from_secret: container_username
    CONTAINER_PASSWORD:
      from_secret: container_password
  when:
    event:
    - push
    - tag

---
kind: pipeline
type: exec
name: linux-arm64

platform:
  arch: arm64
  os: linux

steps:
- name: publish
  commands:
  - echo $CONTAINER_PASSWORD | docker login $DRYCC_REGISTRY --username $CONTAINER_USERNAME --password-stdin > /dev/null 2>&1
  - make docker-build docker-immutable-push
  environment:
    VERSION: ${DRONE_TAG:-latest}-linux-arm64
    DEV_REGISTRY:
      from_secret: dev_registry
    DRYCC_REGISTRY:
      from_secret: drycc_registry
    CONTAINER_USERNAME:
      from_secret: container_username
    CONTAINER_PASSWORD:
      from_secret: container_password
  when:
    event:
    - push
    - tag

---
kind: pipeline
type: docker
name: manifest
image_pull_secrets:
- container_pull_secrets

steps:

- name: generate manifest
  image: registry.drycc.cc/drycc/python-dev
  pull: always
  commands:
  - sed -i "s/registry.drycc.cc/$${DRYCC_REGISTRY}/g" .drone/manifest.tmpl
  environment:
    DEV_REGISTRY:
      from_secret: dev_registry
    DRYCC_REGISTRY:
      from_secret: drycc_registry

- name: publish
  image: plugins/manifest
  settings:
    spec: .drone/manifest.tmpl
    username:
      from_secret: container_username
    password:
      from_secret: container_password
  environment:
    DEV_REGISTRY:
      from_secret: dev_registry
    DRYCC_REGISTRY:
      from_secret: drycc_registry

trigger:
  event:
  - push
  - tag

depends_on:
- linux-amd64
- linux-arm64

---
kind: pipeline
type: exec
name: chart

steps:
- name: generate chart
  commands:
  - IMAGE_TAG=$([ ! -z $DRONE_TAG ] && echo \"${DRONE_TAG:1}\" || echo \"canary\")
  - sed -i "s/imageTag:\ \"canary\"/imageTag:\ $IMAGE_TAG/g" charts/helmbroker/values.yaml
  - helm package -u charts/helmbroker --version ${DRONE_TAG:-v1.0.0}
  - curl -u $CHARTMUSEUM_USERNAME:$CHARTMUSEUM_PASSWORD -F chart=@helmbroker-${DRONE_TAG:-v1.0.0}.tgz "$CHARTMUSEUM_API/api/$([ -z $DRONE_TAG ] && echo testing || echo stable)/charts"
  environment:
    CHARTMUSEUM_USERNAME:
      from_secret: chartmuseum_username
    CHARTMUSEUM_PASSWORD:
      from_secret: chartmuseum_password
    CHARTMUSEUM_API:
      from_secret: chartmuseum_api
  when:
    event:
    - push
    - tag
