Проблема 1: Я не видел вывод из моего док-контейнера
Я скопировал команду для запуска док-контейнера непосредственно со страницы поддержки Google .Проблема состоит в том, что эта команда содержит флаг -d
(detach), который заставляет контейнер работать в фоновом режиме и скрывает его вывод, что затрудняет отладку.После удаления я смог увидеть, что образ прокси не смог найти файл учетных данных.
Проблема 2: Файл учетных данных не найден
Я не былв состоянии потратить время на поиск правильного решения этой проблемы.Поскольку я запускаю образ прокси на сервере сборки Azure, у меня нет доступа к интерактивному терминалу, с которого можно попытаться получить доступ к файловой системе образа, чтобы попытаться отладить монтирование.Эта проблема была исправлена вместе со следующей проблемой.
Проблема 3: Я загружал файл-заполнитель для ключа учетной записи службы и заполнял его из секретной переменной в процессе сборки вместо использованияфункция безопасного файла в конвейерах Azure
Загрузка защищенного файла позволяет загружать файл в процессе сборки, не беспокоясь о том, где он хранится при загрузке, так как местоположение хранится в переменной., очень просто использовать .Я просто включил переменную location в команду запуска прокси, и она прошла гладко.
Проблема 4: Мне нужно, чтобы прокси все еще работал, когда я запускаю тесты
Прокси-сервер - это длительный процесс, поэтому запускающая его задача конвейера будет продолжать работать и блокировать выполнение остальной части конвейера до тех пор, пока прокси-сервер не остановится.Но прокси должен был работать во время выполнения тестов, поэтому единственное решение, о котором я мог подумать, это поставить их в одну и ту же задачу.
Я смог сделать это, выполнив следующую команду
<proxy launch command> & \
sleep 20 && \ //wait for the proxy to finish launching
yarn test && \
docker stop $(docker ps -a -q) //kill the proxy once tests finish running
Наконец, yaml, который загружает файл и запускает прокси-сервер и тесты, выглядит следующим образом:
- task: DownloadSecureFile@1
displayName: Download QA Key
inputs:
secureFile: 'qa-key.json'
- script: |
docker run \
-v $(Agent.TempDirectory):/config \
-p 127.0.0.1:5432:5432 \
gcr.io/cloudsql-docker/gce-proxy:1.12 /cloud_sql_proxy \
-instances=$(DBInstanceConnectionName)=tcp:0.0.0.0:5432 -
credential_file=/config/qa-key.json & \
sleep 20 && \
yarn test && \
docker stop $(docker ps -a -q)
displayName: 'Run Tests'