@nrk/ps-octo-publisher

1.4.0 • 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

Readme

Keywords

none

Package Sidebar

Install

npm i @nrk/ps-octo-publisher

Weekly Downloads

13

Version

1.4.0

License

UNLICENSED

Unpacked Size

30.5 kB

Total Files

10

Last publish

Collaborators

  • hammeralf
  • janerikbr
  • thormodb
  • siivers
  • torsrex
  • haraldsk
  • eskilgh
  • ragnaroh-nrk
  • daardal
  • arevjensen
  • julusian
  • madsern
  • andrefau
  • jfjeldskaar
  • muddah
  • jensrage
  • oysteinkoppang
  • phajsi
  • jorn_georg
  • bjornhels
  • halvorh
  • morten-nrk
  • nicklassvendsrud
  • kjellvnnrk
  • sanderknrk
  • nikolaia
  • eirikjstnrk
  • carinafraning
  • helenper
  • stefanogdennrk
  • jimmeloysund
  • tobiasrp
  • martiosk
  • jimalexberger
  • gunderwonder
  • hamnis
  • luminrk
  • supermeisen
  • vagifabilov
  • claudio-nrk
  • haakemon
  • zenangst
  • rannveignc
  • eschoien
  • balte
  • toshb
  • emte123
  • opet
  • klizter
  • mikkelnygard
  • feiring
  • dervodev
  • grimbur
  • gardkroyer
  • kariaan
  • edplayz
  • elias-chairi
  • miatollaksvik
  • ytterbo
  • machineboycom
  • trulsl
  • mslhm
  • cbjerkan
  • hermangudesen
  • andreeldareide
  • henningkoller
  • espenhalstensen
  • danjohnrk
  • olapeter
  • teodor-elstad
  • lorecaster
  • nrk-ps-teamcity
  • swla
  • nrk-midas-jenkins
  • andorpandor
  • nrkrichard
  • gesi
  • gundelsby-nrk
  • jonstalecarlsen
  • nrk-sofie-ci
  • nytamin
  • jesperstarkar
  • skjalgepalg
  • eirikhalvard
  • astokke
  • n640071
  • n07073
  • henrik-mattsson
  • haavardm
  • yr
  • nrk-kurator-jenkins
  • torgeilo
  • nrk-user-sync
  • dhdeploy
  • espenwa
  • ovstetun
  • stianlj
  • haraldkj
  • mariusu
  • cristobal
  • knuthaug
  • thohalv
  • johnarne
  • eshaswini
  • morrow
  • oyvindeh
  • laat
  • toggu
  • nrk-jenkins
  • plomma
  • evjand
  • moltubakk
  • ingridguren
  • lu-lux
  • andersli
  • silje
  • stiandg
  • sjurlur
  • andipodnrk
  • pkej
  • yosrimti
  • morten.nyhaug
  • ingvildcath
  • erlend.jones
  • brneirik
  • mollerse
  • tbnrk
  • nordanke
  • simonmitternacht
  • martintorgersen
  • rebchr
  • steipal
  • discobus
  • martingundersen
  • tinkajts
  • hallvardlid
  • tomivar
  • ajaco
  • tobinus
  • mortenok
  • nrk-ark-deploy
  • jeangilbertlouis
  • heidimork
  • ingriddraagen
  • fridajalborg
  • bruusi
  • rosvoll
  • christianeide
  • enordby
  • glen_imrie
  • mia.aasbakken
  • elathamna
  • evjjan17
  • olatoft
  • kongsrud
  • chrpeter
  • ingvildforseth
  • haraldk76
  • stigok
  • johannesodland
  • anders993
  • vildefj
  • vildepk
  • rolerboler
  • meloygutt
  • anders.baggethun