Wondering what’s next for npm?Check out our public roadmap! »

    @nrk/ps-octo-publisher

    1.3.4 • Public • Published

    web-app-octopus-publisher

    install size npm version

    ⚠️ This is an internal tool used by the TV web team @ NRK
    The package is public only for ease of use with npx in CI
    settings so we dont have to provide npx --userconfig <.npmrc>

    Simple NodeJS cli tool for:

    • packaging node web apps
    • posting package to octopus deploy
    • generating release notes
    • updating release notes on octopus release

    For the pack->push->releaseNotes flow to work the Octopus project needs to be set up with automatic release creation

    The tool uses name from ${process.cwd()}/package.json for:

    • octopus feed id
    • octopus project name
    • pm2 process name

    The package exposes a bin (waop) if installed locally or globally.

    Usage

    Typical use case for node apps in the PS.Web repo, use npx in npm script and be explicit about the version (@1.0.x)

    {
      "scripts": {
        "predeploy": "npm prune --production",
        "deploy": "npx @nrk/ps-octo-publisher@1.0.x publish -w <AzureProdAppName>"
      }
    }

    Or, install globally and use exported bin waop

    > npm i -g @nrk/ps-octo-publisher
    > waop publish

    Display help

    > npx @nrk/ps-octo-publisher -h
    > npx @nrk/ps-octo-publisher notes -h
    > npx @nrk/ps-octo-publisher publish -h

    Generate Release notes

    Generating release notes (commit history) in current directory.

    Release notes Options

    Name Alias Default
    -u --url ''
    -w --webApp ''
    -o --outFile ''
    -p --plain false
    -d --debug false

    Using waop notes

    Options -u and -w are used for the same purpose, but -w is inserted into a template https://${w}.azurewebsites.net/ping and -u is used as is. The options expect the resulting url to respond with json that satisfies:

    interface Ping {
      hash?: string; // commit hash
      date?: string; // json date
      env?: {
        DEPLOY_TIME?: string; // json date
      };
    }

    If either of those properties exist they are used to determine which commits are to be included in the release notes so that commies = [<prop>...master].

    • waop notes - generate notes from last 5 commits in current folder
    • waop notes -p - generate notes as plain text (no markdown links)
    • waop notes -o releaseNotes.md - output to file
    • waop notes -u https://tv.nrk.no/ping - provide url
    • waop notes -w web-header-prod-we - provide Azure Web App name

    Publish

    Packages app in zip and pushes to Octopus Deploy. On publish success tries to set release notes on the auto-created release.

    For release notes to be exact commit diff from what is currently in production, provide the -w option with the Azure Web App name (e.g. -w tv-web-search-prod-we)

    Publish Options

    Name Alias Default
    -g --globs ['*.*', 'dist/**', 'static/**', 'scripts/**', 'node_modules/**']
    -c --pm2 true
    -w --webApp ''
    -k --octoKey '' (by default read from process.env['OCTOPUS_API_KEY'])
    -s --octoServer 'https://madeploy04/'
    -v --buildVersion '' (by default read from process.env['BuildVersion'])
    -n --dryRun ''

    By default octoKey and buildVersion is read from env['OCTOPUS_API_KEY'] and env.BuildVersion respectively. Passing those variables in does nothing if the environment variables are defined.

    Using waop publish

    • waop publish -v 0.1.1 -k <api-key> - publish version 0.1.1
    • waop publish -g dist/** - publish only content in dist/**
    • waop publish --pm2 false - publish and do't add pm2.config.json
    • waop publish --w tv-web-search-prod-we - publish and call https://tv-web-search-prod-we.azurewebsites.net/ping to get commit hash / build date to use for release notes.

    Git formatting patterns

    There are many alternatives we could use for the commit history.
    Some of the placeholders that can be used in --pretty=format:"" are:

    • '%h': abbreviated commit hash
    • '%an': author name
    • '%aN': author name (respecting .mailmap)
    • '%ae': author email
    • '%aE': author email (respecting .mailmap)
    • '%ad': author date (format respects --date= option)
    • '%aD': author date, RFC2822 style
    • '%ar': author date, relative
    • '%at': author date, UNIX timestamp
    • '%ai': author date, ISO 8601-like format
    • '%aI': author date, strict ISO 8601 format
    • '%cn': committer name
    • '%cN': committer name (respecting .mailmap, see git-shortlog[1] or git-blame[1])
    • '%ce': committer email
    • '%cE': committer email (respecting .mailmap, see git-shortlog[1] or git-blame[1])
    • '%cd': committer date (format respects --date= option)
    • '%cD': committer date, RFC2822 style
    • '%cr': committer date, relative
    • '%ct': committer date, UNIX timestamp
    • '%ci': committer date, ISO 8601-like format
    • '%cI': committer date, strict ISO 8601 format
    • '%d': ref names, like the --decorate option of git-log[1]
    • '%D': ref names without the " (", ")" wrapping.
    • '%e': encoding
    • '%s': subject
    • '%f': sanitized subject line, suitable for a filename
    • '%b': body
    • '%B': raw body (unwrapped subject and body)
    • '%N': commit notes

    Keywords

    none

    Install

    npm i @nrk/ps-octo-publisher

    DownloadsWeekly Downloads

    47

    Version

    1.3.4

    License

    UNLICENSED

    Unpacked Size

    30.5 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar