Не удается получить доступ к файлам сборки Heroku /tmp/build_{sha} в Github Action после завершения сборки

Я запускаю Github Action, который развертывает мое приложение на Heroku с помощью двух соответствующих шагов.

  1. Build Step: push на Heroku, сборка (включая heroku/nodejs buildpack), создание JS sourcemaps (среди прочего).
  2. .
  3. 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 уже запущен, исходные карты сгенерированы, а имена файлов переименованы для очистки кэша.

Вернуться на верх