Не удается получить доступ к файлам сборки Heroku /tmp/build_{sha} в Github Action после завершения сборки
Я запускаю Github Action, который развертывает мое приложение на Heroku с помощью двух соответствующих шагов.
- Build Step: push на Heroku, сборка (включая heroku/nodejs buildpack), создание JS sourcemaps (среди прочего). .
- Sentry Release Step: создать релиз Sentry, и в идеале загрузить исходники, созданные на Build Step.
Я заметил в логах сборки, что мой каталог сборки /tmp/build_{sha}/
. Проект собирается здесь, и поэтому исходные карты должны быть найдены в /tmp/build_{sha}/static/dist
. Проблема в том, что я не могу найти каталог сборки или исходные карты в Sentry Release Step, или в любом шаге, который выполняется после завершения Build Step.
После завершения шага сборки я просмотрел /tmp
, но внутри нет папки build_{sha}
.
Однако, когда я запускаю heroku run bash
на развернутом dyno, я вижу sourcemaps в /static/dist
и /staticfiles/dist
, где я и ожидал их увидеть. Так куда же делись файлы сборки после Build Step и до развертывания? Разве файлы сборки не должны быть доступны на протяжении всего Github Action?
Я добился успеха в доступе к картам исходников в Build Step, используя билдпак Sentry Sourcemap buildpack. Очевидно, что он запускается во время сборки. Но я бы предпочел, чтобы это происходило в Github Action. Я также пробовал SentryWebpackPlugin, но я определил, что исходные карты должны быть загружены после завершения webpack - точнее, после завершения manage.py collectstatic
, поскольку это изменяет имена файлов исходных карт, а я хочу загрузить окончательные исходные карты.
Я читал, что эфемерное хранилище Heroku стирается при перезапуске dyno. Но я даже не могу найти эти файлы после перехода к другому шагу в моем Github Action.
...
- name: Push To Heroku Remote
run: |
git fetch --unshallow
git push --force heroku ${{ github.ref_name }}:master
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
with:
environment: staging
projects: ${{ secrets.projects }}
sourcemaps: <PATH_TO_TMP?>/staticfiles/dist
Мы решили загружать карты исходников во время фазы выпуска (release.sh) с помощью sentry-cli. К тому времени, когда наступает фаза выпуска, collectstatic уже запущен, исходные карты сгенерированы, а имена файлов переименованы для очистки кэша.