Releasing a new version ======================= The list of steps needed to make a release of the framework has grown over time and became hard to manage manually, so we have created a command line tool to ensure no step is forgotten. Release steps overview ---------------------- - ... The release command ------------------- These steps are automated in the [release console command](../../build/controllers/ReleaseController.php) which is included in the framework development repository. The release command can be invoked using the Yii application contained in the `build` directory of the framework: ./build/build help release # run this in framework repo root > Info: You can run the command with the `--dryRun` option to see what it would do. Using this option, > no changes will be made and no commits or tags will be created or pushed. ### Requirements The release command depends on the development environment introduced in the [Git Workflow Document](git-workflow.md#extensions), i.e. the application templates must be located under `/apps/` and extensions must be located under `/extensions/`. This structure is preferably created using the `dev/app` and `dev/ext` commands. e.g. install an extension: ./build/build dev/ext authclient or an application: ./build/build dev/app basic This installation will ensure that the extension will use the same framework code that is in the current repositories state. ### Version overview To get an overview over the versions of framework and extensions, you can run ./build/build release/info You may run it with `--update` to fetch tags for all repos to get the newest information. ### Make a release Making a framework release includes the following commands (apps are always released together with the framework): ./build release framework ./build release app-basic ./build release app-advanced Making an extension release includes only one command (e.g. for redis): ./build release redis The default release command will release a new minor version from the currently checked out branch. To release another version than the default, you have to specify it using the `--version` option, e.g. `--version=2.1.0`, or `--version=2.1.0-beta`. #### Release a new major version e.g. 2.1.0 Releasing a new major version includes a branch change as described in the [versioning policy](versions.md). The following describes an example of releasing version `2.1.0` which has been developed on the `2.1` branch derived from `master`. `master` has contained the `2.0.x` versions before. - create a new branch `2.0` from `master` - ensure composer.json does not contain a branch alias on this branch anymore. - merge necessary changes from `master` to `2.1` - point `master` to the lastest commit on `2.1` - adjust composer.json branch alias for master to `2.1.x-dev`. - delete `2.1` branch Now check out `master` and run the release command with the `--version=2.1.0` option.