---
include:
  - project: shore/ci-stuff
    file: templates/docker.yml
  - project: shore/ci-stuff
    file: templates/pre-commit.yml
  - project: shore/ci-stuff
    file: templates/terraform.yml

default:
  before_script:
    - apt-get update
    - apt-get install -y tofu

AWS Terraform plan:
  extends: .tf_plan
  stage: test
  variables: &aws_tf_vars
    TF_ROOT: Terraform/AWS
  rules: &tf_rules
    - changes:
        - $TF_ROOT/*
        - $TF_ROOT/**/*

AWS Terraform apply:
  extends: .tf_apply
  stage: deploy
  rules: *tf_rules
  needs:
    - job: AWS Terraform plan
      artifacts: true
  variables: *aws_tf_vars

web-proxy kodi build:
  extends: .compose-build
  tags: ["kodi.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/kodi
  rules: &compose-rules
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - if: $CI_PIPELINE_SOURCE == "push"
      changes:
        - $WORKDIR/*
        - $WORKDIR/**/*

web-proxy kodi pull:
  extends: .compose-pull
  tags: ["kodi.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/kodi
  rules: *compose-rules

web-proxy kodi run:
  extends: .compose-run
  tags: ["kodi.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/kodi
  when: manual
  rules: *compose-rules

web-proxy ns4 build:
  extends: .compose-build
  tags: ["ns4.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/ns4
  rules: *compose-rules

web-proxy ns4 pull:
  extends: .compose-pull
  tags: ["ns4.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/ns4
  rules: *compose-rules

web-proxy ns4 run:
  extends: .compose-run
  tags: ["ns4.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/ns4
  when: manual
  rules: *compose-rules

web-proxy host01 build:
  extends: .compose-build
  tags: ["host01.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/host01
  rules: *compose-rules

web-proxy host01 pull:
  extends: .compose-pull
  tags: ["host01.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/host01
  rules: *compose-rules

web-proxy host01 run:
  extends: .compose-run
  tags: ["host01.shore.co.il"]
  variables:
    WORKDIR: Compose/web-proxy/host01
  when: manual
  rules: *compose-rules

# Matrix Compose deployment.

matrix-build:
  extends: .compose-build
  tags: &matrix-tags [host01.shore.co.il]
  variables: &matrix-vars
    WORKDIR: Compose/matrix
  rules: *compose-rules

matrix-pull:
  extends: .compose-pull
  tags: *matrix-tags
  variables: *matrix-vars
  rules: *compose-rules

matrix-run:
  extends: .compose-run
  tags: *matrix-tags
  variables: *matrix-vars
  rules: *compose-rules
  when: manual
  needs:
    - job: matrix-build
    - job: matrix-pull
  after_script:
    # yamllint disable rule:line-length
    - docker-compose exec synapse sh -c "while [ ! -f /conf/homeserver.yaml ]; do echo Waiting for the config file.; sleep 1; done"
    - docker-compose exec synapse update_synapse_database --run-background-updates --database-config /conf/homeserver.yaml
    # yamllint enable rule:line-length
