question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Improve our build and release workflow

See original GitHub issue

I want to use this issue to discuss merging (some) stryker repositories together.

Right now we have separate repositories for stryker-api, stryker as well as all of the plugins (stryker-karma-runner, stryker-mocha-runner, etc). We did this because we want to release them as separate modules to npm.

This presents a number of challenges to us as maintainers:

  1. Coordinating changes across modules is a pain. You can build modules and install them locally, but the travis build will fail. This leaves you with releasing them under a tag in npm (@next for example) to prevent unsuspecting users to install it by accident.
  2. Releasing a new major version often means you need to release them one by one. If in the meantime someone installs npm i stryker stryker-api for example, it might break for him because stryker-api could already be released with the next major release.
  3. Steep learning curve for new people wanting to change cross module functionality.

This could all be solved with lernajs. With lerna its possible to easily host multiple npm modules in the same git repository. This solves all above challenges:

  1. Coordinating changes is simpler, because lerna bootstrap takes care of linking your npm modules locally.
  2. Releasing a new major version can be done using lerna publish, which will first publish to an npm tag “lerna-temp”. Only when everything is published, it will tag them with “latest” (the default tag for npm install).
  3. The steel learning curve will be removed as we can easily tell people to run:
git clone git@github.com:stryker-mutator:stryker
cd stryker
npm i
./node_modules/.bin/lerna bootstrap

we could even remove the last step by introducing a post-install step that does that for you.

However, lernajs is not a build tool, each module should still incorporate its own build. This also means that we should change our grunt setup, as grunt release now does building, testing and releasing for us. Including updating our contributors and changelog, etc.

Side note: lerna doesn’t force us to maintain a single version number. However, it can. See https://github.com/lerna/lerna#how-it-works .

Issue Analytics

  • State:closed
  • Created 7 years ago
  • Reactions:1
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

2reactions
nicojscommented, Mar 14, 2017

@simondel I’m really leaning towards putting all repo’s into one. LernaJS also takes into account the order in which to build. For example: stryker-api would be build before stryker, because stryker is dev-dependend on stryker-api.

An integration test module is pretty easy to. We should put it outside of the packages and add a relative file dependency on them so we actually test an npm install.

We could leave versioning for what it is right now.

0reactions
nicojscommented, Apr 6, 2017

Solves with #257

Read more comments on GitHub >

github_iconTop Results From Across the Web

Level Up Your Release Management Workflow - Mattermost
Learn about the best practices, processes, and tools needed to develop more robust, effective release management workflows.
Read more >
How to Build a Release Management Process | LaunchDarkly
Increase release frequency; Reduce bottlenecks in the workflow; Shorten feedback loops; Limit unplanned work; Reduce defects and production ...
Read more >
5 Steps to a Successful Release Management Process
Another option is to create a release workflow. Lucidchart is a visual productivity platform that helps developers map their processes clearly.
Read more >
10 Ways to Improve Your Software Release Management
This blog will look at various ways to improve your Software Release Management.
Read more >
3 Steps to Improve Your Product Release Process - Jexo
1. Standardize. Release process assessment; Release Workflow Builder ; 2. Template. Create Release Plan Template ; 3. Analyze. Release Health ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found