Ответ 1
Это, вероятно, не простое решение, которое вы ищете, но я не думаю, что есть гораздо более простой способ получить доступ к секретам при создании запросов на растяжение, если Трэвис не добавит поддержку для него в той или иной форме. В конце концов, секретные переменные недоступны по уважительной причине, так как запросы тяги могут содержать произвольный код, который запускается во время сборки. Злоумышленник может использовать это для создания запроса на перенос, который изменяет процесс сборки, чтобы прочитать расшифрованные переменные среды и отправить их ему.
Основная проблема заключается в том, что код, который запускает сборку, и построенный код исходят от одного и того же (иногда ненадежного) источника. Чтобы иметь возможность использовать секреты в процессе сборки, необходимо, чтобы код, который строился, и код, который был построен, нужно было разделить, а код сборки должен был поступать из надежного источника. Никакой код из ненадежного источника не должен выполняться, если он не изолирован, поэтому он не может получить доступ к каким-либо из секретов.
Насколько мне известно, Тревис не предоставляет стандартного метода для достижения этого.
Следуя идее разделения кода сборки и строящего кода, должно быть возможным, тем не менее, выполнить анализ Sonarqube против запросов внешнего pull.
Первым шагом будет создание нового "кода сборки" репозитория в Github, который содержит только надежные скрипты сборки. Эти сценарии отвечают за проверку запроса на растяжение и выполнение анализа Sonarqube. Поскольку они не являются частью запроса внешнего pull, они могут получить доступ к секретным переменным. Однако будьте осторожны, чтобы не запускать модульные тесты в запросе на извлечение, так как они ненадежны.
Второй шаг - инициировать сборку репозитория "код сборки" всякий раз, когда запрос на перенос делается против реального репозитория исходного кода. Travis предоставляет API для запуска сборки. Однако это также требует тайны. Поэтому мы не можем просто создать сборку репозитория "build code" при построении запроса на pull. Однако мы можем установить webhook в репозиторий исходного кода в Github, который вызывает небольшую веб-службу, когда тянуть запрос сделан. Затем эта служба вызывает API Travis для запуска сборки надежного репозитория кода сборки.
Надеюсь, это имеет смысл. Пожалуйста, дайте мне знать, если что-то неясно.
Я еще не сделал этого сам. Поэтому я не могу предоставить какой-либо код. Но я думаю, что не должно быть слишком сложно настроить небольшую веб-службу, которая превращает webhook из запроса Github в запрос на сборку для Travis.