45 lines
1.4 KiB

  1. #!/bin/bash
  2. ## Init is run on host
  3. ## For now it is run every time the script is launched, but
  4. ## it should be launched only once after build.
  5. ## Accessible variables are:
  6. ## - SERVICE_NAME Name of current service
  7. ## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
  8. ## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
  9. ## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
  10. set -e
  11. server="$(options-get server)" || exit 1
  12. secret="$(options-get secret)" || exit 1
  13. name="$(options-get name)" || true
  14. capacity="$(options-get capacity)" || true
  15. name=${name:-"$(hostname)/$SERVICE_NAME"}
  16. capacity=${capacity:-2}
  17. service_def=$(get_compose_service_def "$SERVICE_NAME") || exit 1
  18. labels_def=$(e "$service_def" | shyaml get-value options.labels) || true
  19. [ "$labels_def" == None ] && labels_def=""
  20. if [ "$labels_def" ]; then
  21. labels=""
  22. while read-0 label value; do
  23. var+="$label:$value,"
  24. done < <(printf "%s" "$labels_def" | shyaml key-values-0)
  25. labels="${var::-1}"
  26. fi
  27. init-config-add "\
  28. $MASTER_BASE_SERVICE_NAME:
  29. environment:
  30. DRONE_RPC_SERVER: $server
  31. DRONE_RPC_SECRET: $secret
  32. DRONE_RUNNER_NAME: $name
  33. DRONE_RUNNER_CAPACITY: $capacity
  34. $([ "$labels" ] && echo "DRONE_RUNNER_LABELS: '$labels'")
  35. volumes:
  36. - /var/run/docker.sock:/var/run/docker.sock
  37. "