env:
  COMPOSE_DOCKER_CLI_BUILD: 1
  DOCKER_BUILDKIT: 1
  GIT_EMAIL: arquitetura@involves.com
  GIT_USER: Buildkite
  
steps:
  - label: "Weekly dependencies update"
    key: "update"
    command:
      - git config --global user.email $$GIT_EMAIL
      - git config --global user.name $$GIT_USER
      - git checkout master && git fetch && git pull --rebase
      - docker build --tag=$$BUILDKITE_BUILD_ID --target=dependencies-update .
      - docker run --name=$$BUILDKITE_BUILD_ID $$BUILDKITE_BUILD_ID
      - docker cp $$BUILDKITE_BUILD_ID:/data/package.json .
      - docker rm -vf $$BUILDKITE_BUILD_ID
      - docker build --tag=$$BUILDKITE_BUILD_ID --target=test .
      - docker run --rm $$BUILDKITE_BUILD_ID
      - git add package.json
      - git commit -m "[CI] Updating Dependencies (weekly)"
      - git push -u origin master
    soft_fail:
      - exit_status: 1
    agents:
      queue: "docker"
    if: build.source == "schedule"

  - label: "Lint"
    key: "lint"
    command:
      - docker build --tag=$$BUILDKITE_BUILD_ID --target=lint .
      - docker run --rm $$BUILDKITE_BUILD_ID
    agents:
      queue: "docker"
    if: build.source != "schedule"

  - label: "Tests"
    key: "test"
    command:
      - docker build --tag=$$BUILDKITE_BUILD_ID --target=test .
      - docker run --rm $$BUILDKITE_BUILD_ID
    agents:
      queue: "docker"
    if: build.source != "schedule"

  - label: "Publish Library"
    key: "publish"
    command:
      - git checkout master && git fetch && git pull --rebase
      - docker build --build-arg NPM_TOKEN=$$NPM_TOKEN --build-arg GIT_EMAIL=$$GIT_EMAIL --build-arg GIT_USER=$$GIT_USER --tag=$$BUILDKITE_BUILD_ID --target=publish .
    agents:
      queue: "docker"
    depends_on:
      - "lint"
      - "test"
    if: build.source != "schedule" && build.branch == "master"