Skip to content

Instantly share code, notes, and snippets.

@boennemann
Created January 7, 2016 21:52

Revisions

  1. boennemann created this gist Jan 7, 2016.
    33 changes: 33 additions & 0 deletions ideas.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    The current plugin system aims to make every step of semantic-release customizeable.
    There is a lot of overhead to this though.

    ## Idea:
    1. Remove `verifyConditions`.
    2. _Hardcode_ one check that implements every CI server out there. (Mappings for each service are trivial to add, much like in https://github.com/auchenberg/volkswagen)
    3. Add an option to surpass this check.

    With this it would "just work™" on any CI server.
    If there is custom behavior required this can simply be run before the `semantic-release` command: e.g. `verify-unicorns && semantic-release pre && npm publish && semantic-release post`.
    This custom check could also set an env var read by semantic-release, so the internal CI check is surpassed.

    Offers same flexibility, less to no config.

    ## Idea:
    Remove `verifyRelease`.

    The verification can be performed with custom scripts outside of semantic-release: `semantic-release pre && verify-release && npm publish && semantic-release post`

    ## Idea:

    Implement a post step that works for GitHub, GitLab and BitBucket, and automatically performs the right thing based on auth exposed, and repository URL.
    If this needs to be customized: `semantic-release pre && npm publish && custom-release-notes`
    If this needs to be left out: `semantic-release pre && npm publish`

    ## Idea:
    Implement a commit analyzer that works for all commit message styles available in conventional-changelog: https://github.com/ajoslin/conventional-changelog/tree/master/conventions
    Defaults to Angular, chosing another style means passing one config flag.
    Passing a custom parser works like it's working right now.

    ## Metadata

    If semantic-release could make extracted metadata (commits, version details, etc.) available in the environment or in a temp file, then the custom scripts could simply pick it up again without the need to extract or parse them again.