mehrancodes/veyoze
Veyoze is a Laravel package that provides a clean, configurable toolkit for common application workflows. It follows Laravel conventions, installs quickly, and offers an expressive API with sensible defaults to help developers reduce boilerplate and ship features faster.
FORGE_DEPLOY_KEY_PUBLIC / FORGE_DEPLOY_KEY_PRIVATE) and GIT_API_URL for self-hosted instances mean Harbor can be adopted where the Git API is not reachable from CI (air-gapped, restricted egress, self-managed GitLab). That converts a previously hard "no" into a supported configuration.git_provider, the per-PR concurrency guidance — are the kind of toil that erodes trust in internal tooling. This is a concrete backlog item to point at when arguing for platform-team investment.FORGE_GITHUB_DEPLOY_KEY → FORGE_DEPLOY_KEY deprecation (alias retained, removal in a future major) and the PHP 8.2+ requirement are roadmap inputs: schedule the rename, confirm runtime versions, and budget for the eventual major.Consider adopting when:
Look elsewhere when:
:8.3. Check your laravel-test-runner (or equivalent) image before committing.concurrency group recommended in the release notes) you will accrue orphaned sites and spend.Rollout caveats to plan for:
concurrency group to both provision and teardown jobs. Without it, rapid successive pushes or PR reopen races two runs against the same site and one fails with The site must be installed before it can be deployed. This is a documentation fix, not a code fix — it needs to land in your workflow templates, not just in someone's reading.GITHUB_TOKEN in Actions cannot manage deploy keys; GitHub App tokens need Administration: Read & write, PATs need repo scope. Budget a short permissions review with security before rollout.FORGE_GIT_PROVIDER is now strictly validated (github, gitlab, gitlab-custom, bitbucket, custom), and custom additionally requires FORGE_GIT_REPOSITORY_URL. Typos that previously slipped through will now fail early — good, but expect a few broken pipelines on first upgrade.For executives — one paragraph: Harbor lets every pull request get its own disposable, fully deployed copy of the application, created and torn down automatically. That compresses the review cycle: product, design, and QA can click a real URL instead of waiting for a shared staging slot or running the branch locally. The v2.1.0 release materially widens who can use it — GitLab (cloud and self-hosted) is now a first-class provider alongside GitHub, and the deploy-key path that broke in v2 is fixed with no action required beyond upgrading. It lowers the cost of shipping frequently without adding headcount to release management.
For engineering leadership — the argument:
This is a buy-vs-build call we should make deliberately. The alternative is a homegrown CI script that calls the Forge API; the real cost there is not writing it, it is owning it when the API changes. That is precisely what happened here — deploy-key creation broke against Forge's current API in v2 and this release fixes it, and the fix is "upgrade." Adopting a maintained package transfers that maintenance risk off our team. The upgrade itself is low-risk: existing GitHub workflows and pre-v2 custom setups keep working unchanged, and the only mandatory code-adjacent change is renaming one env var (FORGE_GITHUB_DEPLOY_KEY → FORGE_DEPLOY_KEY), which is currently a warning, not a break.
For engineering — what to actually do:
laravel-test-runner pin from :8.1 to :8.3.FORGE_GITHUB_DEPLOY_KEY to FORGE_DEPLOY_KEY now, while the alias still works.concurrency: group: harbor-${{ github.event.pull_request.number }}, cancel-in-progress: false to both provision and teardown jobs. This is the single highest-value change in the release notes for reducing flaky runs.GIT_TOKEN permissions: GitHub App needs Administration: Read & write (and the installation must accept the updated permissions); PAT needs repo scope. GITHUB_TOKEN is not sufficient.FORGE_GIT_API_PROVIDER=gitlab-custom and GIT_API_URL=https://<host>/api/v4; this also re-enables MR announcement comments (GIT_ISSUE_NUMBER = the MR iid).FORGE_DEPLOY_KEY_PUBLIC / FORGE_DEPLOY_KEY_PRIVATE and register the key out-of-band — this is a supported path and the warnings tell you exactly what was skipped.How can I help you explore Laravel packages today?