gitlabbin / sn-cicd

CICD Server for Service-Now

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CICD Server for Service-Now (V3)

This is the core CICD Server in version 3.
For an implementation example, please have a look at https://github.com/bmoers/sn-cicd-example-v3.

Table of contents

Whats New

Developers (End Users)

  • All changes are exported now to GIT
    • Fields containing JavaScript are still created as .js files
    • All other files / fields are exported as JSON
    • No 'empty pull request' anymore
  • The Update-Set, on which the CICD process runs, is also exported
  • Branches are automatically deleted on pull request merge
  • SSL support for portal
  • New Jobs Dashboard to display progress
  • More detailed 'build run' log

Platform

  • Use of scripted REST API to interact with ServiceNow Global Scoped App
  • Message-Queue driven Master/Worker architecture
    • Easy to scale up by adding additional workers (on local- or remote server)
  • ATF runs as worker job on server (and not anymore on build process/build tool)
  • Support for external build tool
    • Use CICD Server to extract code from ServiceNow and run a pipeline on e.g. Bamboo
    • Build results are automatically sent from build process (remote) to CICD server
  • Gulp tasks now configurable
    • Allow to modify and extend build stages
  • Better automated conflict detection on GIT merge
    • Can be extended to inform about 'last commit wins' issues
  • Null value support for empty fields
    • ServiceNow sometimes treats null as empty or empty as null, to avoid displaying unrelated changes in GIT empty is treated as null
  • Project DB (filesystem meta information) now in server and not in project
  • Option to extend or overwrite CICD server modules
  • Credentials only stored on CICD server (as env. variable) no Oauth token used anymore

Features

Export, Build, Test and Deploy an Service-Now Update-Set.

On request (received from Service-Now) do:

  • create a nodejs project
  • init a git repo, link to remote repo, switch to master branch
  • export all (related) files from Service-Now production instance
  • switch to update-set branch
  • export all files (sys_update_xml) from Service-Now development instance
  • run npm install
  • run gulp
    • document the files with JSDoc
    • check the quality with ESLint
    • run the test cases (ATF tests) IN Service-Now via mocha wrapper
  • if all gulp tasks are successful
    • raise a pull request in remote git repo
    • wait for code review and pull request completion
    • on complete
      • set update-set complete
      • deploy update-set to target

Pull Request

pul request example

Slack Example

slack message example

UI Example

web ui example

Contribute

Please fork, please contribute.

Release Notes (3.0.0 - 3.1.0)

  • 3.1.0 - export empty values as null CICD_EXPORT_NULL_FOR_EMPTY - auto delete branch on merge CICD_GIT_DELETE_BRANCH_ON_MERGE

    Boris Moers - Thu, 29 Nov 2018 06:26:06 +0100

  • worker node running status should change to pause when job done - only the worker clientState need to be pause

    Brian Chen - Wed, 28 Nov 2018 20:03:25 +1100

  • print version on start

    Boris Moers - Fri, 23 Nov 2018 16:02:10 +0100

  • sequence name in PR title

    Boris Moers - Fri, 23 Nov 2018 15:41:53 +0100

  • 3.0.13 for consistency with integration us

    Boris Moers - Wed, 21 Nov 2018 15:50:34 +0100

  • 3.0.12

    Boris Moers - Tue, 20 Nov 2018 11:00:12 +0100

  • issue with node 11.0.0 clearTimeout() consuming 100% cpu random statistics random pull

    Boris Moers - Tue, 20 Nov 2018 10:59:22 +0100

  • socket server options in case of timeout issues

    Boris Moers - Tue, 20 Nov 2018 10:52:58 +0100

  • 3.0.11 - separated pm2 ecosystem files - standalone worker

    Boris Moers - Wed, 14 Nov 2018 10:12:23 +0100

  • 3.0.10

    Boris Moers - Tue, 13 Nov 2018 16:31:14 +0100

  • fix for worker not connecting if server is down on start

    Boris Moers - Tue, 13 Nov 2018 16:30:45 +0100

  • 3.0.9

    Boris Moers - Tue, 13 Nov 2018 15:04:39 +0100

  • format

    Boris Moers - Tue, 13 Nov 2018 15:04:06 +0100

  • dotenv only in cicd.js

    Boris Moers - Tue, 13 Nov 2018 15:03:35 +0100

  • make sure there is only one run object with lastCommitId

    Boris Moers - Tue, 13 Nov 2018 13:55:41 +0100

  • dedicated CD client

    Boris Moers - Tue, 13 Nov 2018 13:55:07 +0100

  • pass target credentials to deploy request

    Boris Moers - Tue, 13 Nov 2018 13:54:05 +0100

  • remove extra / in url

    Boris Moers - Tue, 13 Nov 2018 13:52:45 +0100

  • 3.0.8

    Boris Moers - Thu, 8 Nov 2018 14:10:10 +0100

  • prefix option for servcie now api more control of deploy step

    Boris Moers - Thu, 8 Nov 2018 14:08:43 +0100

  • 3.0.7

    Boris Moers - Wed, 7 Nov 2018 16:20:15 +0100

  • 3.0.6

    Boris Moers - Wed, 7 Nov 2018 16:19:41 +0100

  • missing return on project setup

    Boris Moers - Wed, 7 Nov 2018 16:18:17 +0100

  • 3.0.5 promise native delete pull request todo

    Boris Moers - Wed, 7 Nov 2018 15:44:41 +0100

  • 3.0.4

    Boris Moers - Wed, 7 Nov 2018 15:19:28 +0100

  • check for PR changes on git server

    Boris Moers - Wed, 7 Nov 2018 15:18:58 +0100

  • align with new cicd.js structure

    Boris Moers - Wed, 7 Nov 2018 15:14:51 +0100

  • detailed step message for pull requrest abort

    Boris Moers - Wed, 7 Nov 2018 15:14:04 +0100

  • format code

    Boris Moers - Tue, 6 Nov 2018 10:55:28 +0100

  • in case of Commit Verification, GIT needs a valid user

    Boris Moers - Tue, 6 Nov 2018 10:35:59 +0100

  • project setup changes must be pushed

    Boris Moers - Tue, 6 Nov 2018 10:19:47 +0100

  • pm2 ecosystem file

    Boris Moers - Tue, 6 Nov 2018 10:19:09 +0100

  • 3.0.3

    Boris Moers - Fri, 2 Nov 2018 14:32:16 +0100

  • support for pm2 cluster

    Boris Moers - Fri, 2 Nov 2018 14:31:45 +0100

  • 3.0.2

    Boris Moers - Thu, 1 Nov 2018 08:30:15 +0100

  • use git from sn-project

    Boris Moers - Thu, 1 Nov 2018 08:30:01 +0100

  • use git from sn-project support for commitId from env var

    Boris Moers - Thu, 1 Nov 2018 08:29:51 +0100

  • chain test in sequence as parallel not supported by sno

    Boris Moers - Thu, 1 Nov 2018 08:28:25 +0100

  • cleanup

    Boris Moers - Thu, 1 Nov 2018 08:27:30 +0100

  • unique path issue git branch extensions

    Boris Moers - Thu, 1 Nov 2018 08:27:05 +0100

  • git branch extensions

    Boris Moers - Thu, 1 Nov 2018 08:25:19 +0100

  • remote datastore events

    Boris Moers - Thu, 1 Nov 2018 08:24:06 +0100

  • remote datastore support

    Boris Moers - Thu, 1 Nov 2018 08:22:48 +0100

  • moved to sn-project

    Boris Moers - Thu, 1 Nov 2018 08:20:43 +0100

  • event emitter optonal dir for db files remote datastore for project split file rest api call in chunks support for json extraction

    Boris Moers - Thu, 1 Nov 2018 08:20:24 +0100

  • also delete run with no directory assigned

    Boris Moers - Fri, 19 Oct 2018 12:22:04 +0200

  • remove test as will not work

    Boris Moers - Fri, 19 Oct 2018 12:21:05 +0200

  • event emitter

    Boris Moers - Fri, 19 Oct 2018 12:20:39 +0200

  • why is there a change?

    Boris Moers - Thu, 18 Oct 2018 17:38:39 +0200

  • project paht unique fix

    Boris Moers - Thu, 18 Oct 2018 17:38:16 +0200

  • error handling if git is not initalized

    Boris Moers - Thu, 18 Oct 2018 17:37:48 +0200

  • findOne

    Boris Moers - Thu, 18 Oct 2018 17:37:15 +0200

  • better error handling

    Boris Moers - Thu, 18 Oct 2018 17:36:42 +0200

  • distinguish between internal and external port check on start if server port is free refactore to findOne

    Boris Moers - Thu, 18 Oct 2018 17:36:20 +0200

  • refactore to findOne

    Boris Moers - Thu, 18 Oct 2018 17:34:34 +0200

  • fix: directory structure was not unique housekeeping on worker nodes

    Boris Moers - Thu, 18 Oct 2018 17:33:18 +0200

  • housekeeping event to let worker do some file cleanup

    Boris Moers - Thu, 18 Oct 2018 17:32:06 +0200

  • introduce findeOne to simplify lookup

    Boris Moers - Thu, 18 Oct 2018 17:30:33 +0200

  • save pull request status

    Boris Moers - Thu, 18 Oct 2018 17:29:30 +0200

  • cluster events added

    Boris Moers - Wed, 17 Oct 2018 15:51:33 +0200

  • change logging

    Boris Moers - Wed, 17 Oct 2018 15:50:57 +0200

Project dependencies

The project is designed to use extensions. This core project contains all 'shared' features. Customization which are dedicated to your Service-Now environment or CICD pipeline shall be added to the 'extending' project (like https://github.com/bmoers/sn-cicd-example-v3)

About

CICD Server for Service-Now

License:GNU Lesser General Public License v3.0


Languages

Language:JavaScript 95.5%Language:HTML 3.8%Language:CSS 0.4%Language:Shell 0.3%