Загрузка исходного кода App Engine
Из нескольких SO вопросов, которые я видел, видно, что это проблема других пользователей. Недавно один из наших главных разработчиков ушел, и я унаследовал множество его проектов. Одним из них является веб-сайт, который, похоже, работает на движке приложений с облачных платформ Google. Из документации App Engine, чтобы загрузить исходный код, вы используете appcfg.py download_app
команда. Что я и сделал, однако единственные результаты, которые я получил от этого звонка:
Fetching file list...
Fetching files...
И тогда это просто заканчивается. Нет сообщений об ошибках или каких-либо сообщений вообще, и, конечно, он не загружал исходный код в указанную мной директорию вывода.
Почесывая мою голову и просматривая различные SO-сообщения, кто-то упомянул кое-что о том, чтобы войти в google cloud vm напрямую и выполнить ту же команду, и, к моему удивлению, обнаружил то же самое поведение, которое я делал в своем локальном терминале.
Это заставило меня понять, что это должно быть что-то еще в игре. Я посмотрел на мой versions
на панели инструментов App Engine на GCP. Я вижу, как работает мой экземпляр, он правильно говорит Serving
и если я нажму на ссылку, это приведет меня на сайт, который загружается нормально. Однако под Size
это говорит 0 B
что заставило меня задуматься, возможно, именно поэтому download_app
ничего не загружается, потому что версия 0 B?
Я пытаюсь понять, почему для версии написано 0 B, когда сайт работает нормально и как я могу получить исходный код для этого. Вот скриншот для справки
И скриншот моего терминала (локальный). Очевидно, что я опустил флаги -A и -V, но они установлены правильно, и если я намеренно сделаю их неправильными, я действительно получу сообщение об ошибке.
РЕДАКТИРОВАТЬ
Чтобы все знали, я также убедился, что у моего пользователя были правильные разрешения. Owner
, App Engine Owner
... и некоторые другие. Я не думаю, что это проблема.
3 ответа
Публикуем это, поскольку ни один из перечисленных в Интернете методов не привел меня к коду (до июня 2021 г.)
Примечание: appcfg.py больше не поддерживается Google.
Вы можете попробовать получить доступ к своему исходному коду через;
Google Cloud Platform> Отладчик> выбор версии приложения из комбинированного списка вверху.
Это отобразит файлы этой версии на левой панели. Невозможно загрузить код автоматически, но вы можете скопировать и вставить код.
Совет: отправьте свой код в репозиторий Git, чтобы избежать этой неприятности в следующий раз.
Надеюсь, вы найдете это полезным.
При развертывании приложения App Engine Flexible исходный код загружается в облачное хранилище вашего проекта в виде корзины с именем staging.<project-id>.appspot.com
, Вы можете перемещаться в этом сегменте и загружать исходный код для конкретной версии в виде файла.tar.
В качестве альтернативы, вы можете найти точный URL-адрес облачного хранилища для вашего исходного кода, перейдя в Dev Console > Container Registry > Build History и выберите сборку для вашей версии. Вы найдете ссылку на ваш исходный код в разделе Информация о сборке.
Однако следует отметить, что промежуточная корзина... создается по умолчанию с правилом жизненного цикла, которое автоматически удаляет файлы старше 15 дней. Вы можете удалить это правило, если хотите, чтобы исходный код всех версий хранился неопределенно долго.
В вашем случае я считаю, что это, возможно, не помогло, поскольку файлы, возможно, уже были удалены, но стоит знать, что вы можете получить исходный код оттуда (по умолчанию исходный код не помещается в репозиторий исходного кода, ваш разработчик должен был настроить его вручную),
В консоли разработчика вы можете выбрать соответствующий проект и проверить:
- на странице Сервисов - какие сервисы, модули AKA - как раньше (и до сих пор) вызывали в разных местах, развернуло ваше приложение
- на странице Версии - какие версии для каждой из служб развернуты
Эта информация является то, что appcfg.py download_app
надеется. Смотрите также:
- различные
appcfg.py
варианты, использующие его--help
флаг - Как загрузить исходный код конкретной службы из AppEngine?
Вы также можете получить доступ к развернутому исходному коду в режиме реального времени (если все остальное терпит неудачу, это может быть последним средством получения кода, но утомительным), см. Мой ответ на автоматическую индексацию Google Cloud DataStore
Обновить:
Я только сейчас заметил на вашем скриншоте, что это гибкая среда приложения. appcfg.py
Документы находятся в разделе стандартной среды, я подозреваю, что это не применимо к гибкой среде, для которой развернутый образ представляет собой образ докера, созданный во время операции развертывания. От развертывания вашего приложения:
Разверните ваше приложение в App Engine, используя
gcloud app deploy
команда. Эта команда автоматически создает образ контейнера с помощью службы Container Builder, а затем развертывает этот образ в гибкой среде App Engine. Контейнер будет содержать все локальные изменения, которые вы внесли в образ среды выполнения.
Возможно, можно получить доступ к коду на фактическом экземпляре GCE, на котором выполняется приложение, подключившись к запущенному экземпляру и запустив оболочку в контейнере приложения, см. Подключение к экземпляру