when:
  - event: [pull_request, tag, cron]
  - event: push
    branch:
      - ${CI_REPO_DEFAULT_BRANCH}
      - renovate/*

depends_on:
  - lint

steps:
  # use vendor to cache dependencies
  vendor:
    image: golang:1.22
    commands:
      - go mod vendor

  build:
    depends_on: vendor
    image: codeberg.org/6543/docker-images/golang_just
    commands:
      - go version
      - just build
    when:
      - event: [push, pull_request]
        branch:
          - ${CI_REPO_DEFAULT_BRANCH}
          - renovate/*

  docker-dryrun:
    depends_on: vendor
    image: woodpeckerci/plugin-docker-buildx:3.2.1
    settings:
      dockerfile: Dockerfile
      platforms: linux/amd64
      dry-run: true
      tags: latest
    when:
      - event: [push, pull_request]
        branch:
          - ${CI_REPO_DEFAULT_BRANCH}
          - renovate/*
        path: Dockerfile

  build-tag:
    depends_on: vendor
    image: codeberg.org/6543/docker-images/golang_just
    commands:
      - go version
      - just build-tag ${CI_COMMIT_TAG##v}
    when:
      - event: ['tag']
        branch:
          - ${CI_REPO_DEFAULT_BRANCH}

  test:
    depends_on: build
    image: codeberg.org/6543/docker-images/golang_just
    commands:
      - just test
    when:
      - event: pull_request
      - event: push
        branch: renovate/*

  integration-tests:
    depends_on: build
    image: codeberg.org/6543/docker-images/golang_just
    commands:
      - just integration
    environment:
      - ACME_API=https://acme.mock.directory
      - PAGES_DOMAIN=localhost.mock.directory
      - RAW_DOMAIN=raw.localhost.mock.directory
      - PORT=4430
    when:
      - event: pull_request
      - event: push
        branch: renovate/*

  release:
    depends_on: build
    image: plugins/gitea-release:1.1.0
    settings:
      base_url: https://codeberg.org
      file_exists: overwrite
      files: build/codeberg-pages-server
      api_key:
        from_secret: bot_token
    environment:
      - CI_REPO_OWNER=${CI_REPO_OWNER}
      - CI_REPO_NAME=${CI_REPO_NAME}
      - CI_BUILD_EVENT=${CI_BUILD_EVENT}
      - CI_COMMIT_REF=${CI_COMMIT_REF}
    when:
      - event: ['tag']
        branch:
          - ${CI_REPO_DEFAULT_BRANCH}

  docker-next:
    depends_on: vendor
    image: woodpeckerci/plugin-docker-buildx:3.2.1
    settings:
      registry: codeberg.org
      dockerfile: Dockerfile
      platforms: linux/amd64,arm64
      repo: codeberg.org/codeberg/pages-server
      tags: next
      username:
        from_secret: bot_user
      password:
        from_secret: bot_token
    when:
      - event: ['push']
        branch: ${CI_REPO_DEFAULT_BRANCH}

  docker-tag:
    depends_on: vendor
    image: woodpeckerci/plugin-docker-buildx:3.2.1
    settings:
      registry: codeberg.org
      dockerfile: Dockerfile
      platforms: linux/amd64,arm64
      repo: codeberg.org/codeberg/pages-server
      tags: [latest, '${CI_COMMIT_TAG}']
      username:
        from_secret: bot_user
      password:
        from_secret: bot_token
    when:
      - event: ['push']
        branch: ${CI_REPO_DEFAULT_BRANCH}