stages:
  - build
  - deploy

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:v1.23.2-debug
    entrypoint: [""]
  script:
    - >
      /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_BRANCH}"
      --cleanup

staging:
  stage: deploy
  image: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_BRANCH}
  script:
    - echo "Building the main website with Quarto..."
    - quarto render --to html --output-dir public
    - echo "Building Ghost-optimized version..."
    - quarto render --profile ghost --to html --output-dir public/ghost-content
  artifacts:
    paths:
      - public

deploy:
  stage: deploy
  script:
    - echo "Publishing site..."
  needs:
    - staging
  artifacts:
    paths:
      - public

# Branch preview deployment (for testing)
preview:
  stage: deploy
  script:
    - echo "Deploying branch preview..."
    - echo "Preview available at preview URL"
  needs:
    - job: staging
      optional: true
  artifacts:
    paths:
      - public
  environment:
    name: preview/$CI_COMMIT_REF_SLUG
    url: https://${CI_PROJECT_PATH_SLUG}-${CI_COMMIT_REF_SLUG}.gitlab.io
  rules:
    - if: "$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH"

# GitLab Pages deployment (only on main branch)
pages:
  stage: deploy
  script:
    - echo "Publishing to GitLab Pages..."
  needs:
    - deploy
  artifacts:
    paths:
      - public
  rules:
    - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"

include:
  - local: ghost-upload/.gitlab-ci.yml
