zaengle / envoyer-sentry-release-notifier
一个帮助为Sentry打包发布提交的工具。
v0.0.3
2023-03-07 18:38 UTC
Requires
- php: ^7.1|^8.0
- illuminate/console: 5.*|6.*|7.*|8.*|9.*|10.*
- illuminate/support: 5.*|6.*|7.*|8.*|9.*|10.*
This package is auto-updated.
Last update: 2024-09-07 21:53:38 UTC
README
此工具有助于在从Laravel Envoyer部署时收集提交并将其作为新版本发送到Sentry的过程。
Sentry可以通过提供起始哈希和结束哈希将一系列git提交关联到一个发布版本。由于.git仓库并未与站点一同部署,使用Envoyer时可能会有些棘手。通过以下部署钩子的组合,我们能够捕获两个必需的哈希,并利用Sentry中的提交跟踪功能。
安装
composer require zaengle/envoyer-sentry-release-notifier
Sentry配置
在你的config/sentry.php
文件中添加此包提供的getCommitHash()
辅助函数。
<?php use Zaengle\EnvoyerSentryReleaseNotifier\EnvoyerSentryReleaseNotifier; return [ // capture release as git sha 'release' => app(EnvoyerSentryReleaseNotifier::class)->getCommitHash(), // rest of config... ];
Envoyer钩子
一旦你的项目配置了Sentry,请将以下部署钩子添加到Envoyer中。 你需要运行一个只启用Write Git Hash
钩子的部署,以便创建初始的.commit_hash
文件,供未来的版本使用。
激活新版本 : AFTER
Envoyer激活新版本后,我们需要将哈希写入文件,以便为下一个版本提供,它将被用作“commit_hash_previous”
echo "{{ sha }}" > {{release}}/.commit_hash
注意 - 在激活其他钩子之前,需要运行此命令一次,以便为后续步骤创建初始的.commit_hash
文件。
克隆新版本 : AFTER
yes | cp -f {{project}}/current/.commit_hash {{release}}/.commit_hash_previous echo "{{ sha }}" > {{release}}/.commit_hash
清除旧版本 : AFTER
export GIT_REPO="zaengle/my-sentry-project-name" export ENVIRONMENT="develop" export PREVIOUS_SHA=`tail {{release}}/.commit_hash_previous` export SENTRY_ORG="zaengle" export SENTRY_BEARER_TOKEN="MyBearerToken" export SENTRY_PROJECT="my-sentry-project-name" cd {{ release }} curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ -H "Authorization: Bearer ${SENTRY_BEARER_TOKEN}" \ -X POST \ -H "Content-Type:application/json" \ -d "{ \"environment\":\"${ENVIRONMENT}\", \"version\":\"{{sha}}\", \"refs\":[{ \"repository\":\"${GIT_REPO}\", \"commit\":\"{{sha}}\", \"previousCommit\": \"${PREVIOUS_SHA}\" }], \"projects\": [\"${SENTRY_PROJECT}\"] }" curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/{{sha}}/deploys/ \ -X POST \ -H "Authorization: Bearer ${SENTRY_BEARER_TOKEN}" \ -H 'Content-Type: application/json' \ -d " { \"environment\": \"${ENVIRONMENT}\", \"name\": \"{{release}}\" }"
注意:Sentry部署名称限制为64个字符。根据你的项目域名和发布路径的长度,你可能会收到以下错误。
{"name":["Ensure this field has no more than 64 characters."]}
如果是这样,请更新部署脚本来发送{{time}}
而不是{{release}}
。
... { \"environment\": \"${ENVIRONMENT}\", - \"name\": \"{{release}}\" + \"name\": \"{{time}}\" }"
许可协议
MIT许可协议(MIT)。请参阅许可文件获取更多信息。