Обновить
17
-1.6
Andrew Ka@comerc

#кодеротбога

Отправить сообщение

Как отказаться от helper_image?

### config.toml - diff helper_image VS docker image ###
# concurrent = 1
concurrent = 2
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "via docker"
  url = "http://localhost"
  id = 13
  token = "glrt-2GR51rubUbopK_fqMFLz"
  token_obtained_at = 2023-12-12T14:51:21Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  # only for docker image:
  environment = ["DOCKER_DRIVER=overlay2", "DOCKER_LOGIN=gitlab-ci", "DOCKER_PASSWORD=password"]
  [runners.cache]     
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    # image = ""
    image = "docker:latest"
    # privileged = true
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    # volumes = ["/certs/client", "/cache"]
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0
    network_mode = "host"
    # helper_image = "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-e0218c92"
    # network_mtu = 0
    # only for docker image:
    pull_policy = ["always", "if-not-present"]

В режиме "ковровое бомбометание" спасает "trunk based development".

(И ещё до кучи, не проверял - ChatGPT насоветовал.)

Это позволяет запускать задания GitLab CI/CD в отдельных, изолированных контейнерах Docker. Вот пример конфигурации docker-compose.yml для GitLab Runner:

version: '3.5'
services:
  dind:
    image: docker:20-dind
    restart: always
    privileged: true
    environment:
      DOCKER_TLS_CERTDIR: ''
    command:
      - --storage-driver=overlay2
  runner:
    restart: always
    image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine
    depends_on:
      - dind
    environment:
      - DOCKER_HOST=tcp://dind:2375
    volumes:
      - ./config:/etc/gitlab-runner:z
  register-runner:
    restart: 'no'
    image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine
    depends_on:
      - dind
    environment:
      - CI_SERVER_URL=${CI_SERVER_URL}
      - REGISTRATION_TOKEN=${REGISTRATION_TOKEN}
    command:
      - register
      - --non-interactive
      - --locked=false
      - --name=${RUNNER_NAME}
      - --executor=docker
      - --docker-image=docker:20-dind
      - --docker-volumes=/var/run/docker.sock:/var/run/docker.sock
    volumes:
      - ./config:/etc/gitlab-runner:z

Вам также потребуется файл .env со следующим содержимым:

RUNNER_NAME=RUNNER-NAME
REGISTRATION_TOKEN=TOKEN
CI_SERVER_URL=https://gitlab.com/

Пожалуйста, замените RUNNER_NAME, REGISTRATION_TOKEN, и CI_SERVER_URL на соответствующие значения для вашего проекта.

version: '3.5'
name: gitlab-runner
services:
  runner:
    restart: always
    image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ~/.gitlab-runner:/etc/gitlab-runner:z
    network_mode: host

Ларчик просто открывался. Это всё, что нужно для запуска gitlab-runner без танцев с бубном.

Круто, да. Но мой кумир - Андрей Ситник.

Так squash убивает машину времени. Меня, как археолога, это обламывает.

Хе-хе. Я тоже играю в эту игру. Дофаминовый майнинг.

Что-то у меня другой ответ ))

В какой-то момент потребовалось выполнить:

$ git config --global --add safe.directory ~/flutter
$ sudo chown -R $(whoami) ~/flutter/version

(обстоятельства не помню, просто оставлю тут)

ещё 12 часов траха, и получилось для executor = "docker"
ещё 12 часов траха, и получилось для executor = "docker"

а у меня получилось поднять локально
а у меня получилось поднять локально

термин МР не расшифрован

Пожалуйста, покажите рыбу проекта. Я, пока не увижу код в репке, ничего не понимаю.

https://tinkoff.github.io/investAPI/speedup/

Тинькофф Инвестиции осуществляют pre-trade контроль рисков. Это значит, что сначала на стороне брокера проверяется достаточность средств для исполнения поручения и позиций для покупки или продажи, соответствие цен и после этого заявка уходит на биржу. 

Плюс такого подхода — нельзя купить «лишних» бумаг и получить margin call. Но минус — дополнительные задержки при исполнении ордеров, которые в среднем составляют 200—400 мс. 

 Еще у брокера есть ограничение на количество выставленных заявок в единицу времени — на момент написания статьи ограничение составляет 300 поручений в минуту. Поэтому HFT-стратегии, требующие минимальных задержек и большого количества поручений, скорее не подходят для работы через Tinkoff API.

у меня все ходы записаны

func (s *Storage) Stop() error {
	return s.db.Close()
}

Номинально присутствует метод для остановки Storage, но он не применяется для Graceful Shutdown.

Смущает двойная обработка ошибок, например в Login. Зачем их там логировать? Напрашивается отдельный middleware-слой на потоке данных, в котором выполняется централизованное логирование.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность