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

platform:
  arch: amd64
  os: linux

trigger:
  event:
    exclude:
      - pull_request
      - tag

steps:
  - name: up
    environment:
      DOCKER_USERNAME:
        from_secret: docker_username
      DOCKER_PASSWORD:
        from_secret: docker_password
      CODECOV_TOKEN:
        from_secret: codecov_token
    commands:
      - scripts/login.sh
      - docker compose -f docker-compose.ci.yml pull
      - docker compose -f docker-compose.ci.yml stop
      - docker compose -f docker-compose.ci.yml up -d --build --force-recreate

  - name: test-develop
    environment:
      CODECOV_TOKEN:
        from_secret: codecov_token
    commands:
      - docker compose -f docker-compose.ci.yml exec -e CODECOV_TOKEN=$${CODECOV_TOKEN} -T photoprism make all test-js test-codecov install migrate
    when:
      branch:
        - develop

  - name: test
    commands:
      - docker compose -f docker-compose.ci.yml exec -T photoprism make all test install migrate
    when:
      branch:
        - preview
        - release

  - name: down
    commands:
      - docker compose -f docker-compose.ci.yml down
    when:
      status:
        - failure
        - success

  - name: deploy-preview
    environment:
      DOCKER_USERNAME:
        from_secret: docker_username
      DOCKER_PASSWORD:
        from_secret: docker_password
    commands:
      - scripts/login.sh
      - scripts/install-qemu.sh
      - make docker-preview
    when:
      status:
        - success
      branch:
        - preview

  - name: deploy-demo
    environment:
      DOCKER_USERNAME:
        from_secret: docker_username
      DOCKER_PASSWORD:
        from_secret: docker_password
    commands:
      - scripts/login.sh
      - docker pull photoprism/photoprism:preview
      - make docker-demo
    when:
      status:
        - success
      branch:
        - preview

  - name: deploy-release
    environment:
      DOCKER_USERNAME:
        from_secret: docker_username
      DOCKER_PASSWORD:
        from_secret: docker_password
    commands:
      - scripts/login.sh
      - scripts/install-qemu.sh
      - make docker-release
    when:
      status:
        - success
      branch:
        - release

---
kind: pipeline
type: exec
name: pull-request

platform:
  arch: amd64
  os: linux

trigger:
  event:
    include:
      - pull_request

steps:
  - name: up
    commands:
      - docker-compose -f docker-compose.ci.yml up -d --build --force-recreate

  - name: test
    commands:
      - docker-compose -f docker-compose.ci.yml exec -T photoprism make all test install migrate

  - name: down
    commands:
      - docker-compose -f docker-compose.ci.yml down
    when:
      status:
        - failure
        - success

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

trigger:
  branch:
    - preview
  event:
    exclude:
      - pull_request
      - tag

platform:
  arch: arm64
  os: linux

steps:
  - name: up
    environment:
      DOCKER_USERNAME:
        from_secret: docker_username
      DOCKER_PASSWORD:
        from_secret: docker_password
    commands:
      - scripts/login.sh
      - docker-compose -f docker-compose.ci.yml stop
      - docker-compose -f docker-compose.ci.yml up -d --build --force-recreate

  - name: test
    commands:
      - docker-compose -f docker-compose.ci.yml exec -T photoprism make all test-go install migrate

  - name: down
    commands:
      - docker-compose -f docker-compose.ci.yml down
      - docker system prune -f
    when:
      status:
        - failure
        - success

---
kind: signature
hmac: 61a27b3c3142a9a1d1972f0fe00a8aa19d99623e6fea6e1d5ad44b6b20cd5cd1

...