image: alpine:latest

# Only run pipelines for pushes on branches
workflow:
  rules:
    - if: $CI_COMMIT_BRANCH

# We can't deploy multiple different variants of GitLab Pages sites (e.g. one
# per branch), so we use this quick instead. GitLab has a special browsable URL
# for job artifacts on public projects, and we can create an Environment that
# points to that URL so it's easy for devs to know what the current Environment
# URL for their branch is.
.deploy:
  stage: deploy
  tags:
    - docker
#  variables:
#    ROOT_RELATIVE_NAMESPACE: "${CI_PROJECT_NAMESPACE#$CI_PROJECT_ROOT_NAMESPACE}"
  script:
    - sed -i "s/%%BRANCH%%/$CI_COMMIT_BRANCH/g" src/index.html
    - mv src public
    - echo $SHELL
    - echo $ROOT_RELATIVE_NAMESPACE
    - echo $CI_ENVIRONMENT_URL
    - printenv
  artifacts:
    paths:
      - public/

# Deploy a review environment for any push to a branch that is not the default
# branch
review:
  extends: .deploy
  rules:
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
  environment:
    name: "review $CI_COMMIT_BRANCH"
    url: "https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-${ROOT_RELATIVE_NAMESPACE}/${CI_PROJECT_NAME}/-/jobs/$CI_JOB_ID/artifacts/public/index.html"

# Deploy to GitLab Pages for pushes on the default branch
pages:
  extends: .deploy
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

# vi: set ts=2 sw=2 et ft=yaml:
