триггер задания сборки:
опция 1: добавьте when: manual
в задание, и вы можете запустить задание вручную в CI / CD> Конвейеры
[ 1114] вариант 2:
only:
- <branchname>
в этом случае задание запускается, когда вы нажимаете на определенную ветку (это мое личное предложение)
вариант 3: [1115 ] не добавляйте ничего, и задание будет выполняться каждый раз, когда вы нажимаете код
Конечно, вы можете комбинировать перечисленные выше параметры.
Кроме того, можно пометить задание веб-запросом, используя маркер задания.
docker build
команда будет работать в конвейере. Я думаю, в разделе сценария. Требования к докеру движка на gitlab-runner, которые выбирают работу.
Или мне нужно «скопировать» содержимое файла Dockerfile в файл CI?
blockquote>нет
Можно использовать инструкцию ЦП RDTSC (принимающий x86). Эта инструкция дает счетчик циклов ЦП, но знать, что это увеличится очень быстро до своего максимального значения и затем сбросит к 0. Как статья Wikipedia упоминает, Вы могли бы быть более обеспеченным использованием функции QueryPerformanceCounter.
Система. Диагностика. Секундомер. GetTimestamp () возвращают количество цикла ЦП начиная с источника времени (возможно, когда запуск компьютера, но я не уверен), и я никогда не видел его не увеличенный между 2 вызовами.
Циклы ЦП будут специфичны для каждого компьютера, таким образом, Вы не сможете использовать его для слияния файла журнала между 2 компьютерами.
Вывод RDTSC может зависеть от тактовой частоты текущего ядра, которая для современных центральных процессоров не является ни постоянной, ни, в многоядерной машине, последовательной.
Используйте системное время, и если контакт с подачей от нескольких систем использует источник времени NTP. Можно получить надежные, последовательные чтения времени тот путь; если издержки слишком много в Ваших целях, с помощью HPET, чтобы решить, что время протекло, так как прошлый известный надежный раз, читая лучше, чем использование один HPET.
Вот интересная статья! говорит, чтобы не использовать RDTSC, но вместо этого использовать QueryPerformanceCounter.
Заключение:
Используя старый регулярный
timeGetTime()
чтобы сделать синхронизация не надежна во многих операционных системах на базе Windows, потому что гранулярность системного таймера может быть целых 10-15 миллисекундами, означая этоtimeGetTime()
только с точностью до 10-15 миллисекунд. [Обратите внимание, что высокие гранулярности происходят в основанных на NT операционных системах как Windows NT, 2000, и XP. Windows 95 и 98 имеет тенденцию иметь намного лучшую гранулярность, приблизительно 1-5 мс.]Однако, если Вы звоните
timeBeginPeriod(1)
в начале Вашей программы (иtimeEndPeriod(1)
в конце),timeGetTime()
будет обычно становиться с точностью до 1-2 миллисекунд и предоставит Вам чрезвычайно точную информацию синхронизации.
Sleep()
ведет себя так же; отрезок времени этоSleep()
на самом деле сны для идут рука об руку с гранулярностьюtimeGetTime()
, таким образом, после вызоваtimeBeginPeriod(1)
однажды,Sleep(1)
будет на самом деле спать для 1-2 миллисекунд,Sleep(2)
для 2-3, и так далее (вместо того, чтобы спать в инкрементах целых 10-15 мс).Для более высокой синхронизации точности (точность подмиллисекунды), Вы, вероятно, захотите избегать использования мнемосхемы блока RDTSC, потому что трудно калибровать; вместо этого, используйте
QueryPerformanceFrequency
иQueryPerformanceCounter
, которые являются с точностью до меньше чем 10 микросекунд (0,00001 секунды).Для простой синхронизации и timeGetTime и QueryPerformanceCounter работают хорошо, и QueryPerformanceCounter, очевидно, более точен. Однако, если необходимо сделать какой-либо вид "синхронизированных пауз" (таких как необходимые для framerate, ограничивающего), необходимо остерегаться нахождения в вызове цикла QueryPerformanceCounter, ожидающий его для достижения определенного значения; это съест выше на 100% Вашего процессора. Вместо этого рассмотрите гибридную схему, где Вы звоните, Сон (1) (не забывайте timeBeginPeriod (1) сначала!) каждый раз, когда необходимо передать больше чем 1 мс времени и затем только ввести цикл QueryPerformanceCounter 100%-busy для завершения последнего <1/1000-й из секунды задержки, Вам нужно. Это даст Вам ультраточные задержки (с точностью до 10 микросекунд) с очень минимальным использованием ЦП. См. код выше.
Используйте GetTickCount и добавьте другой счетчик, поскольку Вы объединяете файлы журнала. Не даст Вам идеальную последовательность между различными файлами журнала, но это, по крайней мере, сохранит все журналы из каждого файла в правильном порядке.