Skip to content

Commit

Permalink
Setup release tool
Browse files Browse the repository at this point in the history
  • Loading branch information
lcharette committed Jan 21, 2025
1 parent 6d73fd3 commit 1b3752d
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 1 deletion.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## Unreleased
- First Alpha release of UserFrosting 6
49 changes: 49 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,52 @@
[![Donate](https://img.shields.io/badge/Ko--fi-Donate-blue?logo=ko-fi&logoColor=white)](https://ko-fi.com/lcharette)

## Setup

1. Clone this repo
```
git clone https://github.com/userfrosting/monorepo.git
```
2. Run Composer
```
composer install
```
3. Run Bake
```
php bakery serve
```
4. Run at the same time the PHP server and the Vite server is **two terminals**:
```
php bakery assets:vite
```
```
php bakery serve
```

...or use the VSCode `==> Serve` pre-configured task.

The app will be available at [http://localhost:8080](http://localhost:8080).

## Composer

The monorepo is managed by [Monorepo-builder](https://github.com/symplify/monorepo-builder) on the Composer side.
It's important to edit the individual package `composer.json`, not the root one. After each update, run this command.

```
vendor/bin/monorepo-builder merge
```

## Release

To release a new version, for example `6.0`, run this command. Composer will be updated, as well as NPM and a git tag will be pushed using the local user :

```
vendor/bin/monorepo-builder release 6.0
```

Or:

```
vendor/bin/monorepo-builder release patch
```

You can use `minor` and `major` too.
4 changes: 3 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"name": "userfrosting/userfrosting",
"authors": [
{
"name": "Alexander Weissman",
Expand Down Expand Up @@ -98,7 +99,8 @@
"UserFrosting\\Sprinkle\\Admin\\Tests\\": "packages/sprinkle-admin/app/tests/",
"UserFrosting\\Sprinkle\\Core\\Tests\\": "packages/sprinkle-core/app/tests/",
"UserFrosting\\Tests\\": "packages/framework/tests",
"UserFrosting\\Tests\\App\\": "packages/skeleton/app/tests/"
"UserFrosting\\Tests\\App\\": "packages/skeleton/app/tests/",
"Workers\\MonoRepo\\": "utils/"
}
}
}
27 changes: 27 additions & 0 deletions monorepo-builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,35 @@

declare(strict_types=1);

include_once __DIR__ . '/vendor/autoload.php';

use PharIo\Version\Version;
use Symplify\MonorepoBuilder\Config\MBConfig;
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;
use Symplify\MonorepoBuilder\Release\Process\ProcessRunner;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\AddTagToChangelogReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushNextDevReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetCurrentMutualDependenciesReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetNextMutualDependenciesReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateBranchAliasReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateReplaceReleaseWorker;
use Workers\MonoRepo\NpmVersionWorker;

return static function (MBConfig $mbConfig): void {
$mbConfig->packageDirectories([__DIR__ . '/packages']);

// release workers - in order to execute
$mbConfig->workers([
UpdateReplaceReleaseWorker::class,
SetCurrentMutualDependenciesReleaseWorker::class,
AddTagToChangelogReleaseWorker::class,
NpmVersionWorker::class,
TagVersionReleaseWorker::class,
PushTagReleaseWorker::class,
SetNextMutualDependenciesReleaseWorker::class,
UpdateBranchAliasReleaseWorker::class,
PushNextDevReleaseWorker::class,
]);
};
28 changes: 28 additions & 0 deletions utils/NpmVersionWorker.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

declare(strict_types=1);

namespace Workers\MonoRepo;

use PharIo\Version\Version;
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;
use Symplify\MonorepoBuilder\Release\Process\ProcessRunner;

final class NpmVersionWorker implements ReleaseWorkerInterface
{
public function __construct(
private ProcessRunner $processRunner,
) {
}

public function work(Version $version) : void
{
$npmVersionCommand = \sprintf('npm version %s workspaces --git-tag-version false', $version->getVersionString());
$this->processRunner->run($npmVersionCommand);
}

public function getDescription(Version $version) : string
{
return \sprintf('Set npm version "%s"', $version->getVersionString());
}
}

0 comments on commit 1b3752d

Please sign in to comment.