{"_id":"@atomist/demo-sdm","_rev":"188-8befec11630daede6ab0d5a24fa40e55","name":"@atomist/demo-sdm","dist-tags":{"latest":"0.1.0-20180527032353","branch-master":"1.0.0-master.20200818211626","branch-msteams":"1.0.1-msteams.20181113220339","branch-pulumi":"1.0.1-pulumi.20181114201615","next":"1.0.0-master.20200818211626","branch-config-data":"1.0.0-config-data.20190625205846","branch-gvisor":"1.0.0-gvisor.20191211181654","branch-k8s-scheduler":"1.0.0-k8s-scheduler.20191219075842","branch-dependabot-npm-and-yarn-acorn-5.7.4":"1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103","branch-goal-signing-demo":"1.0.0-goal-signing-demo.20210316231645"},"versions":{"0.1.0-20180527003106":{"name":"@atomist/demo-sdm","version":"0.1.0-20180527003106","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^0.16.0","@atomist/clj-editors":"0.0.19","@atomist/sdm":"^0.1.1","@atomist/slack-messages":"^0.12.1","@atomist/spring-automation":"^0.7.0-20180522124026","@typed/curry":"^1.0.1","fs-extra":"^6.0.0","lodash":"^4.17.10","logzio-nodejs":"^0.4.10","serialize-error":"^2.1.0","tslint":"^5.9.1","uuid":"^3.2.1","winston-logzio":"^1.0.6"},"devDependencies":{"@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.108","@types/mocha":"^2.2.48","@types/node":"^9.4.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","apollo-codegen":"^0.19.1","espower-typescript":"^8.1.3","graphql-code-generator":"^0.8.19","mocha":"^4.1.0","npm-run-all":"^4.1.2","power-assert":"^1.4.4","prettier":"^1.11.1","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^3.3.0","typedoc":"^0.11.1","typescript":"2.8.3","typescript-formatter":"^7.2.0"},"directories":{"test":"test"},"scripts":{"autostart":"npm-run-all --print-label --parallel watch:compile watch","autotest":"supervisor --watch src,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"npm-run-all compile test","clean":"npm-run-all clean:js clean:build","clean:build":"rimraf *-v8.log profile.txt build","clean:dist":"npm-run-all clean clean:npm","clean:js":"rimraf \"{src,test}/**/*.js\"","clean:npm":"rimraf node_modules","compile":"npm-run-all git:info compile:gql compile:ts","compile:gql":"npm-run-all gql:gen gql:copy","compile:ts":"tsc --project .","debug":"node $NODE_DEBUG_OPTION node_modules/@atomist/automation-client/start.client.js","fmt":"npm-run-all fmt:ts fmt:gql","fmt:ts":"tsfmt --replace","fmt:gql":"prettier --write \"**/*.graphql\"","git:info":"atomist git","gql:copy":"copyfiles \"./src/**/*.graphql\" build","gql:gen":"atomist gql-gen --no-install \"src/graphql/**/*.graphql\"","lint":"npm-run-all lint:ts lint:gql","lint:ts":"tslint --format verbose --project . --exclude \"{build,node_modules}/**\" \"**/*.ts\"","lint:gql":"prettier --list-different \"src/graphql/**/*.graphql\"","lint:fix":"npm-run-all lint:ts:fix","lint:ts:fix":"npm run lint:ts -- --fix","start":"atomist start --no-install --no-compile","test":"mocha --exit --require espower-typescript/guess \"test/**/*.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.ts}\"","typedoc":"typedoc --mode modules --excludeExternals --out build/typedoc src","watch:compile":"tsc --project . --watch","watch":"supervisor --watch build --quiet --exec npm -- run start"},"engines":{"node":"9.x.x","npm":"5.x.x"},"gitHead":"46cc1075f1cf26a545b7498147309f8ba7f33bdb","_id":"@atomist/demo-sdm@0.1.0-20180527003106","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-GLkWVkxtqLuBNTNU1aMc6e2XWNCfbEstfg8yenVCkwitPsH437pJbwSfjGlVcUFZ2BliM+qA8KMhvsM03VhcsQ==","shasum":"f1ce3b16c3470e149793af9ea1fa43b1621f7a9e","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.1.0-20180527003106.tgz","fileCount":57,"unpackedSize":230610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCfz2CRA9TVsSAnZWagAAuRIP/RFkgpGEYKgSDuLkkwh4\nsIqHcnmI6TsggemfFJkyF4ys2xkLuNeIoXn/YeKTmOv3AMQLEGomju+DuFEQ\n+Dok6MThaW9T/fUlaqlOkWhwwEoQ6weS5Gzqh/aottSUIO0QISM6tgO9NOIQ\nX6+Ew7UF9TgbfP2M8tRASwa8yESx1k+vnW1swWURqaIJq+w2vdTC54H27Iy/\nhtrrw0moxFnX4PudUFSSXX7lAmjSA6ROryhLo7wNf85q0plza0ZkpnTcZ1Ef\nI2z4favCCknkJTUFcNfAmB/of+GBLP+rmfzcco1vfthDIMgu5dMKI9AMRxJg\niG+P5dIp62L3IDvahkhl0Ip7INXF66jKHJtGAzsBvxfNIZ7qMo8aA/EwJ+BG\no9ySojipD8JrzqJ0L7p0fJgNLadBoe1zn8f4HmLM6k0JCs6KAd+AthcbJ9Uj\nHtkYw6DVusAGSlQ8Ng0OQL68f+OM4oTynysPorT0eCXUhEWuZ2mUbIAFyYnf\nWl8zLfEDqCEGo0ahCn0LTrHMN1z1yVK1VlJbpydjexogsbs8UBW7J6ZYjjTR\nDoxlz9yKGuTUJ1k3rRzcUch/k6gjAI5f/e9lIo0RfKhlDio2vtuD4Ro3gSH1\nJVQ0WjRhNz38KPJgQAjR9kYRZyIxxMtE/ktzCpG5+nUDKfQm+7xMCluLd3Jc\nyw1N\r\n=czi4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDU74YtT0vTl2VqVZXBv+FlAofjKfm+ivCisoRAf2RFTQIhAOcmx1v/NMXXJE8hiepcZ7Pjxl2yTVcFOH+9ZioZ02ot"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.1.0-20180527003106_1527381236968_0.9151188615951411"},"_hasShrinkwrap":false},"0.1.0-20180527032353":{"name":"@atomist/demo-sdm","version":"0.1.0-20180527032353","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^0.16.0","@atomist/clj-editors":"0.0.19","@atomist/sdm":"^0.1.1","@atomist/slack-messages":"^0.12.1","@atomist/spring-automation":"^0.7.0-20180522124026","@typed/curry":"^1.0.1","fs-extra":"^6.0.0","lodash":"^4.17.10","logzio-nodejs":"^0.4.10","serialize-error":"^2.1.0","tslint":"^5.9.1","uuid":"^3.2.1","winston-logzio":"^1.0.6"},"devDependencies":{"@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.108","@types/mocha":"^2.2.48","@types/node":"^9.4.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","apollo-codegen":"^0.19.1","espower-typescript":"^8.1.3","graphql-code-generator":"^0.8.19","mocha":"^4.1.0","npm-run-all":"^4.1.2","power-assert":"^1.4.4","prettier":"^1.11.1","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^3.3.0","typedoc":"^0.11.1","typescript":"2.8.3","typescript-formatter":"^7.2.0"},"directories":{"test":"test"},"scripts":{"autostart":"npm-run-all --print-label --parallel watch:compile watch","autotest":"supervisor --watch src,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"npm-run-all compile test","clean":"npm-run-all clean:js clean:build","clean:build":"rimraf *-v8.log profile.txt build","clean:dist":"npm-run-all clean clean:npm","clean:js":"rimraf \"{src,test}/**/*.js\"","clean:npm":"rimraf node_modules","compile":"npm-run-all git:info compile:gql compile:ts","compile:gql":"npm-run-all gql:gen gql:copy","compile:ts":"tsc --project .","debug":"node $NODE_DEBUG_OPTION node_modules/@atomist/automation-client/start.client.js","fmt":"npm-run-all fmt:ts fmt:gql","fmt:ts":"tsfmt --replace","fmt:gql":"prettier --write \"**/*.graphql\"","git:info":"atomist git","gql:copy":"copyfiles \"./src/**/*.graphql\" build","gql:gen":"atomist gql-gen --no-install \"src/graphql/**/*.graphql\"","lint":"npm-run-all lint:ts lint:gql","lint:ts":"tslint --format verbose --project . --exclude \"{build,node_modules}/**\" \"**/*.ts\"","lint:gql":"prettier --list-different \"src/graphql/**/*.graphql\"","lint:fix":"npm-run-all lint:ts:fix","lint:ts:fix":"npm run lint:ts -- --fix","start":"atomist start --no-install --no-compile","test":"mocha --exit --require espower-typescript/guess \"test/**/*.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.ts}\"","typedoc":"typedoc --mode modules --excludeExternals --out build/typedoc src","watch:compile":"tsc --project . --watch","watch":"supervisor --watch build --quiet --exec npm -- run start"},"engines":{"node":"9.x.x","npm":"5.x.x"},"gitHead":"a5182a77dc1470ec8a650de3a2a9c7c8c7837d40","_id":"@atomist/demo-sdm@0.1.0-20180527032353","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-QhBYSEcftS5kiGNOdVw247G5NLcZufACGBr4Yw9tzpTjKeblWakWJemt1jCTuxsQD7UPpmYIHOFdSi9jsgpyrg==","shasum":"3c451a104f5a2f598f50baac27c19c5027b21efc","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.1.0-20180527032353.tgz","fileCount":57,"unpackedSize":229551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCiVdCRA9TVsSAnZWagAAPjQP/2hyuG4WaOlSOGARyGVm\nmy0nMXOkPK0GI/imugxuZ+nRyls6TXZDaIuOajb2cxuAr+izByNHT6hK4dyE\nAnlQCcrIRIkWyrTRLM8tnuKM69f1611lScB5r9azAVhoQkNib53OSxjU3Md2\nJWVGX8xT67lar44H7qcwAKc+TSSC1Z7JMbvFCQJOVzLMAolwcRdtiqkJUX/x\nuoveZ9J2M4CtihSaOn0RTXPGPsgIfBsyVZjkNsydAOv0DHHr9e7tmohRgaiC\nuJKU3XHmsmTbBshtRothd/4FqIEmjRQZ/0sN8NsW1ohFwwtpfefDXkJgJ+pp\nc+5JLGkl4KdgROaD5A7JtPpcGTehuCs7qyuHLK1gI1my3giX3JgM/XhbgsyW\nd9DdEQgMb/HtQxQjv5sSRbtCR+rQzEgnbr2eFlFLtEYaFoOmlrbXyqF9JBij\n1oxOUICdXxyWZ9GnP7XWKrw49ID0XZoJ6F4OQkHwNrLdMazLkezRotQJyFDb\nCff0/78JRAqpEMjNcH20afdqIc7/Cj3z6C+ny859FroAU5Mi98w+FfFKXU3H\nZtAF2TAEzrpo3jmyQ4sff+s47AFO6LSWpEW5xCIP4XAgkjx4CSUdp8KVYCnk\nqCS+1wm+qLgdZjDUX46yvvErCe+2s7QflUW8iQ+ir/5x7+NlZiu3r96a979g\n+L58\r\n=HnHp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE69Oun01xPL3TNwmP7tDP8u7MzK4/y2+Mw5gVS+gWs+AiEAndKFBKO/ZgsIvoGYuOplFA/glmMONOF2TWHUvc/OWws="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.1.0-20180527032353_1527391580950_0.9360116254058659"},"_hasShrinkwrap":false},"0.2.9-github-action.20181104114153":{"name":"@atomist/demo-sdm","version":"0.2.9-github-action.20181104114153","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomistplay/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"b184bc94da077683f5ba693397e7a59a3981bfbc","_id":"@atomist/demo-sdm@0.2.9-github-action.20181104114153","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-4IDpX8dXJfkVMgz1SHIG06+BsOFurRR9ENz+3iWstXzYrALqm32zf+4kNkXo9vVHXHerpbKHJ1IN3mANVOkqmg==","shasum":"5115b218130703082a9e4d71c5962c8f7ba51f66","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-github-action.20181104114153.tgz","fileCount":39,"unpackedSize":347265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3ttRCRA9TVsSAnZWagAArvEP/jJtzVKAqHSRqAmXRiUC\n8rdSqpRIoIMdiIcT7m/qHlIB3565W4doTkdm9yZ3PikgGNhXDf7ZGrJzhMe2\nFuxJy5lwKVUBFUSoKDWCgyQupAM7CMIs+WsK4EDVfyB9MLLWyAhCtqElm7Kx\nYWryBcwUGmkiQ/FEGOcVHHvNRuhCQoOgnFA0X4Tip5mZBaVHZBCcs1jY6Uup\ne0DVVfThvqTk/7l+o4eblHX+ll6jwzqFfxorRT8a8/ponNTlmDIEsyDqYa68\nTR3T1I2bFDVuJG4JMvTGg+uLDhl54TLwFpyUKAn3MgKllf31BO/cXCm2jfwS\nST5PlFiOb9Ve5T5qc0UP992qpG2bvzO0V3HF/82kc7/SE6LM2sImJV+6XMVE\nJc0dDBoxgdCvsxEt9vRKBMp0aYgiCqiVQRQnmTYO5yC6HR8LUoJEBP8PmmWP\nKnz/8dRQx3M9P/JHLNuAl4AWqkfiIeSZ8Kk4FlCbWM9tFFQQc5/6LOIfa3qu\ndTg3R7nGDE5M8MqBMBGQJwwGfvCAC3kriCUwAOhyqKcQQtH87xVVejlCk/xK\neCY7zyqK5vddiEHj9fEq6DYputgaYqBKhNKzPGOXNccINJM8tUm9jNqHFoG6\njwefef0j8XQAnLx7fp2oWdyT9vEZyWAC3abw8tBGTrOBrQ+br4Csdmx47BDp\nq3La\r\n=3ZOy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBDODftFxueq67hRiY4e5N4ZGaXcvYMVPfpLZM3K//T7AiBqDxvUsiItRBxQ2G4gN6q6BXZUdXLOf76v9Ge7yf92wQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-github-action.20181104114153_1541331792110_0.9093841261520361"},"_hasShrinkwrap":false},"0.2.9-github-action.20181104162057":{"name":"@atomist/demo-sdm","version":"0.2.9-github-action.20181104162057","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomistplay/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"048215cdac037b19939ebd09b378b9ad676a4521","_id":"@atomist/demo-sdm@0.2.9-github-action.20181104162057","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-vRgdHtX37sNoja3tq6kXhcfpBwERrgLgJ/KVSFrm2BdswNbW4YR6/CAIZ27jvjiSSHWFVpotDe0wV+YYgVD/Ig==","shasum":"ec236326971a8eb88696364a3261428e631d5065","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-github-action.20181104162057.tgz","fileCount":40,"unpackedSize":465976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3xzSCRA9TVsSAnZWagAAapsQAI50lytHex9AL8IrdKnS\nQv1gjkas30OrRO7iCRtyrAmnZwjXwdtJujKCwyVmYeZ+p281tjtezZL+bDti\nKJb6g+QqfoujYHHJcgiaH7y/rNKMfBxMWVuy9y5c3sBz2FuqxeeLswwGcK9K\ncGbL2QiST/taBoOxy6OkR7zUZmTKw6iwSR0zo4s/MeJGgnhGqj0cMgOzRLJH\nLw4JV39iocSlqnxdtYCn9QLFBcuWa5dRR16SHNQBKMEY5lf7Ua7bidbzZ+VH\nA5hCSbC5bxIkVAAdkXsQEQ5ux9set3l4U86hn8WJi1e2KGq7OCzrFf3lb55z\nrNdJuTWU+oStwWzg5USPpypnSSyGvSOlLUDOCt1toUbsQF2doB9m+kx+DL8g\n3pB5ryZ7CrWfMOE1YskBk8fT7WxIlaiIIyl3BVfHIQGO4I7EUTwY8lpt1yi2\nfTzyCiVCGYnqgsHmU44DtchTrHJxk/UKaJcQsoa/yR83tvzv9ZTQkM4lu+PK\n3CNJJzcrp/1YHCquFKJz56ygxx4e9AVXgXxSsBDleIsuYKZA+I3woyHkp9+z\nGghy92s8Y2j/a+Q1PDHtMxsJxkKNjmTHydUPgtNIG+J8k70Sxqw2T+IzgWI0\n2tdM0OfnlcS/H8Q9wKp7yhXPPzxa3mbiQDTpzhRjc8IpfC9PqWw9pzT2sbMT\nCtg7\r\n=tTF6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvwepX4RrQqFw6bQ26XPJjRwnDrXck3I1r36MGnfmn2AiB8LxcQHGCzKJ1UpHAcLsZAhmM5AQ2DvV0CdF28XZJBDQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-github-action.20181104162057_1541348561787_0.3496952498466088"},"_hasShrinkwrap":false},"0.2.9-master.20181104163010":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104163010","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ec66c02e216148347b971868b338ebc7821b749f","_id":"@atomist/demo-sdm@0.2.9-master.20181104163010","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-bwtepMSevhnIHkxDwmakqXJQT7Jf1QO6zcmw3VyOkXV/4B+sZ1CwuCq+ekV5IdDhOM4loQqgO7aiJztgdZzdiw==","shasum":"a4c08298bd730fc40ee3683752282483a40f8f71","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104163010.tgz","fileCount":40,"unpackedSize":464584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3x88CRA9TVsSAnZWagAAGXgP/Amkm2OgNEdkOTLA4wev\nn6IXRe2bvA8Gl2EM/FIrmFmUQrzHJS0s5GTe8K423+bUe98e6q1qWiMJi9WB\ny7XNWcyxjaj6AO8GYkPDLkYBZrlcNvriGMrb5RzZPA6+MrBQwxrXtznn9aHB\nC84cQk5Ay/s2Fn3rk91uD6Oc4xrYRmmNfw/x2cskbbZ4uPZZi6x+kEukA7mT\nWJOhsISvNmovy9oNUJuhwA5NzKQDscuaxJIm6EtovopkcO5NCZZoXFE/DO24\nX5c2cy4UzO4X+pKUZfxh895YjMrxtomYQSZQiKHGSVQEXMc6h9Da2n5VSNEC\nlnD9IAbEv5L9e029pYAI/oLDgZmtMxBfDtV0CZNIM5Wbg2J5e2O2AzmWq0TE\nMksdtAvk7YqXZBwUdlujCH43DFQ6iIdbsp6k4hPE/gHVheOW1+vjcGAPU3R5\nLWqb2Z3S/lT0h5HxfGSQF6H38Q+99RKrleQ8tKf4nUfqTuq8/GZdbzBINgN8\nz33mtUJ01QftEXOt9nkfJ/xWGvylEEay7Y04xscfFhuHvniWT9NCQIX3hCgc\nk6xePYc9zNvt1BXGzitqvN8X4tozD3IXRdfAbXXVCBNMpDG8UG+mICYBIf5e\nMyXgCnaiqM+aDXSXKEb7SSkqOvuAHePXwmvSAPiqcVgS4te+GvWzrGOlxIQi\n0ab1\r\n=mfpF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3kp2UYZ2kWt5VaOJBliATBmMBbZKc5IYrPenUitfdxAIhAINavi++JyOTM6sWePcnBKoZxMTs/cAHNOa3F2F3x/2T"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104163010_1541349179549_0.8113765752050695"},"_hasShrinkwrap":false},"0.2.9-master.20181104162824":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104162824","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"gitHead":"ec66c02e216148347b971868b338ebc7821b749f","readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","_id":"@atomist/demo-sdm@0.2.9-master.20181104162824","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-9iov6Wajsx/MNiyfBPk3pYkSoquZGEE4tG4comNbdgNb69i63vbiYCrQpFgqlb4CzpRi8fqcwWdtrpZ5eu5HBQ==","shasum":"dbf746ab240c3ceb3135bbfdfa5b0e50a864b79a","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104162824.tgz","fileCount":40,"unpackedSize":464584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3x+aCRA9TVsSAnZWagAA11kP/RLF1gRlaL8Rp65VPjGO\nq/ybQ1HDHB+0t7V9OzH0WbofMgH7TcVFbXg/26PKUGXMdf5RLvOvXnN1JmgB\nqrTsixbiRsbd+D+pMixdoJqsGI25Ifez1BaJappYbX2kxcYGSQTgVglnLAGe\nq5sT5gUbmLqUCkWQQOsxvBRTFeuY+7XAkQN/uWGkLO/uZ7cN8sKYFb0x6ss/\n/7R+KhC9poxbaL3akpxPL4q+RFJcgtoGPFlE7LJQfI56aPDX7fwYLFSRJ2Br\nPLxCC8FXQxIPXRI/V2hHmP+NK0hMzDTFirWknrn3o248bLoB/lWdIkFxgTxB\ndNUV3CmI+UHnhIWBisaeI9auNgluDarop8ocY/3hd5VxfoOR7gaFaFqBp1g7\neWfWCMnkJHv6ckTWMYd63vq3twkDyCND3PNzMCxU165twrEyW2PM/XO+Aq9z\n6XNLR4p9xU3FZUVq+3u1IICCkZ5dGHlaEE4qcYKxDvg2f688YwgIzzWirC2I\nigh6nmKjPz4/aMP6lMmdr1D5SnDuTan0ugsEwWn7uivVxLX5mUE8jhS4oFvM\n1LHcsfcZK5nHEJnq2KU0BsGSJUfZwhaDfs7LAkZGjYHMe8WY+V1/UrzcygzL\nidHGrquPBw4lP4YMby6kPdc4FMzWnjnBvUiqa5nnHImfsMJRHmxPdF/RDYmv\nm+uA\r\n=hay8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpiHAI/lIl9Cat+jIzq0WKpo6FVdsVfRWVVZwzo2CGXgIhAN6nvZ1WrANOrAYsSfvnYBxaTZoTjtJv0r+/Xkj6zs7y"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104162824_1541349273999_0.8641270130425001"},"_hasShrinkwrap":false},"0.2.9-github-action.20181104163859":{"name":"@atomist/demo-sdm","version":"0.2.9-github-action.20181104163859","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomistplay/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"d5713c7e5d118b5e6821017d4af3cb02d4bd02fa","_id":"@atomist/demo-sdm@0.2.9-github-action.20181104163859","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-jXC46y+/ZehfdIpyICaEPcGLVUVwhzr2qzwKQfqaOWUMXjdjYAVQv0bHfKj6J/XAFP5zAVQchYRzT/DVgdFOyQ==","shasum":"60f51a0ee4e2dfbeaba364928668514a65e82df7","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-github-action.20181104163859.tgz","fileCount":40,"unpackedSize":465976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3yEhCRA9TVsSAnZWagAArfUP/2lRoSJSiMkdFfVNJuOV\n5/IJy5wgEzkLnJ4H5Tz7fZBoxDzphXSpiXHsrF1OG3G9WdSAU6si4p+VvRKE\nwvSgQltg/rD2yu8MtkivTQ9/ycpmbM2YifjgHTnN6xMqBDWkcwrZrPxFXYeF\nEr1qtD8729JdivXV2x8Xdmu83ri+PSlztiDSkrg8ztJkubaPDc8i6DDJd8Yr\nZHgAWKCFxs0bthiPdSyp1Gdk5HJ7g214uDN+mrUE/7OvKrkyctCAbf6XPKYb\nZmDK0+gjRXCSRrxtOfA5FhtQVLjRCC0J0dKTtGp8XXxL3Pwoo6qdyBqAbl/k\njv3qAJz/IalmOXbRiT3m5Gf2hq9kKUHnsWSanrKflnY4vAqt4FnaFS39qFvf\n9CybXTRRhiJatziob74I3JVGXAF8QdNI6322I6/N+pk+XG6zfJkb2SEpbEZN\nxCcThE2O9jPsJ3VpW+tplCMftkwEy7SiuxkuWIBuu1qrcNFDVgd9dQ61tyeX\nU399F8PhLp+G2xj7lhMGcGP2ttnzcbDsCC12QVyc/VAXg3GtP+vG1JVYcxAB\nw9TZB4+Kx3BxLRpOOu/gYwtwp+Ii4D8fFHf8/jXsSJV5Kv3KJETtMV6xXfCE\nQYmFg7T+3mfc1ptMYiyrHXOgG/H0HysXLMECqit8M/iIfLmQaIwjQol4Szyw\naDf8\r\n=9VgK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDB9rXgPkVz3AFUU6xiPQnivsORk8ML42lxWCoNxdhroAIgBNsO7CeCIkyLRudKb0hXAzGoUJaXcApBql3Iv8vpoc4="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-github-action.20181104163859_1541349664710_0.31590717883255226"},"_hasShrinkwrap":false},"0.2.9-master.20181104164656":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104164656","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c36f4a1a60a6e417d99326d785b1e98f8d350e91","_id":"@atomist/demo-sdm@0.2.9-master.20181104164656","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-b7qkn7ieSzyr7zYx/g8pEaPhSLf/FR/B/SGlPPonwPUSUEqieNGLgLdt3wRNdfcxVdPNKXZxgD6hhvY2KvNFRw==","shasum":"97cc448a358c54dcc4246dfdf152acaf693577d3","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104164656.tgz","fileCount":40,"unpackedSize":464584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3yMhCRA9TVsSAnZWagAAXQwP/jcqXKSfOaCUe5egu6jj\n+eS4q9+hTbHGoqkgHDUf1y9bcXoa21ezqQHiBmDt8KTBO8wg7an54Y2g9CnN\nF6CMrXoqQIFrQ7hacaUt9WfjjsPhc2DCxP5cl/LKheDkNzpHt101B7sct1s/\nPHa4ff7MHvbTiG7O8LjFufmEnxY2WvnDKQsb8AdU6bBCHcDkyxe7q25lP/6p\nGYMFzwHArTq5qK/zTWHa3pSkBGUQu8vM+lnopsyMhuqFgN0kn1/UtQN/biuC\nzPZohVMudFSl0H9OhWvxmbyfmZpYZOZTWLkTtJDl+qiPejOJOj3eFVsW6aXn\nmpDUiA4XHuvmF9+CP6++Yz03g+rz6MI4N5OIcf4AI4yvLnXpKjQg0dR3Nkd7\nN1l6TbXYHXgGmt13IvZhYHuxKsiw8mmScaHqod8ppjCQN7ljvjeS08JduIHD\nkFsgFbEhlhMnZ43TA6+QE8iCvy+PR5VitnR7wIiFb2iFlOxPxXHX/Dc1Kkf+\nA1CUixEmCdsfHWAfvDam8SAEz8uK6zc+OzOCxAVLPePqaWtxMRftl+6VAO7n\nhdUWRRg5FZLsCRB/hcZHrjKM49bVPtGBLzK2q924z77RI0ZYB6ojYs/veBMS\nb9cWbRX34qtBpy0DlvuYtygrHvKBB1yD7cRIV6CO9qXQTw9NyfQLBaJQzp/o\nIMu1\r\n=4AYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAi6uEYN2GoqIprLpJojoHv7bpPshrTRhnpT4vBJDbPGAiEA5uHWZe89+MIJ8IRm/ACLEHdkkrcLhmoX1NTeSWCSOTY="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104164656_1541350177333_0.4048643078524703"},"_hasShrinkwrap":false},"0.2.9-master.20181104173458":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104173458","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"edcb83a82889dd31122f4ec03fb77fe9e87338c8","_id":"@atomist/demo-sdm@0.2.9-master.20181104173458","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-gGOJFuztm8o4TQJtw7pwFJh31wQmrzIp0FC9XBuvXuPNnSEzWUvSw7x34QkoZbo7Ur8ubApXJZmw/PoTrfciVQ==","shasum":"c6c3d7fc790a69ba49c6439c9c2b99582a3dc050","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104173458.tgz","fileCount":40,"unpackedSize":465069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3y5uCRA9TVsSAnZWagAAZlYP/RSrsnk/DskfIJzfSiUy\n0cV3aRRdBWDOvQCbRzumqHT+uuwu+lxdqLA5hq1Ju/n/M5yuj4gewfXr/t9y\nMpW3Mej6yx+WFIQ9QYeJkJSsXIn4aB4JssvPy5hXc7gUHCbz2VsQOUXAid1Q\nVtETGArwkAocQhfbgzwv+ZWRNdTHwdNb2NNwbMkFUB166oQP80S88Tf39sOY\n9/HcNpaOnsqx8714rXpYiuv5lf2s+zykC/AiF5sDFIFnua3XwXPpiq9K0VkS\nbURPVV/y3yeKWKaTote408jK88F8+6tA8iFMGQD4XKGHkxrQt0dyg/VZNqD0\nNjFoj4KcuHsE0slVXxMu3xLlQpthR1SbBuzSi4mp/jUxYPHZ5pITM3U6zYzG\n6QnWg8kD935vNG8f4EBD38wceKaa6VkY6CfMyFkqpS7xl9MEqrfUqbylchz5\nAGsxOUdY+jLmW6EOeddLv7wT063VnDWCe6qYds1yQpLtW0TDekE4OdKwNsk/\nZpGbOz/hGfsuNMZ8SvA22QZe7FDamEQln8+TLhPTZa4/oHpZvrdCvhDwkzd8\neL0hQphttAsJcMIOv2EO6RPvCGlM9H1MlM6gpxC19kj8dONf2jlaS4sBKipV\n+WBcyw6+JFNg4sP5t8L0GD0PkmvttL7B5Vxg3VkPZmRPJjQcsS0wMBIzFYJP\nftRD\r\n=pdmv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2y8sL4c73gyHauQHQ8lBmZ+ZZ0z1VXUtVTEG+qWy3wgIhAIKLGVqrPstJw69T0dVZgi+fyf759q4b2HFMkxQcW8vg"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104173458_1541353069546_0.11445707538214855"},"_hasShrinkwrap":false},"0.2.9-master.20181104175929":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104175929","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"d4a8955c0ce51e1ba832f91dc859e984f14de7c8","_id":"@atomist/demo-sdm@0.2.9-master.20181104175929","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-XiVjXJkljgDSE9ybvwKFWggh7Vki6Acnmv7Vk+/cWGRBlvocheG2dhg5sWNPLv4fcBQqnvHxgOjBhpPRLvAf0Q==","shasum":"95c4ed87ece8552bc0ca4588bfa677ba7312916b","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104175929.tgz","fileCount":40,"unpackedSize":465077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3zQpCRA9TVsSAnZWagAAwpwP/jThwFJDYPxYz1AM92CV\nPYK0NlePZEELj3ztr7L7G5g8H+XOnrF9xZR4td7k53HOjeVEH8vMGgVzXVPi\n4pu+2FDspwcWky0uFKS9Do+RFTfpnvAQ8pahRyQwMhGhxRCdhECguxtL2+re\n7HDrl4buHNrznLxLj9mS52tMMv1nVRl//uj++DpfqO7YF5AcssGr9PablyZQ\nu6tGQOVLdxJYtKsMSTLf+gNy4WekyFnXGeJRgwo68J/wCUsgyuPn2UpNme3O\nkxXOSkivjLcZ75xkdntWKMhDrasjCs0tbtrfNWeJYptLTl9Xp39SWWmrG9LY\nfcrHZ4BywyEIjF1o5r6u9tRJfHiLYskI/FzhRd73htNJwTNgchjnD6rnmOtH\n6Ytjv+FILeBLjx6FgBIrWbooVndsuZyd8MRMdVxme/HrxcLoKVj8bFuSp2PA\n+DZBNcvU4/qh65oQ03jFkBV6jmIEWq/xy2k0LVgKma4LhMRhikza4fm7LiQg\nxyWRJ1mjIesQ8KciSJ9dqy0TexQhNg9BzyQYegn8LoExVBCBy6LvZaA8tRMC\njlo7Xq/A/yITpv3zKEcQGJMPgjCRtTYgq/HjTkUuuQPQV2pB1aQUSl1MaIQO\nMT480/ndigYUaqGTKZJmCwhYzbMgOtwjlZOHhX4usV5rlEYEkIxE6GPIa5F5\n1n5C\r\n=GFgs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWe6NJxHs+xpnq9h4ZlgM/JBLL8DfRx67rFXvpeKdn5AIgQBe17m96370UlMhYicATRzFDifgYgIkhHorsztuDZ0o="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104175929_1541354536481_0.8393116845627888"},"_hasShrinkwrap":false},"0.2.9-master.20181104180836":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104180836","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104015527","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"8f15f9320cd85913cb0ad0624f5691436d69c2fd","_id":"@atomist/demo-sdm@0.2.9-master.20181104180836","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-iSFw1bQiNatnnwBrUUotdREvvWX1B+0U9b68B9AVP+rQMmS87DYVQEwQr7hwfhSRffoDn64F4pQr+uVXgdrpjw==","shasum":"8e0e6fbbd2b5ec7045676c36565a03e00ef7e432","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104180836.tgz","fileCount":40,"unpackedSize":465112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3zZJCRA9TVsSAnZWagAA25YP/1J+HC/zDXpGOOq+kiIM\nsqCUdfaEDfbVS/5Yi5Q7UkpaoNykDCGUKTxYJP+ROuV1J/KEQqr2V4ln/OKu\nBWvcREDcGEE7rjYODwLzpw/LkcnrISK4SOVjE3BMN4E90tt+Mvj/Pc4zsUdM\nGMxeHOW540RThtNKmhsOVTb4IbmxFuaIWAJcn5Jj4HfS1CXq/wJti5Jv51nD\nC555UEXSVcL6kjLnyQVbCbcf4HPh7h7CU+JSKdQLUZZo8Je4tFeOpm8iU7HF\nj3rX0eK1aYcjDfUdieAdHIp5UqeBhiGrwV3iKbUSwt1iXXWhBffxm6S+rWE8\nOWnr0DDW+rVzVZBQVADHoGQXBQdK+DRtQDn77PzIRO4Gv556bKzDl1T12x8K\n4xIgVLvZS4CwNwZegx8AZYUjZvbRJGt9a1ZdxZNvDPScLm0T6cDB1ssVacdo\nL0Fu+rbAV9gGFNLAbkB/h4uAyt+8ttz0oegK76B3huzff9z27+91mV5IRzHF\n0SsXPvSJ2yLI7saUah2l2QKdshp3laQ6bG8uiG/rrZEtwgYbm1lRI59PDrNr\nAuFZgSJXs71GeksiQoK/LRmhetSe1rfSVDT395m4ouNjweV73wb3DldSih4a\nw9QpJ86iD59y9OQdigxktbUFa1bgwFCNuDV3/xMNmXshcnBEUBnTpNqCGSzD\n8r/c\r\n=IRXy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKNRC0JxyiX6gDDoEIck409uqSfXYRG2kLUlMLLe56jAIgRx940EntopTBLVbcBbjVSRbj49aAYNrp0ki2so2SHv0="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104180836_1541355080503_0.6898865637622578"},"_hasShrinkwrap":false},"0.2.9-master.20181104182934":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181104182934","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104182224","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"49c939104bb995e16f11bf9ae8154570dbe6ff37","_id":"@atomist/demo-sdm@0.2.9-master.20181104182934","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-XaIsFhRxiwDrKtKwGGx0rPW4jpV5dtdyxYA0tMHG3J6ujT5s1DVQrGB5cb/LfqPyCKCbz267ZKhmvxpUc9XtAQ==","shasum":"a0961004dc496f0d08afb08f8c481b562cc3f5f2","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181104182934.tgz","fileCount":40,"unpackedSize":465112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3zs5CRA9TVsSAnZWagAA+ngP+wY0j56KmdV3L7hmh4vN\nCEM6KF4a3m88GzE40Q7UCAPWyQxcx4QGF/5JQ85iKhSEobiSNK3aW7QcC+HE\nP08HGBrgfgh2Nwq2pNbmGqFs3nBbpPAvb7f8O6+VX4LTEtzG8vwst9lhQ1tG\nUQ9qEHz4oDnqvH7U57JnQOCDvzS7g2OIm/fwfO70BHy3I5EaDuja8I5n5RGz\nYeREA1xCJi8DwqiHfUGOaEMkkiKBjBhMZVTZurGB9bcMUjH2a8emeDjIYbcD\nD5/V2kd5lEWuDLmBDnKlpb1IL2x43lhxSv08rQTiQrzT4wgGWU5e0qDHJ/D6\nI0THKzH6bn7QCTfK6hnDxBGNdw2RoIKPWc9wPVnmVXeBzNsq/kggO4zmybZU\nRus7Xl4/wOPCd+gNeYPR69ecHNaz3DkvyBGa4ojpYoyCPB7b6lqVAcugoH5p\nbR030byki7hH/I6cuiKjBrBIE1/nTDZtKMrbObgXJXggBxL0NarH3zu8QYPS\nexDXr2cDdz1BWCzob52l/vgrT2kcfIFcuCdpYPKLP/YLT8JmVEEuqxXxLtjS\nV7sHG79KVplJayBnqR2jV4wMQKcTJYZuuqUMORc/TKqijmAFESMQedofPDCk\n+mBSUtDAFFpN+hsHXaUQQjfm36XQFFC4pgFJvGWX35B2FShrQApLX7gpYVfY\ntd3q\r\n=XWUe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYiAxLZXp5o6jpXojBd0KQLZ+b/I4ZyA1S/EaKViT7MwIgcK3teT5hYQBNIM3UQxavQaBL1vVNkWCNZGMLFrOsfHk="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181104182934_1541356344447_0.9294248710246011"},"_hasShrinkwrap":false},"0.2.9-master.20181105080435":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181105080435","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104182224","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181102094209","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"f34c076afc310f315c50622bd3f1a38afe3e01e4","_id":"@atomist/demo-sdm@0.2.9-master.20181105080435","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-PioFcfV0c8dZ2rIM1vTNlDL0aHHlaYNZA75C0SuE4BJy/ZM0q2Mxnmgj1ajoT8azKv5R92XGSkd1QZOmSYlxnA==","shasum":"1c01cce75fbf95239598571e7c7d4495e2c628f7","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181105080435.tgz","fileCount":40,"unpackedSize":465181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3/o8CRA9TVsSAnZWagAA/IIQAIZFecJZ9OFg8RKEdcy/\n4LIlyrpYHJCV8c99t/aTzlYPqXUGPrWVe8FYJFXqUz1q7izo6m75XMOmyOvS\nmy7A6x6wV/Yf5JUKw9G7CBcu0hJkAH84BvyaFyHH0MQNQY9DJ+i6B9dSl57P\n6lC9jhI0N22H0S8hTW/6w20nBKQo1anxh/k4j98F14qq3BQbLMViPdbaakUv\n/7n47KQXxBO9YFHv4CLJ0PjhoAzsOan+es0YVOwYZHPcSY3wsW94NR5ShRiS\nU6evRYKeGXNjqPHdjb8pZnePiHVDH15ykIPPHyQw5S2MEwzLYLpSc4zDk4Om\nLngXbUvbj/b4YWdhCeaXt5urzpcMhHXt5R3A2vE7N4bYkGPBv/dpDj1ZrJ+V\nfCb1VVtSM6ANODUzIQ3SL7AR6fs/7qES0+VNhvSV8peUZl9Yg0CbIKGHNGW+\n4fd67rrNuho3IF293Z6fdNy9NTQ9D0J7Cf0nzWkO6Rfl5rOspnm3WV7wCLfg\nlqqOUJQAZ0bAbFfQF6j4kfazZyvqyksGoYme2Tzir+VFvmJM55xMBAN3SCug\n5mEyA4WNQfXHfdm6QI/1wOyGb7bspB9QC8gPRdnu8QyOrED11T0O2NC4rI+e\n8Ov1NCIuiTgnJbSxT7RwttVAbn2KRvTwhP8eLoJ3evWEclBO9amLc3KJEQck\nHhkz\r\n=rYcc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQHrBM0GD8yeRR8aXqODB1lVNpo7WnfN8yQCDt5Lja6AiEA1NvigWS53FzCYm8V/H3jjU75klU5mjiZaKTGeaqhF2A="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181105080435_1541405243368_0.687731774264853"},"_hasShrinkwrap":false},"0.2.9-master.20181105092929":{"name":"@atomist/demo-sdm","version":"0.2.9-master.20181105092929","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181104002253","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104182224","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181105092021","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"2e7116b98bc4afa9e8c9e9988bffecc4f4b18f9e","_id":"@atomist/demo-sdm@0.2.9-master.20181105092929","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-kvTPWAaFYvQJ1O5u+wHc1mIuiI5rItKQqUWiIg2y8AGfUTU7xe380e4Xk9Cyl4rYH6cOYgKPPWSGXow2iNyx4w==","shasum":"a6ca40a3673cfb174b94ae10cd52b567588d9795","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9-master.20181105092929.tgz","fileCount":40,"unpackedSize":465181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4A4pCRA9TVsSAnZWagAAdxEP/jvh1fP+GTnPIg0xQTEp\nySRXJv2k+SzWotYJrL+pTkHUJlnM36DsWEkYMDlhRYuNmhNK2KT8MEYkIury\n9GLwu2GO2naINIda1zNf5g5SoPzZntUNaB0W9h1d4Xnr7IIGzmRkfvWETNKw\nG+7KTbTRQS4SV8zTa+MhwfBo/WGhfcYtfOPP73p04Gq5olNtLxSCWAvpzS36\nBL9osDdBDaCNSPgnawnuefktZa8Ht1ANIXelP6QaYGcMkSE3gCeS886U/6pC\ns/GkalRMsYBYAuk+2IdSnHw6dCEXnqT0ODMzd1DXBAWjsYoGSWZAtlSeqmnG\nnSYRehAvdUVjhxpgUamjRPfg+FWO4tF+4xvMG6EC//UsIst3csxacQ3fhMI+\nIr0CS862B7CK5FAmo9UlYzSojyic6fI2mOWqfjmfMxp020/noa4ronZtNaSZ\nqO+HVqS9gIhnWln5sKv+qhtiyqh29HSjUF3wM7dk74078eOjb0GAioHL/vPF\nES73irIlxhE8xeCOBTXk5Wtc1xewrph25UFlm/hecpQ/JLViOpXgmxD3Lmto\nUFcVE14aq7zfHHAq2jm79DlDFbBrwouLPfUpNbNGWgKLstrPf43d0aBYtAhP\nfBwsYlPbPkkXSZAL7QuYNIdy4YU3VfIz4y0I4hElrpnQCf9TeBV5Lt2D4iWy\nIt0m\r\n=mWaN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdXBvoLfY03N93bKfBugTy8oCoCoqbnQYR45Wn+1PUjQIhAN6qulbENnJma6a5jyaUPqNO5nAeTaAN0bb+QGSlifk+"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9-master.20181105092929_1541410344310_0.7428799658767558"},"_hasShrinkwrap":false},"0.2.9":{"name":"@atomist/demo-sdm","version":"0.2.9","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181105110621","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104182224","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181105092021","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"2e0b09c9216299a7ced13cdca8699720d7166e97","_id":"@atomist/demo-sdm@0.2.9","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-ynsgu3fULZA0b8YChODTH40UAWqQbdsSAURg6wOekuxTWgHlaw74r/ETiSfFThaRHrUEbaWTqjG2DSoNlmX+Lg==","shasum":"0fbacf070b36cd9044ad4a220d3bf2aa596a5837","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-0.2.9.tgz","fileCount":12,"unpackedSize":153385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4DgjCRA9TVsSAnZWagAAJnIP/26Ku3MJXQSIQgHXda1+\nmbcGpqq5ypohoNoxGJ9qEPhDnJb/4V1s3eT04F5Fl04NzDfr88K5b0kFnO1x\nQsteJYxV349Y31pg4ih1pxyT7ToQP15APWINjkivm7liHq6Yo9xZpLuTqdnU\nnh4nrNsVnmlE8bc3mhbAuYzv8M6Bn+t+FITTyenOWUTN4zZKsPFdgW1eNk3z\ncZwF0PzvweXUln1Z1DVAuUXsh5HG55IErbQ6dB+y0sdN7v+gx39diCVoYQfN\nv9pRJrDLju4m1HRqjkSLmWh1mkWjQuAO2KU7GCgtAVWV3ooQnAfytdUukwtY\nV6dqeVTPZbehTfoS76h9xHspOo2Dd3bzGwkw2MymhIksRgfzbxyG+DqOGu+O\n3GHkIuhcfGNxl9kwqy9BL8nd4d6LetAyzIvK+raX7H8LVA/Juj40FUPy2+j4\nfMUHfud5f0zy+1XWujXGJLla9bH9+my0ZaZa6+ZHq7bJ/Ts+2EWANzz5GqzI\nVjfoGIAyvsEqDQ+XCXYC2iB+ZflOf93cXeGW0DnN5J/U9isDMmbife1D1mZp\nPITTuIl9X4miLOBoiCef4fr+Wm5yKMxx9jDveH68TjO8JwJiE4OjzbKOr/fi\ns0x/CF2QAj/iv9qWmaV+JyphfHKuX+slVUrTb6dtLHGxY+TaW3kxU7sm6srK\nNobe\r\n=oyZW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7ZkKS/oNIfjBQnUiwndkfPgzb1wScU9NX+fl4HIpn5AiEAvgCvovWOdG8OZq6KWhUFxQp+H+v2VEaY9kbY44VZDm0="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_0.2.9_1541421090923_0.9027057806077978"},"_hasShrinkwrap":false},"1.0.0-master.20181105151035":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20181105151035","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181105110621","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181104182224","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181105092021","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"21ae9aa3b240a0728c0903c665027c7e5723ba53","_id":"@atomist/demo-sdm@1.0.0-master.20181105151035","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-7JcTGeDYv0Ga7zuN+Z+r2FywHrBPDrLlmXmRTL1KKeLSyOpbiwPFuzKMNTWDpI4p4MELmym4l/eCcf8M/gg+WA==","shasum":"b9b2eac803b4c01392e1faa68dd4bab9e5e36ba4","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20181105151035.tgz","fileCount":40,"unpackedSize":464678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4F4hCRA9TVsSAnZWagAAm10P/0wZZIQhcVYpw+3Pe4kp\nRgIBuLakJJ1D4CKT8IIiP/4dhUVWz899/EEYBWmw4pAuY0f5934U4m+cVOP2\neyyjnDpBBCkj26RZTsZcX/X1Av4p3h8B/8TITddrKF5qDC5qE4IGA2PHB5Od\nUp0nB4hJMn5De5fVxZuE9+1m+wnmEbf1I2dILSo95YYoJ8xSjvbefRiOgrJj\nB/L1ZVVyE/ItdiBt246giNgZcELfaQzI637vXLM3sMvytZWwCUsK37osK8pM\nd76rgKLRcvRzOKv+0DRNrXjPqA1KqFdFQA8dJVhlQfhKT98eICXL1bIqebBm\n8DFxcBcvZeWHB9i/3Qzt6CWG+7si3hE8yXfHOzY95sQy9a1ZW8VOoinsIN9x\nYMwM5CSDMgNicFgzh2NWpjiKZP1IcZ9THSANIlHABvlAt/K+/gxpo1eX6LH8\n2eDP1mdKI37hO5HyfO6MvGoKSbso2hEgGZaw6DC5L/CTgiKk9rSnrK5dt768\nbsTzmEOALNQ/1GD09Yedjq8ZXleLeEn75geP6Y/2d9s6TagRvdPHl/4FYgUH\n7gVYmtd+2dp2WQ0+f6feeJbSdl/CrgQ9FQS35du2d3EKVbvSSj5yaQ150Hj9\nzxxhPurTQzS1wtE3ZmQMfDTsK/xSZF+nyL4bFvrc3UBjQBc39guEWEaTw5Mo\njdg+\r\n=PQkH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7+ArJnobSN/rSnN0a2l5eV3F7yHnZNQCNEvmkTlwvdAIhAK4WU34rBK0KWp9OR0CDsnqLyRu8od8Ms8mUCErtWdiJ"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20181105151035_1541430816642_0.24765492777590747"},"_hasShrinkwrap":false},"1.0.0-master.20181105154426":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20181105154426","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.0.0-master.20181105110621","@atomist/automation-client-ext-dashboard":"1.0.0-master.20181010130112","@atomist/automation-client-ext-eventlog":"1.0.0-master.20181010130934","@atomist/sdm":"1.0.0-master.20181101103750","@atomist/sdm-core":"1.0.0-github-actions.20181105152637","@atomist/sdm-pack-build":"1.0.0-master.20181101104727","@atomist/sdm-pack-docker":"1.0.0-master.20181030173634","@atomist/sdm-pack-issue":"1.0.0-master.20181105092021","@atomist/sdm-pack-k8":"1.0.0-master.20181030180704","@atomist/sdm-pack-node":"1.0.0-master.20181101104452","@atomist/sdm-pack-spring":"1.0.0-master.20181103044642","@atomist/slack-messages":"1.0.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.0-master.20181101103545","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.11.1","typescript":"^2.9.2"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"219f91feffe649939fff6a24760bf69fbdf9d6f6","_id":"@atomist/demo-sdm@1.0.0-master.20181105154426","_npmVersion":"6.4.1","_nodeVersion":"10.12.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-oCcO6TvwyBTkDXBq19WcsrHq9BUrv8ArpyNPHGv9eKIUKG5m5ZyfEp9xo0L/Jdk1JA/5uKMf/bX7eoUx7/soRQ==","shasum":"389fe6a356a7c748335ac167b210563901d1a5a8","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20181105154426.tgz","fileCount":40,"unpackedSize":464678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4GYFCRA9TVsSAnZWagAA6wkP/Rr8xSp4imOmb2tvIEUk\nHiwcvxd6HfHx92kA15a2THz2FMYW05D6FsUOnEuU/KfmqXmeWrItRLW6QecU\nJtdz+Dneqrr7opngc2CgPTi+aEv1vtpvLVJlCaY7JiaXU2nWpOb22iUCRHCk\n03UtiSmX6ol4trepHRi/mCvhbtlz49ElmK3Cn1lQXWYHm2dz3F6H9KYgXDrG\nXT2aDA7qyv5ttu2WytCkpsP9vuas4yNSTZss0lWWRDT7ClXGEzGtMsZuqF3v\n7eoFVKaYrV5QHDn6B2u6IVsHOQMoF6TH0AJbCcjbvYa7pZWQU9BLw0nD174e\na2j337GKzSAp0moVinCOxMkwdpbrAJ6vAJbeitAAInBwX+s6NgMKaCvkF00z\nha+jc1jOwjIxdsmhM7fJ6HY81JF7ntAB//Q42JqXUbec38XdimRuWMt5EfNi\n/BrApJrg57RcUekU5w18wHAaVvvgD6B9ngZuuDyTPyGgBsSD0ctT+7X4/tkW\n2ZTfQ6ov5arlKKZcl3KJGT/P1hUU1LGGV09xW8SkDq7bpFM2xJ2rhIWHOLip\nfucfAQeMkvGA4qKpFP7ZedJRdl5h+RsWTnlKyd9c6SH3G/02rM1fOEn9uOGd\nMl9p4QWkH5K8y2epwI0To6Wo+anceZhc+sZJ/dHk+radoUzyRh61GKta5+HW\nHjkO\r\n=0ngC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0dKdRQ/lROTIJzWqYXCtLyDFoZ3aKf1XN06Yv4OzQdQIgXQXL9YrmKQU0+R3QOtz9JPYbCtwbQXVKfvuYKO7O11o="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20181105154426_1541432837221_0.2383299622434354"},"_hasShrinkwrap":false},"1.0.1-master.20181109234337":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181109234337","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.0.1","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.0.2-cancel-goal.20181109233711","@atomist/sdm-core":"1.0.3-cancel-goal.20181109231617","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"504ebb3cea4a9e24407994bf72a7f1c9f0df4388","_id":"@atomist/demo-sdm@1.0.1-master.20181109234337","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-EbZZrmQbPj/2zQEF4pOwa9sz7XDM2MyQeb3UgteTULNcpM/s9b0DNb0gfiLZvFFPg9S4gZLDLiyzo8bCP1wLuQ==","shasum":"bfad6fa90689864f682e165eb00578974a1af1f2","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181109234337.tgz","fileCount":40,"unpackedSize":464891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5h1WCRA9TVsSAnZWagAAu80P/i/4PLMaoB4u8JiPA5vS\ndHfHmvyW8ayUXvybafr2ZsOA8QZBDBDiOhEK7VH6DrbF64U9j2uHfRo27b9j\no6tOJ/oBjmwiXcifOoBG+cXvGV/JUHf7C9hpDTnXJgJ9vrV0tkZLEYd98WR1\nOTQgenUxvOify9xAFDolHc8JV+4y1nSdYSIphaJMcxo7ofaQK6EYVQo6wulB\nBZYtmeuoqp4Za9h3VMh6oS9AoclHIOvS4a2uWZ7YvnnK/uTmCxJLYinJi4cH\n3rp6QKeP0xxrOh4jHXcpfFl2ohfzO7NIAXzDpH4wGMd8ZThEYAo7SwVs8xNe\ngpNJOxEBUeBrZU7dA+SHuweSNC3W+mLvqFIh1eZW7HPPq0ePYvJXuX6h88yR\nI8sQu4nx8DnlfCUD+Jxk87RILc7WcxUkE/DQGm84AtrO2RFvSR2D79LSRxpZ\nJ56Cy6wnrpEsUGw9FnQJHrs0tYoTUaxX1ydkrI4Krc1qvoAN+pI3wCy7z6XC\nSQNTyBIfL0KBJHiUoidvrIjBMrCvTri49Xjw+D/NKC2TQFl9z/PyD8tamO/F\nTHc7PIYtHp8jR2ChHJ/b30T9xAucwgL+6Fv/LfWooV3xVCkLo1+mabxgxCoq\nP140Mg7gf2/UqsfgfQ+ddZ5wQaAMGc7lZdww0NlOHq2UFpx4M2v5ql2aL2a5\nJ1aU\r\n=WsyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6Nc764jrhC56S3bkSbRInOjiq7y7Q8p5KDLjEZajmCAIgRCiwUAfZdbAdtU0TUzVTiMAwvgoNc64mM/kAyG0Unfs="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181109234337_1541807445759_0.3145313434693717"},"_hasShrinkwrap":false},"1.0.1-master.20181110000030":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181110000030","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.0.1","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.0.2-cancel-goal.20181109233711","@atomist/sdm-core":"1.0.3-cancel-goal.20181109231617","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"a5aad0fd4274f7aeaafda2d4d9b997502838b667","_id":"@atomist/demo-sdm@1.0.1-master.20181110000030","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-wNEtBloafEikL/qYsqDe7si21NcuVzEt267jXbXnhxgZUDJksu/w/Z7r3Qum0jCvNfGafrYR91dsnKTVSUEqUQ==","shasum":"8ef2f656782d9ebc11e3db6cd96a25284b401b0d","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181110000030.tgz","fileCount":40,"unpackedSize":464891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5iBfCRA9TVsSAnZWagAALVEP+wRhDzB5MlE+YX9ShzuM\ngPKzFwGa5+ULPpBUVQQRHTjtPUiJkV7X3xYNOyOeFOYpj0mvVofZQdNkyVNR\n2iZ8imeduhh+M4DBLapwltCWKBCgbBIVk01zBIsalloi8sIPJ9Gn9AdLRCTh\n0mosI7CKkLJR7h9Eb+L/YFMjYSC7wouGS2iYt8mmMmLGSmUNoL25ia9npL9z\nxD3DRNwnY+mHDXw+WC2BW8SNfq9ocx78iSq9bjPlroDa8yItCEWTizyfxPcK\nlWoU3c0nIVZ0OI6a4Y25gk9HYhdzR9VyBeOV1rHbGoyZHTnY5fUZIg0rrmrO\neqqxeQ9CqRanHxv9opCs1L/HieT5/4FjVYUcI+XmR9Xztq+qcjnjUs5dugp4\nmo6WXFNkszczlAIITKsPis206gFxiFO3znpYDtX7+uHYMEvS6TNj1gMBDrdL\nprnP0g5hCzPynnGDrR9h9foVA4Q44s32MPEtsl+z840nkQejDz4XpFOWPxSl\nhokmb5sPhinLD1lTQHXdfKEACkkXtve7lX4l8wS5s2VuUd4LC+NJErCRhQnT\n9gx0lvwB2YG/5T8RtEKs4o9UzawaP1TVDyp73CjJ8DzS9Gz1IwtuRb2DdrVR\nIaTNfbQxIvU7lmai0uJWMQb6M86JI/EW77stRzFvpfNo0MyfDPN9E15Z9nkb\nj4BQ\r\n=zR2G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlJN7l3TE86i6DygXF3nr6OHwxAViBeNQq6a8a/K4agAiABFc2F7rfwfw1ahVepG91kILohKZ5DbAwMX/RQMJ7xTw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181110000030_1541808222706_0.25236745591739074"},"_hasShrinkwrap":false},"1.0.1-master.20181110005541":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181110005541","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.0.1","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.0.2-cancel-goal.20181109233711","@atomist/sdm-core":"1.0.3-cancel-goal.20181110004936","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"gitHead":"dcdcc301fb95f64f6114884c97c9e4170041148d","readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","_id":"@atomist/demo-sdm@1.0.1-master.20181110005541","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-afExmPAF92IFUCC8GYsSS/I509/h6lx33vDtm0yZ6kzHbLLH2Zyiq3wmJbxKHc7rQCCOq59olrm2mrrhM6Fttg==","shasum":"1bd803e712e5087549b2dc8608c27a0b18041051","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181110005541.tgz","fileCount":40,"unpackedSize":464891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5i07CRA9TVsSAnZWagAAthQP/A9K+SrYTAM/3FWL0Jwp\nya0zXCLxOw+WJYsy2Ii8u7OmUZ2U6ljpXlL/FWYdC2hpKXrk/TibxKuBxHu9\nKDZwLCKBQ8e97ieO3P5l5HIPmQiLUjganUf/svE9H1IN+UJr3RJUSNeKj+e6\n5avqMJyJQk9Lr9UTQrMEZWjYbWATAqOS0LNsYhT9YMF2oi9wNzv4kULGDYWe\n9OeSPd2WfE99KGmulhqMBukG0OdWFJWvqnzmFSe3/VoNag401EKCXALrubDV\no56T6YVItqo4Xe2JX78gFpq4yjPkQolBMafoht8LldDmBaVP5m7qJarngr1x\n7jjZrDwcAxVsI5dFLi3e8tLQ1cUM02hqB/8LJOz/c6B4yH3psfEGAUSoVdBK\n9bobxW9JM2qDYo7yNAjkm5yKwCmNFT5vZH8RO/uE9UBg8FHvXoXX3G0H8jZo\nxa2fWYm/7X0FmxIr5wKG0UF6AViwNBDBPmn+m2Yh+oIML8lhMb6wbRLODfF+\njEgxulT+TOXBsnKGUVmmetw7oHOqT+ESmpBt5w/lDzl3jscnZnEMy7/ArXWV\n68G/u4uVBp83hPA1uH2Sez3e/u7LTVEMrfNNAix876Z6/mTBXJigw1uSGwVj\n6P1ZflxR7zCw5mbF2HM37FUVd6HK9yl/+iTZlcfb1UBaJJtfAfno/pIK6vIb\nPmPC\r\n=Qs6r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW6XVKqn2Q0R2/ffjcjHVam0V+Thz6pR+zDPhx5fLkoAIhAKKJkopovjTjgWGtX6tIsbvp87Z5w+EfrUxi9kxHFf16"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181110005541_1541811514605_0.5373444277973243"},"_hasShrinkwrap":false},"1.0.1-master.20181110135525":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181110135525","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181110132646","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.1.0-cancel-goal.20181110134006","@atomist/sdm-core":"1.1.0-cancel-goal.20181110135031","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"b360c489167758a705d11be4668049568282bd13","_id":"@atomist/demo-sdm@1.0.1-master.20181110135525","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-TU/fokWZiw7Zs6MIQL2PmRiqbIJl6ar2Id61c86zM6DjHjHCJ19AF5XPEWrxyVYUc+cDX+oezU+fGvCyhyi69Q==","shasum":"719c4e0406e3473b5ed4780e7f89a30f83e45cb0","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181110135525.tgz","fileCount":40,"unpackedSize":464802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5uP4CRA9TVsSAnZWagAAmP0P/iQHxnHfmE1Y/HlJ3o9D\nZ65LmZ6yJwIliJ/s3Agmbz9La/nEztqwq9YoAZ10A72uuqBu1+ccLmtPkZiD\necPN/I05PPye5F2omMFctNmZvZAJChKKMHQjYFebGp6ah9CcnDmTK2xShRmp\nDayaqKPQ/mmjAAzDqmzQ7cJUzH6/eeQbPw8gp5fOQvk3vVrViIHjQRcGDVc2\nyVPNuhPvWrkE1s18Kgx+u2ATxfdQOxI5UFDApfV37FsV5mr50f9/itkpaNWU\n+cXzF85bzsuTJVIVUcKOwcAzPScU4qymLEGHXUjy/ugZXEx05qJJbdIIHHAt\ndpp2hkMUcslMaKgyXfZYXdaTTjK7K6n3QD2UazXpaJt7VU04+D1kPTD/fRro\nzqxdqPnFYDHnW5mj9VJiqLMcwqx0/dcfFP0Ilnmdr6uZ4e4Ew5BhI57J29gS\n6GYft1C8HUO3P0OJQDPozHlGlSPDJXy3qb4bXZbhupXxS3lmovgqF/g2rH6P\nJyixUk/ovIZqI7IXHTilJm3bedvyL+c8JMyORqgIo9TM48alep98K4qS2pgb\n+XYj/lmM6syROqj+4GyTJJfTRHs9xd1lmpb4UfoKPvlZaWyeVDzcjtZn5EH9\nbHkzvmd+ctMXFCC/1TOHYXvAwH38Egwvhq+bsxUQ0UHxu1hNEKhhPiTPy7vS\npOtA\r\n=LUpb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcn9l/O5MnBgAexBDOeIIWOaLkUR239V6hBCmCtSStUgIgU5b8gbIIZY2VXkc4S6ufyXKR9fU3We5NVKEPk0NKi3c="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181110135525_1541858295875_0.5165758862127767"},"_hasShrinkwrap":false},"1.0.1-msteams.20181113220339":{"name":"@atomist/demo-sdm","version":"1.0.1-msteams.20181113220339","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181110132646","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.1.0-cancel-goal.20181110134006","@atomist/sdm-core":"1.1.0-cancel-goal.20181110135031","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","graphql-code-generator":"^0.8.19","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"13f4cde8ecd299eecf00b5560cebfe13235a1c3a","_id":"@atomist/demo-sdm@1.0.1-msteams.20181113220339","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-ePeedKJoxLPvMDlpFnSHSTeud+soeV75ZYbunt17BzJkY3xW3rfgynG4gtOZQ1e5uIaRoQyLmM50M6P/kLiD2A==","shasum":"8364374a0540da59c5972fbdeb527e74ddc83edb","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-msteams.20181113220339.tgz","fileCount":40,"unpackedSize":466512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb60q7CRA9TVsSAnZWagAABG0P/i39jHV9liAtJffNciy4\ntfZTJuEZZ7Ur+k24hLCcBljmyvAj2rDL/s2zBJkfs++BWHyTtvenIMxyWDUz\nAt33nzdUIWXUZsFtYq9eL69yyP+9I+uvsBGvGREDnooGv9zCjRYP7JUfIZVb\nUmiCV0KQRFCUZR7w93Slr4fJAFsUIcJ0PQOxLcAIrFSaa+4t0F2q+mVuIwSq\nVweumB74MBvyUV/PHa5ALIbVYVPuyonXIgnbTaoLPTbByKuLWYJFDwqspZfF\nvt1+hrSJwcxY0EIAfAqPhzm5+TfNJB22K8Pqo3gXrrichXjfLUvRqhKaEki2\nu4d8SbzQdrc+Jy58H13xu0VTSWBV7klybKT25Wq8a4tt5FmJa98ITryDzY+r\nQcGz5ptKAjD6EDQtKuey/6e87JGDMncmTdJ2kNaWrD02uMw/Y2RLYgE3GN9p\nh3xS1GahQWzCfnweiROoUOPY0/FCt4bD4KRiGdKnwsskop98V8pWAlmY2//A\nvvoM0R/2m+IQpNlXnV9Z5ZTiF/gaj/pW5nrH4sopiSVSGG4gmtDSS8fCWGd/\nK4VXGK07aEOukCs//kq1JTjXT1F36XUUUtXLJSHKsOmGtjvxhauTofa7EPgs\nulEyYmBCfu6gn7cHYDCsxWyHqKzookLJqk8H5XwkUXUaFP/QkZqb+leqEuPh\nkuW2\r\n=bPvY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGhu66H8+iqo+Chd2lPDmGyfUF47/mUU/H1MT/fPdd2AiB7xdB+E5bVmsCYmTWewPnCtpRCpqhfXJI+NkKUxaautQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-msteams.20181113220339_1542146746742_0.03917736067958644"},"_hasShrinkwrap":false},"1.0.1-pulumi.20181114005910":{"name":"@atomist/demo-sdm","version":"1.0.1-pulumi.20181114005910","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181113184417","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.1.0-master.20181113225717","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-pulumi":"0.1.0-master.20181114000731","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7827f4ccbc8765a4f9bd5f552ef5bb645d0630e6","_id":"@atomist/demo-sdm@1.0.1-pulumi.20181114005910","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-XtalIyoOprorABuDBAoN/R7qEF3negUDvi9c+DQrMhohBWjnl4ijo8pR51Ke5fYeuUUU2qsu6j6zl+pDwdydSg==","shasum":"a5b054e0a678334e001282f8a55856f880058a4f","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-pulumi.20181114005910.tgz","fileCount":40,"unpackedSize":574985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb63PDCRA9TVsSAnZWagAAzAkQAIhcjWJ0lW2rN1yId2QV\nt+/rKBEy4LuSC8qt8vsssK4Tx857l65DGsz8tBro8gTqV2ZgX2jzOeBebswg\nU0Uw8DQ30LBXeDmTPT2Ysg4mTKsy0ZI18KbUnx9m/hn1svwncF8j+nwnzkpv\n66NUncpZB4HZK/96RqIEj7aS4h2E26G8eqUzQcFkp+TtRHDGPpzURWanBp4d\nn1YZwY8QQfewgcf8SQhCqoG4SG3Ir770t4bCHbHCbg9J0r7DcDD+wtfGlI3U\n5fV6TD0y2RmG3bNShoLjBrZEdcy7J0CXegeNMVhIoP0ZnVAGg06BdxxSTUNE\nIlHD7DGAY7YuhEoD0VI802+rd6ZhkXNQkHCCyhimYsqMaYumgeokQ2XO7/Q/\n94L3WdhgPN5bHoOc4NWUNekr73EzVuyuf95WVVVIT2kstUNO61PUQpbN0Rp2\nQnbF3XLR+POfYS4iN/sBt8fU96MqY8PCdBh7UGB0Oks0KddD8RLEtRuuMIbc\nXcDowy1+sM0UlMedXNBgRtRGipwd8l/pEi8ZnN9z51R/Z7YjSsf56G/46CcO\n13MHlgQ3RGeKbtK9DrKn+xnHMdfp5uvGLMGXl7ENtFIiVT+aASyRgmAR8/Ha\nnpVUcmeGy4qhrR7VItFmFCaAK9JVsxCSGlB5ipsUhIpIfaSjCXqr+DsmlE0i\nUJ09\r\n=0j9E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBO201ezV9ETQ8XpbUxVrd2MigXFQz51ddXPzWiPEZOAiEAuvvBZTLNC/LKJcDswzamwigQBA4DjOKnw0gxGl4zUww="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-pulumi.20181114005910_1542157250831_0.5927381135754324"},"_hasShrinkwrap":false},"1.0.1-pulumi.20181114201615":{"name":"@atomist/demo-sdm","version":"1.0.1-pulumi.20181114201615","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181113184417","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.1.0-master.20181113225717","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"^1.0.1","@atomist/sdm-pack-docker":"^1.0.1","@atomist/sdm-pack-issue":"^1.0.1","@atomist/sdm-pack-k8":"^1.0.1","@atomist/sdm-pack-node":"^1.0.1","@atomist/sdm-pack-pulumi":"0.1.0-master.20181114200257","@atomist/sdm-pack-spring":"^1.0.1","@atomist/slack-messages":"^1.0.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.2","nyc":"^13.0.1","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"nyc mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm (pulumi)\n\nan Atomist demo software delivery machine showcasing Pulumi integration\n\n## Setup\n\n### Prerequisites\n\nFollow the [quick start guide](https://docs.atomist.com/quick-start/) to install Node.JS and NPM.\n\nAdditionally please make sure you have `kubectl` installed and a running Minikube cluster locally configured.\n\n### Configuration\n\nThis SDM requires the following configuration to be set in `~/.atomist/client.config.json`:\n\n```json\n{\n  \"sdm\": {\n    \"docker\": {\n      \"hub\": {\n        \"registry\": \"<the registry portion of the docker image name>\",\n        \"user\": \"<your Docker Hub user name>\",\n        \"password\": \"<your Docker Hub password>\"\n      }\n    },\n    \"pulumi\": {\n      \"token\": \"<your Pulumi access token>\"\n    }\n  }\n}\n```\n\n### Startup\n\nNow, you can start the SDM in local mode with `$ atomist start --local`.\n\n### Demo\n\n```\n$ atomist create spring\n\n```\n\nand make some additional commits to the repo. Each commit will trigger the goal set and deploy the pod to the local\nMinikube.\n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"af596dc9589574fe184ce9c2fa201cba38dfaa3d","_id":"@atomist/demo-sdm@1.0.1-pulumi.20181114201615","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-t3SvVn8h9eVKSDlUYPXRcFA6m51Z2TT3DL+pv6jbhBQ0Z71Na+L7X8s4VC8TJng4yQKzkM5pcG+mDsh4L1E+CQ==","shasum":"77c819da9ccb55242b882a5917a1e1532bbb3f3b","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-pulumi.20181114201615.tgz","fileCount":34,"unpackedSize":537353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7ILuCRA9TVsSAnZWagAAqHwP/RvbjdNJyTEMhFbvDSZg\n/oAkFL9k4g3xX3yQKSsJuS+lUjM8RQ3qsxGB6c4BCL2UJHryy8mzWsvs4+Qr\ncXIV9X+IiwI4/UsgTl9me+v4dZMvo+w6Ccky61YzvpfxKMAevE6Vgisdkghs\no99QoHJ34zzMKMQG+wfDT8h+z+7wmnkhrvjeX2pby3BbbPk3ZJQHnPe8V2Cz\nU75CD06UTbe9IZ7pNHOCHIzzWj8qqT2S9VSR2qjJAy65ztfRoBe94IS1fHze\nglm9Dldi0cdDoX63VFGj7K9+/mo/jqasQsn1kaIsnhj4wL/Z5QbkBYOWWHVt\nDNDo5SF9GF5k9g7MwRQaxdDZ/GQ7uZU+82rReslKiC7OT2BqjdobRzEl28PK\naBwn6o+eWv6tnJ8FrFQtxI56Fc2gSWaWM1voLBOoP9CG2s+i3fnMKWpFpmBR\nOfYruHIDGOL0dO/zUqWVcokeE95rANB0359+cuUHLqZ1V4am8Hrudm/DjXpk\nbvsCcsUMDFro95J4H1yTwgK8MKpM2BB7qLLSkwonmjH9UapxHswoEhWWpThN\nMpZ43n1MiGVlkH8Svc6CjX8XddC/S6p1FpyKn6tJ32ejwLz6gs3iHtrGSxJo\nYwNqKT+olTKaQY2Cny7frI2VJK+R5oAMEY03MB3PInVkXoghqUjBkZyL9mKk\nVwqS\r\n=E0UH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9+oFdlucoz2/0gG0ZVY6ekNB/YoZzGbCCrAOZkHC6nQIgFHBGARL+LE7KutBesF6u/IFE2jNC2XbRviUEEyQuu7U="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-pulumi.20181114201615_1542226669323_0.6740704138651212"},"_hasShrinkwrap":false},"1.0.1-master.20181119072759":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181119072759","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181116082132","@atomist/automation-client-ext-dashboard":"^1.0.1","@atomist/automation-client-ext-eventlog":"^1.0.1","@atomist/sdm":"1.1.0-master.20181119070450","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"1.0.2-master.20181115164338","@atomist/sdm-pack-docker":"1.0.2-master.20181115172213","@atomist/sdm-pack-issue":"1.0.3-master.20181115055007","@atomist/sdm-pack-k8":"1.0.2-master.20181109214032","@atomist/sdm-pack-node":"1.0.2-master.20181117233621","@atomist/sdm-pack-spring":"1.0.2-master.20181116074715","@atomist/slack-messages":"1.1.0-master.20181115202354","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/mocha":"^5.2.5","@types/node":"^10.7.1","@types/power-assert":"^1.4.29","@types/uuid":"^3.4.3","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.2","power-assert":"^1.4.4","prettier":"^1.14.2","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autostart":"nodemon --watch index.ts --watch lib --ext ts --delay 4 --exec ts-node -- node_modules/@atomist/automation-client/bin/start.js","autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --format verbose --project . --exclude \"node_modules/**\" --exclude \"**/*.d.ts\" \"**/*.ts\"","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess --require source-map-support/register \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":"9.x.x","npm":"5.x.x"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"0f6cf5ab49a17ff0e086af0df4059f1504fa6dc1","_id":"@atomist/demo-sdm@1.0.1-master.20181119072759","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-BN098NM7YkUiaSS+iB5jsOEKwEyOIHSE9leEFDMuYtnRw6CP1HD44MYPaYxe0ruNnAxH/qCCZBQTFfQjbKdrcA==","shasum":"cdf3e997bb6555f55e376616d7541ed97ea83bcf","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181119072759.tgz","fileCount":40,"unpackedSize":601404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8mepCRA9TVsSAnZWagAAM7IQAIB8mrqljk9G+vgjzPGC\nlGIbiwltq+8wzDc3lyLKDSCUxzIfBrReIAiDcdzWMjTArCfwE5z+ZkZO6HP/\nREEkCJZfCW4c2hjhbWzoSuE7hqkjNRbyJyW+kffw3mgYoIdu6SA9t+PY0cap\n61M26Yz4UMXhelXvDb+hTKRE6V2TCi3mPZM9Fra0ekVEQbawcAUao/Wc5ri6\nT+VWkkRNFa47Aiy3k+n0NBFZ9j431bLvXCvl4Vy0nVuEouZ2yW1hervB4igj\nmdoNUNQSSjqu9xEkoW9pdmI9xN+0s62cSeIXDuXPV7FkRP4Ip7mZkmm+IDsF\npbemZCpOlmDupfcAzClMfSz0sHfjCnWpn2tihNwK75u8wlF3GcQ13z0f2hz3\nQJQsexfx2sflJ+D7Q6jqKzC9eaiHQ6rZiU+jve2vmbOiTENxEo1fUFpvE+s6\ntgRgvmYQjGAkwrpCVBW6PN0uqAJ4Y7OnGQxgWVab34v/Mht4TVp5BbeySssZ\ne1lGH0vnFY4T7Y9GZyWEZpcH6TpQsXUNNADeuCMk8sI55rrqL0SXLlJ7Cywa\nHgymybivwvaEO2YjxrXAhZ8nmE82Q/39ChLVER/6GkcFWQtCpE4YYU2UTKAb\nTMVrt/MvWmCXjOu8ChsQ/VAgnwJLU2ypKyxSwfIu/k1+G2sjbXW13EySymdc\nrQkf\r\n=l9Dj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAztVZCYj1gxhIHU8LQMaeFLZjmAsh10Tap2aq4Wi/sXAiEAw96HHBMppViKvxlnq8Car9EKMzB84L6kZt+np8u0w0I="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181119072759_1542612904739_0.9799593969963194"},"_hasShrinkwrap":false},"1.0.1-master.20181129153120":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181129153120","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181116082132","@atomist/sdm":"1.1.0-master.20181119070450","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"1.0.2-master.20181115164338","@atomist/sdm-pack-docker":"1.0.2-master.20181115172213","@atomist/sdm-pack-issue":"1.0.3-master.20181115055007","@atomist/sdm-pack-k8":"1.0.2-master.20181109214032","@atomist/sdm-pack-node":"1.0.2-master.20181117233621","@atomist/sdm-pack-spring":"1.0.2-master.20181116074715","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"gitHead":"fa417cb8f7e47b18f4c7e619c9ec7593c7ac5689","readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","_id":"@atomist/demo-sdm@1.0.1-master.20181129153120","_npmVersion":"6.4.1","_nodeVersion":"11.2.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-H9OVsSObZ0xbcF/M/RsfFLQJ/Unh0JKfRfXUIEuRsggiTsJc0xTOdU2v6KKQQnQvgr/sn0dmWr6Lf9AG6Kw6fw==","shasum":"3c024e8e7e055fe99667b7171185429d91212a69","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181129153120.tgz","fileCount":40,"unpackedSize":601509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAAfcCRA9TVsSAnZWagAA9T0P/joTt5Eb+C79SALbPYFD\nk9ukaAbicgoXRD3o2Pro75uML0X0CJYQYrtnEulUPEoEeGeLpJSqLQOcePXu\n4fYnYdiCWGGaW5Jq1tuMnPbhKrdmdOK7+5U13bKlXIioHwjIW58GDa7o6GxG\nxak2J4HwuktnfLkl3jyp5SW2ShaMdtflflOUN2KJa2axHvgi6f09iPWC9glO\nd/ftT7wa8sYlbU0BeP8UBqeIvQzDz40zVjC2lX24xP/kslftcmAyoNM16ihn\noMS0hvdbnd4Xb0F4W9tSppFpBEluNFwQqhuBMCJPl4vIzQJAdiLNrR18hze5\nCaOhYLDK/3d5z86aIhQR/oLFlSgg1h6I2hmFduyMH8WaqSrlMTGhB1a2Terc\nVXYezYzIqHBvHzCxf7IXkx6DmhqeKuaoZCbaF9cRONGs7qXAwu75TS2I7Jwd\ni0q/u+wikGRjdDaYvU7qp5Z8A4Hvp9ggckZLoRXEmlbWqkD11OX8LcN7m1Gg\n5r19p2WYgVN5Ip71ehVaQYhSfXd/KKo6gYOGLt2U7HC35vnf2RHE/nL17b2M\nPuxqxAhlbjYEJSmAhTdLcjrqJSe+FDwZVD9iyrV/lElTKOX2+meIjnyCteyJ\nN4PuI05UwKPy7OT597s3Wqihd3DGm/Wa+TjcUtlTocgJIDJVRGf8A9b2yjdm\nOKGq\r\n=h6wJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfsyCrbrVCzg1jEuUt+uM+XPYsLGx56YMRuCHxsaf9tAiBfRqzXhDB4YjBRVOTcvl4jxiFP6i+BqBPbxm9hVonOMw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181129153120_1543505883442_0.7847668086920747"},"_hasShrinkwrap":false},"1.0.1-master.20181129155846":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181129155846","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181116082132","@atomist/sdm":"1.1.0-master.20181119070450","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"1.0.2-master.20181115164338","@atomist/sdm-pack-docker":"1.0.2-master.20181115172213","@atomist/sdm-pack-issue":"1.0.3-master.20181115055007","@atomist/sdm-pack-k8":"1.0.2-master.20181109214032","@atomist/sdm-pack-spring":"1.0.2-master.20181116074715","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7720480efd4fdc6a44fc063c481e42d51ccb0164","_id":"@atomist/demo-sdm@1.0.1-master.20181129155846","_npmVersion":"6.4.1","_nodeVersion":"11.2.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-XUtqNAwO/IIJWnjCFc/2ts4F2nEsKEwxJVBBK/bDIwYIGPsmFpxyERw/5xCI4UNPJ4YKfgupwVaNBvrQ4JIj4g==","shasum":"07d7f4737880578fdc54ab1805dacc4875767eb8","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181129155846.tgz","fileCount":40,"unpackedSize":601252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAA9kCRA9TVsSAnZWagAAiwgP/jxlt0Aii+ZHyZq+N0Ea\nfj5BINjnx3fwauCun82rcCpGFxFEACjT1lhN9UoGB8mk4SKjaOXWUeKCe7kk\nBm0k5L7GSd9A5rkYG79W6Zlet/7EX/GzgFD93eBrWZYPncVC8kiE5+sG+rhB\nfsYMXOJEI6CVTDm/eO7GBaVRIIl4xbug1rU67rhxv7YiYteLS7/f4eDr0IV5\nL4rz6Icfo4onUH8EQWuxCQcTJw+FnjiW/T0+8FYq1rEaAg9hKBHsm5CUpdKp\nHfHBWIjyvQXTlhmke2ULFhb6KmexWAuOAI6TI37iBUbN++JTId2oqiIYz9GI\nCMdG4KZJwiDWsU4c0xBxgz3F+DyfErW4wvkWSp6TMYAT+FUAq6vi2N+p785h\ncEFujs79EdG0ofZhew0EXiniuEhvXHrDK6FzbxBRGbao9uzdmIaF5M9fgPlP\n90em+U7UenK1EgFgwEXUp3Oq8X3lftWmCYUyVq+6BYGytU2TM8NE9ORHScms\nenDeBoBNwtNRhX37AOrbjTYZ4xnkpEf777Z+XcUyI1BGCCfUeX6BH0Qee6Gp\nA3Qjf0M1FT8xWaITiQ8ieLaoUAc3dhWiLmMn51MMSmG13KV1XxlRQAat9HfQ\nd/w+If6Ybm8JsSUycXp8nRDTMFM+CEQ5pbaSyOBY1cpZMMIObV5eLJWMdL92\nbfp1\r\n=UCiq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFf5btZmjQg+2uC5jWYktNI+2CmiMbZAMT19s56rlQOKAiEAsBGr1gJwBvUWe/TmnLsDkEoXgoTSvzZlnfrUk4SfdNY="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181129155846_1543507811536_0.5711606853898767"},"_hasShrinkwrap":false},"1.0.1-phase.20181213032552":{"name":"@atomist/demo-sdm","version":"1.0.1-phase.20181213032552","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181116082132","@atomist/sdm":"1.1.0-master.20181119070450","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"1.0.2-master.20181115164338","@atomist/sdm-pack-docker":"1.0.2-master.20181115172213","@atomist/sdm-pack-issue":"1.0.3-master.20181115055007","@atomist/sdm-pack-k8":"1.0.2-master.20181109214032","@atomist/sdm-pack-spring":"1.0.2-master.20181116074715","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3cadca9e2c0b8bc1e5e8da5fa8d7ceecb1bf235c","_id":"@atomist/demo-sdm@1.0.1-phase.20181213032552","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-/86xv9cDXYUmtl3P6spttTuALloLsxLF2+XwnmpTK450j8r5DoLCloWWYwJCaVnQxlkwrjF40clS28+gb6cgAw==","shasum":"b82753b97e5847aa14e2e5990b0126fe4e508cc0","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-phase.20181213032552.tgz","fileCount":46,"unpackedSize":604087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEdGZCRA9TVsSAnZWagAAJhcP/1L6/6H18iuAwXDjkM54\nL33inlWj93szckQVnBcnwd+YDfpaZEZFXPgI3Yykwne0j52BYTKYyrFKUv+O\nXEjEVGbPF79FG+4UegoR2P2x3ssvJe5DMQ6U00k6fgtR8RrpSqAHVV54WJi1\nsuJ56ovxH5FwodNrYdLMymI1kQxtI3UnWqZE3fB4/elrn0bR5EudQJuL3biF\nMUXs4bxrXsI+1hM/Ingc6Grx7Oe1gbOa6VUTZ9yPYZB5LGWquDAL22P5tWfN\nLcnXFaeRIB3RW5msWNhtZn6d5zBfUgf4SE+fRYsKigKEfIbibthxOPp+V+nd\nZXx9FYKWKlwbr+7H0cbuA/1DFw0n/l2uzV1Nqo2ecem/5KRHjwqqNYkTl2En\nzNiQPAP7mZlU3wAa9D7LGmluPkYxAV/2PdIxnbJC0cZADIYNvwvZoPzt9bNi\nGu2ghOTu8dsRVlo/Jf3dtclfUlsjyF4JGT6Dw0MTQRbPkaYkTlY7/o9Eknxd\nos2Ob/+bM/exKdbK7Fsrsl32izNtrI/va8NfgmFng36QNIiSTEZHM8rIONvH\nKEjwHmZrXmFwnMprcaYBy37jrViNvRooc+TetPn1euAXGLgyaw7K22bJVQM0\n7GZGEtJiT2lAFWfKpl4/b+Ud8pszXI7K/vNrV2iPChPc5wlOAt7fAf/2FCU6\nn9TO\r\n=nm1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIhxeGwy3+eHEUuqoQBBJLarmAlGiza//fygefw6N+TAIhAK/6DmnrClu4u0uGd+iJxlMPcY57cSeZ64GFk2wArAwg"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-phase.20181213032552_1544671640297_0.7718077839502839"},"_hasShrinkwrap":false},"1.0.1-phase.20181213042636":{"name":"@atomist/demo-sdm","version":"1.0.1-phase.20181213042636","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.1.0-master.20181116082132","@atomist/sdm":"1.1.0-master.20181119070450","@atomist/sdm-core":"1.1.0-master.20181113230355","@atomist/sdm-pack-build":"1.0.2-master.20181115164338","@atomist/sdm-pack-docker":"1.0.2-master.20181115172213","@atomist/sdm-pack-issue":"1.0.3-master.20181115055007","@atomist/sdm-pack-k8":"1.0.2-master.20181109214032","@atomist/sdm-pack-spring":"1.0.2-master.20181116074715","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.2","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"f2aa4a28a10f69f969b992f32ffc4a83b1048635","_id":"@atomist/demo-sdm@1.0.1-phase.20181213042636","_npmVersion":"6.4.1","_nodeVersion":"11.4.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-SA+tLYJ5jd3eT/1cPTSX5/pfz1MR85gQ1Tz4hHvfaMWnOEzI1n8RBWDB58bpToMzgHodLGIBQPrRGe3/6H3HHg==","shasum":"6dec7197bc34e8794da8eec4971cd37562125303","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-phase.20181213042636.tgz","fileCount":46,"unpackedSize":604061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcEd/gCRA9TVsSAnZWagAAJx4P/2yjKz28HBdKSxaGqRSe\nB3zVBFbemeIWQzkLjd/ABWfua8jw2WNMiHSOjAEwv0ug4RikGX4PyKrdZus+\nn9XimObCRylzvNH4EUeUeWIgklTHdcc0pHflbT0cc6d9CT2K+/CEYUcHKeNS\nOwIPRxixudLyCD0tPMLn/o5zg6Y2Szsmk8tYVXyHIbeckgCES+aFv4SYVe/6\nLTBJBJP78BMxJ7xoGG9T5Od42Jl/79sbTPCbbHlCcWMWjE37RLRTrBxDK1hH\nfXm2cKIt1dQUu6vK68uTyBULqnveMtW6NAYq2WtFaiegedwNwncuS/ONx9zc\nB2ZuYRVkf9zsjpfk+ZKF8S8Vkzr9oKjX2Jb3oPseBeeSSYg3bIceIRc4E4YP\nOXhW4O8WENdw0e0cTa3yELq6k/HQoLltZ4b05dDUjaRL2lKu5w5Ie/WkK/0T\nV//nrKIleqf8KgQBcNopCJzTd+ADyn8FObeE5J57njfELwRSBh39kot73Ujk\nS5UoaeU0vmgFbxr89eNHvnlyn32hX2/MCxzEvPPScvt0YixmOLx7yoMKkNmw\ntRhQEGrpSs3QzgS/BRG6F82DgwulUQevLGO5bL27WhPDL8pKWi0b7y5sjSRj\n5o9A6CHLmkxbf2EV8xuhTshL+6GDqV7Oko8Kn3lygdC8BwDb1Fzdp3oYyEKL\nYu2L\r\n=6TpM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRL+DOPxuZsxyCmJ+Z/IPBy6t1B9XB22nrW3gGyAViKQIgenGyR32EOXzK7Leq3Qz2lwuFkVsx9RbS/Hc3csfhCrM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-phase.20181213042636_1544675295634_0.019560513912702637"},"_hasShrinkwrap":false},"1.0.1-atomist-update-branch-master-1545211451451.20181219092532":{"name":"@atomist/demo-sdm","version":"1.0.1-atomist-update-branch-master-1545211451451.20181219092532","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.0-master.20181219081649","@atomist/sdm":"1.2.0-master.20181219091010","@atomist/sdm-core":"1.2.0-master.20181213212357","@atomist/sdm-pack-build":"1.0.4-master.20181217220011","@atomist/sdm-pack-docker":"1.0.3-master.20181218081846","@atomist/sdm-pack-issue":"1.1.1-master.20181213113748","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.0-master.20181210133355","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c9505b1d128eebb57e743e241d2f89b0a62642b6","_id":"@atomist/demo-sdm@1.0.1-atomist-update-branch-master-1545211451451.20181219092532","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-P+BL2G5OuMhqlL+grW/71zld/Z+/fc90tZQpu1S4kfvlde/J6uY+TqEUPnpL3kzczf9/Okhr6PbGdZfvxlAS3Q==","shasum":"3bd07b9c28322be83903e27acaf48fa4167a0071","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-atomist-update-branch-master-1545211451451.20181219092532.tgz","fileCount":40,"unpackedSize":628511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGg73CRA9TVsSAnZWagAAPygQAIF82B4NLVR3Tl2h2teu\nFapoHLY7wo6sXzS8SV28FoPhjR+h/LsS3R65bdhd+pZj5wC9mwSZy/BywcJm\n1s9sRQBiEanec/1ksHffIjvMEge7WYC3zqw+SsBIqhjcvbnf9RfLxahIr/V9\nCMASd+n2nOZL6Qi40m5fcRFC6icuKK41QgdpLtWIk4EhPQ7NnlWqa+wwHSt2\nD+XuLKGF3iIG702feeavS1MmdE+JgIuKD5VH2arD/Oe2N23n9rW3sEHaR/7v\nzXbx+gRyH0BU72zlHo2imFB54ymObbUCSZyKzatAz2zAyOVmnX9lUgXulyQE\nL4rGApRC440QNafoX+L3rVM1xWfQZbXGZ5B+ryXBjy6NXZ1BmGoyaGktJ25/\nx6DO73NzZDPV0fnt+jEADJYZ2vJpq3nCXbVJpJZnJH7bHjL7g7vGoeKfNsXl\nxqAweD0XPYpqNdFXZSmL9mLpljo/lIO8QlIxjLkGVv+CJh4+wONTzW8AQ9c+\ndlQqmvAu6WeV+DPtspT7/QoIAseKZTjlhsZPG5JD6F+fD7ewFIOT3bIB5iZn\nMEeMnNVFHYFPPwhKfx2FwqIX5SgWQZhzK2iota6yupIb87SsuTpJ1ild5O/K\n8laszcwbAqmfphrzLYCFpLnh+FJa1Brhq4WSz7gKhChtG+KmQ1B/iTSoRO1t\nwOKD\r\n=7fNw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUwbFc/IrKsIVEj7fqXHjjgKZk2YY0QbT/e+0t5x918AiByhxUAPwVt/apDTyhr5UY2FornlRLDlizmMzWDYWNnRA=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-atomist-update-branch-master-1545211451451.20181219092532_1545211639112_0.950336860021392"},"_hasShrinkwrap":false},"1.0.1-master.20181219093758":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181219093758","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.0-master.20181219081649","@atomist/sdm":"1.2.0-master.20181219091010","@atomist/sdm-core":"1.2.0-master.20181213212357","@atomist/sdm-pack-build":"1.0.4-master.20181217220011","@atomist/sdm-pack-docker":"1.0.3-master.20181218081846","@atomist/sdm-pack-issue":"1.1.1-master.20181213113748","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.0-master.20181210133355","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3854b6999746491e9cd667f182ef19ad416293cc","_id":"@atomist/demo-sdm@1.0.1-master.20181219093758","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-7BxvMC0ubbdpHPyjo2QM8Rt+BfRAj3YjzAqz/eeJdLDQjnuLC4vrkqliiEjDYA2sy4P20Ga1oKldGSjx2tVn0g==","shasum":"722740e4a03c904a61293534361ab2b9d0c59823","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181219093758.tgz","fileCount":40,"unpackedSize":629960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGhJhCRA9TVsSAnZWagAAZo0P/1liNmnrctUIbT1bjxT9\nLn1sm2pllB4PYzRPBOBkBa1s9raw4Wk26PmsDJTluOa8qI7eL0DpNN2n9RG2\n+nCs6j5yj2lnHySBjW9VnxkOQPcywCGOoPTWXJVVIMN0uSiKibMFEzCuPOW0\nuq6WXFGbNkH3nrs0t80xQhOULEMp2ftQZBYqdfgDQlDp5d4hEDb+KPPZYLOo\nqXu39xC2dXRlcyamF1OzM/GaGJj/D4ADMdr4dZVPlo0ySBOSyPmVh1iVUUDv\nqzIO0NIld6IDltnrEO94yY9KFvce+yb03XaZ61Bf9ufYRYW9haCixSBZzveq\nggqcKKoEdAwkPBmkcaU9kq8UuHilhVzt8lloXhAKVNoIKayA9HO+HQH2teba\nQHVfyeA8Qa5YH/vHXEGxdxs2wUBqU7z255IZMJ8Dl2uYxEjNplwqW13+GvQf\nu6gHJH/AocoZhOfZdDl2sGp1oCVCI4fu9O8KUaAOhXStlI9zwZep+KcuaWrW\ni3TW3YzRYfFdGPM7TY06VEut02knQjX6X5JSSjBm5bRNlLa6P75pW8W7FF84\n3uQggDLNEbs4uKmhItWX6MsvyuBA1r9etAoUQ47YoFXik9ec8JDtjeHwR7pj\nJ6NQXFj8ODIgxxvbHFxs0GDJvSrxC99VW7M+ZiBS5VmMpkBtJ/ymIq7T9jrY\nIolm\r\n=jk1P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBN8FbZfQJGvOaAgT87aYqPFg62Kfr/XlyXcKgEaWU19AiEA/BMcTbl2BihGm4idYe8MXzInAaGOSR/HCVEBywjcftA="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181219093758_1545212512914_0.16844497199667718"},"_hasShrinkwrap":false},"1.0.1-master.20181219100706":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20181219100706","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.0-master.20181219081649","@atomist/sdm":"1.2.0-master.20181219091010","@atomist/sdm-core":"1.2.0-master.20181213212357","@atomist/sdm-pack-build":"1.0.4-master.20181217220011","@atomist/sdm-pack-docker":"1.0.3-master.20181218081846","@atomist/sdm-pack-issue":"1.1.1-master.20181213113748","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.0-master.20181210133355","@atomist/slack-messages":"1.1.0-master.20181115202354","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"95f1a82689762a00385b5345e7eeab53484a324b","_id":"@atomist/demo-sdm@1.0.1-master.20181219100706","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-v22MQ1fXnNqtFgI0ru4ZXlO7aBdxqNEu40xWDNnhaj+P0VMsAmfsIODEuW5AtJO7Zd0uyl/SPtmQcHWgLHIFrg==","shasum":"aabfdf023ce5b7801928437a6af4b684a9e2a385","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20181219100706.tgz","fileCount":40,"unpackedSize":629844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGhonCRA9TVsSAnZWagAAVi4P/j5rC5rGZMHnAgsikPI3\nr2l/y2R4znn6pERuInse1aei0JUgODNmISDqqUGNK6TbPPrhTHeDBmPoIl7n\n+gxYE9GFexyDQxIjiwTRpzANKO7YafZUITPQfg8qO0hDf+KtBiTSRXgJ73zB\nnmN3vIUhuANRignp4fy9Em2hYVwPjsa2b5hHulhz6KyCY3DRYs/WMFdPtRYG\nVIPxnCzdS41zUSseoLppLbzom67z4pGrysGxeBc8CN2eEDoupd1Ec/BnJlEp\n1D/U+mia9EFF0Ro9fqWMhhD/84pANj/IVq4iXyqVr5JQbU9w6qcOgjzCGg22\nu4LZWrLUuHE8gFi2k5ubNTGPdwaPxUqIN013PAC15C7Id0U6+gq4u0aK+SoE\nM5fuK4/ZjVEI8jepradnkcZEgVw5iqxDk5D4ihgNpogmXmcqH3qqCQ1B0jUj\nfFk7J/LvIRPZCWQNO5yRwtzU4gZh3GPvv/pfYAb0m8qZ7wv3totN+FUbYULY\nNuuJ8Ms6AV511vqyeMWT1UJafJlh75o29Jm4B+nUBy5eDUVJBJ2yuG1ElcXr\nqmQ2IRc2FhUDeakjkapK/EAq5UTZCratkg/7MAEfDIzfuI5qBCqdpX65FLA7\n5tjNJ+sw+3oWkb186ESTO7psPSVkpUIvL+I1MkzHPRDKZdKNaT99KzxjXAG7\nY3Nt\r\n=iWun\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdC7RplrlaOyUk3DNPAhX09Cv8qQBqUgQKB+3BOCl1UQIgN6F25rIz3dzBz59PKnbZuDN5k49rmyI1NtLDODu5ttg="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20181219100706_1545214503061_0.07782151928061087"},"_hasShrinkwrap":false},"1.0.1-master.20190111150905":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190111150905","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.2.1-master.20190108111305","@atomist/sdm-core":"1.2.1-kubectl-removal.20190110212957","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111103520","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"15bff2034fbc7ab873b5325e6179b1353de3d46d","_id":"@atomist/demo-sdm@1.0.1-master.20190111150905","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-grTxZHhoUvdsaOgg26erbm0j1xWXzdMdcbLQqa6wkWWpFM6uCPcKTGAPWVkxFaj0ejULjma/GEEH5a42EJbGhA==","shasum":"baeaeb606ff2663132803b8344e42f87094577da","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190111150905.tgz","fileCount":40,"unpackedSize":635156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOLOBCRA9TVsSAnZWagAAypkP/2U9LWLO0F7DwqHvkHXq\n9k+cBbCbXPSifKYIGNfYG9LJD63cm/3XycuGwWlSJQbcZMWislgKXoiqNRSG\n72apWzG8AT6XiBPO97dsbs6vqEOHjhu04Um2pLqmeW1uRdyXbdD+m9mtT8+M\nPdB+Mp1OoGVaZDL+KAM7/aRYZ/HSaKU3sdqxUFdb3/Lcz1U+yXBUJhLFOok9\nNWI0uBhjMiw26V+keli7qF8M2Kbkn+NPxrTp/YdPUwhLiVbAEBXEmbw1KLCo\n/NlJNsmSDe3HLIM0nH9DSTNVOOGd3LmYNeh1NhLWWnpep2XBsLjS4h4XGnqu\nzjIdG8bEx5F2uHhzzgF2r/k4RNBOwCFTkwGXqGiDdLv0ejkYR+hjUhXY+vNJ\n/kKLocoakG7zv6QrIOctTPO0nEY7e77kR2wjSGrE2eZ+X1pTX2h5+orIyVcR\ngi0kw0T/71rFMMlF5Mvx460Oyh7L3BzFreegT0nnHA4yna86yWfLEpKol99S\nc/2yWHf9Bvv4RVYF2VjtNd3+qKNcL6+cIenu5WH58B80Ts/ozF+dKGybzPLD\nDxQrA7ax0mXu45tMTjbCdzfXFjjiu3dcsWrvfvGd1KeQromP6ytq3i5bzims\nrT7xOvw67CTgx/yMltwUFJG4ebVC3paku736jqQNM48/nrKVGj0Zek1/R5V9\ndz8r\r\n=w07U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQ0AEoJcxL05Iy7Y/T738r69l0RXBe0d+wyr6rgqRtJAiAspn1OXuo7U5hpM6MTo99rTK6CPlYFNLefUn5nlxiq8g=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190111150905_1547219840602_0.5737002748429376"},"_hasShrinkwrap":false},"1.0.1-master.20190111154212":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190111154212","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.2.1-master.20190108111305","@atomist/sdm-core":"1.2.1-kubectl-removal.20190110212957","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111133508","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"98069d32629732afb858a25ad04d9af07468ce85","_id":"@atomist/demo-sdm@1.0.1-master.20190111154212","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-EvvBivOQ7dvpsxiw9Ql+yepyPf8EiQw5M2ApAPaz+GZWAfcY3upOzyUxwDqsG90QKNab0Mmk9/838bsb+RG3/w==","shasum":"028fd776113362d8e664c5fabd49e3ba32d20e7b","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190111154212.tgz","fileCount":40,"unpackedSize":635188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOLrnCRA9TVsSAnZWagAAG84P/39e1aL7r7HvkbuAylEp\nDTVp1YJq1PdoaKs7pbuIDkeekwxdftwSUxCYnJQUtuCuKZrMzrRab4MAm1UY\nV1dfxSIsfmAwgcoy1RtT8juu17lT9HH0oD/oy5Tst/cWyKKEBvwYkuPGHJOj\nshn4TvrC4bBy1NuoaSeB/tA8aT3qoO1l+M/dx2t+hd5eX9dVzt54+rECcl3W\nmH4Hxwi0DJo+JhhAQXiwyqDBHI4zEOdY3gIGqO1g/6Jp/qB6ZxQZn8vnorfj\nSYbw0OjNgrPAjR1K1ZISTdohwgCyLivdaqKoRFSrUykG7ktIJDi5vn9TFIz+\nTcX1M8XMCBlxXNu7MnrjxWlJBRy+YKONfhpkwBYbFpo+CsO97mTsFhjrPIFG\nsJGiARN0bPc55JgbJolDqeSvKlD0rPOyxiNCPcT2ZvENJB0a5tjfqTY75Bc2\ni+LXkn+bfEuy5mo2YvgyXcHHeFIpzh/CjqodRWSsAVz1Rc/v9RuF2kuHLxJM\nfDjWhR+2lZr/PbnYIUa/dGwFwIhf7Bwgc5Gj5ftJmbq4XznVlnhAh0eWVaeZ\nJXjP/qb6F72ss7DI+rN4nyOinwUJCo3RVyxxIPMyojKdNi8jdR+XlcwsbihS\nCYEUULFY9oUftt9i+AJpYLoTfHvnHqy+prsqUzk3Aw2ZdT8NJFsBCG1IqoQX\n96tS\r\n=rTnE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA55wgfXirxHUAkQLmEMbIk8pTjlzqm2hBWrkNPtK+hgAiArSVC5NOMSxFEuxp67lbjNzP1sEX4wrI1PbdJVUdV+Zw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190111154212_1547221734909_0.28981028472251835"},"_hasShrinkwrap":false},"1.0.1-master.20190111165959":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190111165959","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.2.1-master.20190108111305","@atomist/sdm-core":"1.2.1-kubectl-removal.20190110212957","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"89d46594ef9eef368d086cc274adcea033a9330c","_id":"@atomist/demo-sdm@1.0.1-master.20190111165959","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-ws3Wg0WuJwZtD9vqHNU11T9dadGZmXv/GNvVAgoiCnVCV+ZVyuX+zeqnRCGmS1OY1venjKau46mNI1aSEPwsqg==","shasum":"f8b73de164683ced5dedf80c4a13d69327ff52d2","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190111165959.tgz","fileCount":40,"unpackedSize":635180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOMzJCRA9TVsSAnZWagAAUmMP/Aur1CZkNe9SsLlQSYg+\n0o+vb2/ZHIJ+qr3GuFWFOglOmIbgZZXQslzz74jbmNQG/jV7cjPSWhKGr3l8\nhby+QDTabHpr6OpnVpouEqUrqFsStppGts951VHpGyTrlsxxTgqdlr0OyjNn\niqHgjHZ/k8hwgshJJafAR6b5WujDs/wsTxmDsfVJ+1CpI2v/q5EmUE55ozkN\nD05/EbEhiH16DbRsQkJ7lg56owfTgGMcmAZnc4ZE1bXBNDH+oK4uUK/O4hYK\nxIdsPFNn1gWZV8/FzeQZzD+coNSrN2+8zYP/tl1O52Fu9H8dAZFfGmRxOsOn\n5VukUv6uFGBhgz3tTf0HkjnkglzWa9q/cAH462mR+KLyvuTbzRRDU85oZP/q\nL1KBarRzG1vvosbrQDqIbSfp+dbNQk7MQISqve1T+3ch2Y3Q827na8ZalC9Q\nOkhts/xgZs4mBUw2uWCoHLO03Ap+ajnwZ7u3F/Ha6NgpUV2GeL6/AA/yoPmg\nZQSzXFaT4/H+Ar+o9H0xwHPFEhZou5P5H6R8HrCLw9EUXVWuJEDpIsmtPXiE\nDygpP/Tub0sChpoHAgPDCnGCs7Rl+83zEn38aE6bNDBTuz1t7K2zhtSzOhqj\njTwN3VQ+kgH7eNmIuxfIc8Eg9XBj+ECEnF7+ShmYm1ZfQfpz8rswYmkhcZc5\npnJT\r\n=0XB/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPdaS2FNW7E3i8xspLx5XF16nr4idwsZX/IgM3p/4RYwIgKqnwL7C3han9B6Izah74yUXalgCa7UyKkDla3CeTpZI="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190111165959_1547226312386_0.13885539212890952"},"_hasShrinkwrap":false},"1.0.1-master.20190111172450":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190111172450","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.2.1-master.20190108111305","@atomist/sdm-core":"1.2.1-kubectl-removal.20190110212957","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"0bc45cd9871e3a88cd1122dbc49cc881a6e37745","_id":"@atomist/demo-sdm@1.0.1-master.20190111172450","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-L1AvFU3twJGBz7b1QXYvK9uL9omZr5Lhj99XAbFjbWS9a8bcVQ7Eg3eBehsFPNzcOl7OZlaiqcDlLwJywGBF1w==","shasum":"96e5032fa56738b77b60d591efda9dba30f9e705","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190111172450.tgz","fileCount":40,"unpackedSize":635327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcONiwCRA9TVsSAnZWagAADFwP/2qpNG6EzEndH/kc/MLw\nDiTAhMTMD+zZCdSX/VAraGXZLpOHhUynMSN4bu5U0iFmo8wbjDMm6cLNfyvV\n7cc872dbIj60qXbWMLVwh5HKurSvtGrZHEd7Deziymon7AV4pPjnYVudZQdc\nuKjA4EmrBYyVbzf+IHeFYCRLNWen+sxF1JgzEYt0Mr9d22c5A7nvf4J+jG3t\nSpxSDMnrk2d2pnNXHRh4PSS1KuywtJmsTUeDwPERl+qlPb2e0+NkX0luq17b\nJatyIayULd8LeDnI6I0Z3tYHyUGpFmVPtxC7YLkYQPYcgaOD6WUmuqWnm9gA\nbay/RMvdlGepmdS3H01UsZJoGZ92rpuoxTLNM8DS8psnp+K9dq+vrkr3MspL\nVKjdY9ZCSbpcV3RVhngzjqR5MXZusxsoG6EVhz9dgrSAbwQrO9awZySdlMRy\nkHO3OAseO3A1NKYEZ/qLfbpSApHnG4dLWbt2TQxjhrvzWuAyu81dp1aOUibD\ndMfQYYTQ+mZZBEjpirw6Yc0nuNQK86OaDckhkdLU9qpLLM0ibF27DDfmWe6k\nuSVLBl9PD44bOP4hwYdM6gfav0eIXAK8bFWwEZjgaN2PJnlOKCinDA1pJLYM\nxcADo1KURSIZZkIzm9EtTtZX9PbeQHF2C1SgT4G9haXchQisRjwLWeIBi4Oi\n+3su\r\n=2l+r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjbhJbs1f52NPuW0VeXntrcSa0xk7XqHOL0MnEN8tAkQIgEscD+N21tRZLejwRhqU+IOzlyM3POuuVBGtDq0T0P1A="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190111172450_1547229359477_0.14759256610588856"},"_hasShrinkwrap":false},"1.0.1-master.20190112212511":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190112212511","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.3.0-goal-launching.20190112115551","@atomist/sdm-core":"1.3.0-kubectl-removal.20190112123041","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"a15f48a0d77965c9287f694dfec32bf1904a3916","_id":"@atomist/demo-sdm@1.0.1-master.20190112212511","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-3DkpQfrK7E+0/YYIYN3DdpJREhlsdxXEi7N4WhbMB7Q3MujAp/3k/46boUYgeP/7/mUuP1c8gzoRhUt4SXCYIA==","shasum":"c33373698e44fd6dda8b27e40036b1709fa90c56","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190112212511.tgz","fileCount":40,"unpackedSize":635343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOlyPCRA9TVsSAnZWagAAIIcQAJpEZxTSIJvbtQZs9Rku\nBy9LKscIrKO1z7mblDMGbYdUDNI7ABUEEB5Fs+CKf6J4zNbchNRDv/X5ksFX\nPxCqCu9MBL/OOXk+/n4FL/bIm4d2BU0IUQi+Nfs1H83mt9ZiBdpE04lE7aZt\na+SOuNT6ywTDW04TISskmuA0E2G/I78wP7RAX7jGevIPQE8sA1HRA92OoKG9\nI718PsSuA+Gx+SZdTDd55VJqO+C7+Ew2Q3SmI3auSsZBz2hLULc/eQUZ0nFI\nd//BdLMvXl+c9xYF38RnxuqNvIb+IkCBnWPGADkFsOWr26Vy10KrmW59AGGK\n6nkGrniA1gU87yd67m/HOSs4sf0F/jZUIqhpMchEcPVDszOaq0XNrmmi/b/L\nubU3ATdhudbyRZs4XgenKNyIFT9cJx6F2ROr6ZzVaDxb3vOlzibZiJ0bcncj\n6m/ZTWUAz4Aw57sGLBrywwGaBZNOsGrUgE+IYfSd1qlj7e+OxSh/ihSATeLK\n3LcDRZPKPeWMwgNsnLsfieXcv3QnGZTySgaPkLqEg68/tNEHVKLyrgIGc60V\nthRyqd0SbM0ZTPghjZMWcjBNWhfbXuKjdIUXvx5PZ/ObeRBaviy+220UrVsD\nk90kgTeb3Fu0l0FjJ9sq6oyCpQ3lLTJgB+YSB1DsB2ffDYOWN/VTJDbQOgVL\nziqb\r\n=MUfS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNa4wXJ5BDFyk/qAR01DFSZq7XeazPIELr6qld9lTszQIhAKhWANgCaY4HjE2Q0EHB3eKFAJre9f94ZQm/opM2uYIj"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190112212511_1547328654607_0.3981224053264474"},"_hasShrinkwrap":false},"1.0.1-master.20190112220511":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190112220511","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.3.0-goal-launching.20190112115551","@atomist/sdm-core":"1.3.0-kubectl-removal.20190112215259","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ce6f38cfe763da6c936b9e87e562ffc9fe41170a","_id":"@atomist/demo-sdm@1.0.1-master.20190112220511","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-AeGGPBrx6Ezj88NGVH/MQzXx9mE8FJ7LRxQCwB+WvJTeqrZ+YbakoBXjpsAc+aeRoDk8BsoL4WKDCapvwFsnng==","shasum":"710d946a9914577f2f0f6f0bff86f259f1a38f93","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190112220511.tgz","fileCount":40,"unpackedSize":635343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOmWECRA9TVsSAnZWagAAN0oP/j11d2mewEDaKFu9QOqv\n0sUoeS9a+Mw9l1BKyTGWWI8H8MpLJEYqLZItXVE7+o/FP9C3l4sszkvn53D7\nCtS17hhz9uDzUsi8MBdIFuQrODphQD4KQaN/D+U1mYz1EJiPuzjMF66nbFC9\nIpWPDde6IppjMhIB2UTBo9btV1O/xlVVIUXW9dyh2+CpIUK+74halIDZudiF\nYI5jLjqSS/WAzjQryTP+hibiPDGNVRb0CU0+SbX0PDXoi5SfokbGFXWpBa1n\ncALgVykKi3mSxBBst6+k3FQ7NPgDc8ryA/KuHdVZ6IrkaTVZ+ECntPeY5z9/\nShYAXJjrskvSS3OqhBs3jEzwplqe8sjbS7CDSa8t6wJej1Ci00H/8CrDC72k\n5xLrLW5JXHsjDH9rF8jLXAlpOa8WbhM8LWdk3ut5U5DC6n9oRONkABDQ0S38\nUW9CZcKplPAaY/SrWf7SiouzpPA2Njesg/qyj6zmLru1ApLgrQnQXzuO0hbi\nCglBvteO//PlhYuGvS84QgMviS7ZWEJSayuul+gWM4b2DtFNBwuYZNHYeXD0\nVYJZtdzzSDyr4fVTOC0RF5j3tQWz3xBUi1DSbHm+1SKeLRg1gJDK1v/0sfbS\n/9GDEkwD1D1AQw4dAGmJoFgQbFuiaDpbigpasSDYwXjlfT7ufkhdN8eVivNS\noE2d\r\n=+EzR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJUmN1PzPPmLmKLMuROGMig8ogDlpxZvNyakKBzwsbAQIgEuXxmyAqGH6fz8xCjNQVIk1U1whxQVmFWyMnH/NosGE="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190112220511_1547330947761_0.19793409231629444"},"_hasShrinkwrap":false},"1.0.1-master.20190112223731":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190112223731","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.3.0-goal-launching.20190112115551","@atomist/sdm-core":"1.3.0-kubectl-removal.20190112223030","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"fbb94283712f463260d88c31ce6df50a1b62e901","_id":"@atomist/demo-sdm@1.0.1-master.20190112223731","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-+0BO97AQ2yB+mWvZ+a0LaH5R+3oBHZd2o2iBAr+ignLdZuNIjV5QO4d2EJxqSkpjiLshvJXRnkBp0NWFyrou+w==","shasum":"4e5b24140900a78b9d95f31811c8ac6ea233df83","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190112223731.tgz","fileCount":40,"unpackedSize":635343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOm1ECRA9TVsSAnZWagAAbPMQAKBgkcZlTsYnAtpLltjJ\nKHm53InieuVBsSgGtiFXGBf0MMF/GaiKVLtB3eTl0wHJYpc7HT3jyxyHo1aV\n/a3cW+iL1YlTq5YOWLzh5OAgidfF1dac2Um+/L626hUQVCOnGRiy0dkKq2hW\nfW8AwLYwnuqZrt+WG5mAIq/iql94uq2VLVer+6EXZ01f3j9Wz4fIB3PpLwBR\nMXhaDkaxPAZ/IbsHIrKjw2M60Udgn///v4GU7FOX73cRq3GKZkPvNxFqx7Tp\nJl82/7RirBfOQCNivARAAq12fdjkXzk8bZA8yuv1oekA7p3RDfQUIVDgUDF5\nJZ3nxKI5746YQOIhgIghTY76emcnHU9h2sbb2RoeksLtyUoQ1mPJKU48+gs1\nQgecFvgR64TDCpva+1s7HLzqBNDq2ITwT6/Pki2czIumpwp6J8GuTDaEwgBw\n7phQ6JheVnr9ZNj2CRUL9MYds2wahQIrI2OZolbvbLK62o0sTjSSbnV7kNmN\nV54NxwwNw6xehPnpdC+xOA/6X9lwut9/8Fi+e/Hi4vJ79OMbt0mHBKnVzOnL\nRedckDqr0KcrSR+hvqa4h8P+L/VEOhPrVT85l4+JUBQrJHFY3MNkXqnBYhFh\nF9ZDtoyVBm3ZiUnM95JL+Sk7Y4ixc4PD8EeS2Gmnk2fZVsx5e42qoMRPmoM+\ncRLt\r\n=SC8l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWjL45+vqQw73twWveoF0dfo+NMPEjSbmX7ohfQAD36AiAII3tVGeg3PiFoDGA/O1mOvcpxzLhyRENxVgEhyvbxkg=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190112223731_1547332931499_0.06643964858298523"},"_hasShrinkwrap":false},"1.0.1-master.20190112225522":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190112225522","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.3.0-goal-launching.20190112115551","@atomist/sdm-core":"1.3.0-kubectl-removal.20190112224911","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"16b084b86a8f76f681dc55e7c976ede7ffee9bf3","_id":"@atomist/demo-sdm@1.0.1-master.20190112225522","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-IIWbgjDzXT1eTzXCnTG5ooyF5sM8tAVEtp/MSQeD4ShsQ8+4ofkMG1k13XHUKlD/hqGVYNmTBYhNNpJkJqx/6A==","shasum":"9a76c7853c052b31e57fe83961076871a67fdb95","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190112225522.tgz","fileCount":40,"unpackedSize":635343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOnFVCRA9TVsSAnZWagAAxSwP/j63llcP7qgUOdbdeBYi\npQY1mHq7f7ZB0D3APKcNxz5zeUSXMLy0HZ4d0TNMXCTDJla/LN5F9Cbo3ovz\nN+nRzIK81Mm1T6sKlo8j4RjM335eaboDRdfQzcHyVUMeSO1YVlBgRWtxHV0d\nRUIJqlaowOXppC0S7ul9mo0C3YzMjfXa+zXEPKJLXN+nxNdtDKz8xarXIv3q\nMFSKyeQch3htVtpjzw7xhV1rO953D0todbLxidsFPcj5NLlWvF7I51EIhvMe\nCnciyn4bjGGidyOAfllHGEfJEkqWCBUNyzNOVXVqJ+cBA8CrsOk6tOw8A0X2\nfcbZoAaKY8bmFLRvtFD7sFKxg6ryfrjd90xnv7RX3aSYsn0DN2kDyTWUeGNF\nwfIOv7nqR75+YWlTB1/+6q3N6V8QXtsnmaGXi/aY/x1iDX8affnHvLJ67lAh\nMbhGtF41H7sulxAjDNS5wPyVJ/jyOYNdUkiqNaEiU2UVr7FkvgB4K5uK+r6T\ngmtY7LLKQ16nWd+QPlHBakYA5mnd1k61BHnwK0GLX+k/zKA8N03tdIb9WjGQ\nIOPkmnOnfijV55tFeH1O8K1yQUf5Gz6WX/OSlHhxvSjvTyJMT/rznnbznCY6\nnZlHKcGKuOJUJQ/Dea/d6LYmpgNpOYwZGBut5dDcy3IPeAUje0bqs9pxOs8b\nbdTA\r\n=08LB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5Lif9kg30avVru7c+yiX5ueErFtLD9ep+XMrTJ6FGSAiEAkQmyVVKkseaVw2ImdwRzFDRccJHkB/akg1fTPQdGOTo="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190112225522_1547333973172_0.38471191386136816"},"_hasShrinkwrap":false},"1.0.1-master.20190113101627":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190113101627","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.2.1-master.20190110143442","@atomist/sdm":"1.3.0-goal-launching.20190112115551","@atomist/sdm-core":"1.3.0-kubectl-removal.20190113094721","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190111163755","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"9c682c916b5207882e0d3d4a0316e82df4c8e459","_id":"@atomist/demo-sdm@1.0.1-master.20190113101627","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-aBSlIqxisZ+2WwUpm7Uoflw9FzpxCGT03rugw8IAZEy6xB16kL20vLm3IjO36hR3uFbWp0lqbHCO41vYumFU6A==","shasum":"4f4d85f4f3bc3c463c5dfa9f5ea4decb8a9910b8","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190113101627.tgz","fileCount":40,"unpackedSize":635343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOxExCRA9TVsSAnZWagAAqWkP/29Mi0Q8HUjtG/qGMJYu\nCWNBduAGiRHoP+rJQErPSYEIIT006es4ASe4x3fi+WrZmoZojOM4u4gOxHEE\n0Igd0SpIyCdDFd+6CMmBVh4bVpU8wj2NVQeN5uInpRBEJ210VULEv8hqrZfT\nxlgQoD6Y3MLfe1dJtFYPw19fA5MJPfW6VN0FF+5YGJUDpP2TOFH1+HzEl6nn\nru4qtpgJFAkTbw/fZI3GGr/kWJZA6/MIksZdvj1A1jdK4REo3DXSQDNjn2Lq\nQK8XlmffrJW9QU7x5sZvYlNC2gKbqM6MdEr5RdlGaI1E6oBbeq9s/PVGOKIM\nIvf3puXMmhgmDU4OAXTi1Cgwwvel0hGf1MCr8Qlhv5V8a/WQ5omE3LqxFi2M\ndFe5ngf/bz4zIadIQiv+cUHpxL4ai9hzJlIhMlwn3dUGxUkqvE7C0qcxynh9\nLMxE2Av/f03ex6YDiJq+kaGZMR/rtfGk2CfQe3QhFdvWrPdFj4sYyyekGaLU\noyAgWzoFPMfdP4pI/DB4Q7k6uatDcgInuF7LEx0sNnLM90lyActdZh0VbIep\nNSgM7pnwmK/LpwDd2uypyaDXb0I2bWfYYvu6FEiDz4XwGFvxE/Hw3g1BSqrG\nh0XT55kEXV7Uzh1yPdnFTjqyGVhmJM/Yvtj/bWkNaaulveVZ2anNq+FugF95\npVlP\r\n=L7Lb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHPrgYKzleHa9UtTtDu3U2RnSygNy2kzLE5jrlfFRptRAiEA25UHH03bl+JxhA91QEKw7budgwKT5QJveh1aVhfRCAE="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190113101627_1547374897020_0.8691705246858996"},"_hasShrinkwrap":false},"1.0.1-master.20190116162207":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190116162207","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190115210858","@atomist/sdm":"1.3.0-master.20190115223640","@atomist/sdm-core":"1.3.0-master.20190115225713","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190115214918","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"d7ab074fed0812eee30f0edd806c131d8661fdcd","_id":"@atomist/demo-sdm@1.0.1-master.20190116162207","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-foL3s3eZz/iNSFvoRXH6FtRXfXVrtTEjvlb9otomrnJQAtnoNn6qpHITRLFIc7AQMFfJfEluPFTotUCi7VMRSA==","shasum":"ff689fe9d73b3bbd62b95ca7b3928b42a8daea1f","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190116162207.tgz","fileCount":40,"unpackedSize":635729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP1u2CRA9TVsSAnZWagAA8LsP/0fcLNclD5CqIXVkBSdY\nb2sdQ7gNj9mRjMY4zCSU48TOG/2Rv3gmR3WElWIDQoRc54+TE5vPqgvWNPgX\nGwp6RZA86tm3tOYCCN0caTvRkAXWyF5OIoQGEtL3FjSVYd4uyuxt0w6CO1Rm\nV5TF7SlonyOPgzOEpci1m1lm9LBdnQ6GoedheYb4QioZLXGQdb9SczzkqXcB\nd4AkbTF1r2ghqicBBBEtYkwxRrUNbwOhxP4yTBDn/pYphubMmhABpqrbsw7u\n5RT+yHoEzS3vgpnEmi1MELDhbJHGSWrM+uiizB1TEMZuXJHnp5mxIgagNur1\n4fskTl1Eyuwi3hT1yBber12/fK1nF/wycqxrMMltjzvJY0Eyg20fsJQupv4V\nIm/Dm5NgzAmpR0HGd1XG6QEWo8lpk53DPIekulIMKCvizdsD5Z8StOgHGAKq\nLQP1bOTOHKAggVqgAmi8GmkZb3ca7Ly1yj2WeAgIrZypQwBfAYzRNjxbOyWg\nVehWfEAdHuNHveTJBu3tZ3eZ5+bOTzQZo19f2F647r2kj57r1cIWkkwAYSOX\nFdYj91qdUYPefhQ6vD2M88FFEi/K1HOGVRJ2NeDmLEqE2v/r78i1FEkBTQsS\nRrSze1u8jGDAtQhPkX8pdy4aTcyf5K4AatCjc2kGMiI+BOE7kWQfnGK2mvm2\nh8dO\r\n=l7Da\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbDos9cuG+NDVxB5iNKc49051kRuXsOzcyeCPoodpJRgIhAOGBsSuNOs5MuxID1cZTDU+JJ5wBAf9AzRmw+NXBd+eN"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190116162207_1547656117777_0.012749369545027589"},"_hasShrinkwrap":false},"1.0.1-master.20190116164641":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190116164641","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190115210858","@atomist/sdm":"1.3.0-master.20190115223640","@atomist/sdm-core":"1.3.0-master.20190115225713","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190116163937","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"8f118b3f7a6bdc0998b8da945444ba5d90a14bd7","_id":"@atomist/demo-sdm@1.0.1-master.20190116164641","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-pHphisIpW9Pf1o5m0e4lhQXcqq+HZedi90dVycnYuq7aQp+NR4T3y/OY/33IfAtWScuyt3xuBiHD4E73An4DeA==","shasum":"9dcbc70f43713a1152e8db809b509ac14f134d42","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190116164641.tgz","fileCount":40,"unpackedSize":635729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP2E2CRA9TVsSAnZWagAAWnUP/3HYxezBVlIHkYwg85EN\n7yfh5x00c+MyHdHXWyQwcXP6NgH5YXryJ4O3WzqssYhddF5i83lzTTQJYcs/\nCVzGcUDDWXHohg08mZV4bMpBhfRtx5Z+jv96uaCaHu8pgtk1Yc3JY4boqlHw\nOKu+QXTZsIvn7EscYrGsuNPsf9dBVTLPXVqEuH/B1vdJ+VNKwyPv5ir5PzRp\nC/uCwsMHrsK/iKP+E4E4NkqTSWR1TBkXWUVX8dhawQ69PgQQboY/ObHHYSeh\naOAnqnx/BvP9xQrPrcFSXRH/sZDyVLVqHFbaiyuzwpTQRyZOeUxnmqdy1QWG\nBxK0BG8xkUxJEN6cuCRuilzeyBeaiVgMfaAxjZ4w8L76jTr8bzUN92StuEnv\nnUQhxcQgvVm/YHavkufIUK52B68xxpm/5zPBFwJrTyLIjZJK7KMx/84tUdoN\nB/ijxKLDzAouQNbcNPxMY5irdjWGe4lR1HKL7vxppqEvl7i5aP/Dhr3HlLgK\ni/LL1QijHqGH0L6hbtR5OFvTV2A/x66jhbJuAOVQTxLXbJuSWA6oSv3rpejN\ncfL1d7JlfF5/0AnM8oNYZ1zyo8MPt8sCGuO37OHwWcSc7PB+8p7kPbUDNiJB\n6qrsbFjRiUhru7nEhCt7ZEY7YLVs78ewNaFqXmBYfo7r88MycukMRsg1N7uX\nFZpk\r\n=SH1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvg1jiPYrOY4GU3dLXZQ74Is+f9h8dHrH12TTX2yngHAiAJfsLzrvknsl2Z7DQVSacVWzOjAIA2YqblPzF4dyermw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190116164641_1547657526213_0.388760516617503"},"_hasShrinkwrap":false},"1.0.1-master.20190117105421":{"name":"@atomist/demo-sdm","version":"1.0.1-master.20190117105421","description":"an Atomist SDM to deliver automation client projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"keywords":["atomist","automation","github","kubernetes","sdm"],"homepage":"https://github.com/atomist/demo-sdm#readme","bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190115210858","@atomist/sdm":"1.3.0-master.20190115223640","@atomist/sdm-core":"1.3.0-master.20190115225713","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190116163937","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8":"1.0.2-master.20181211175728","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.11.0","typedoc":"^0.13.0","typescript":"^3.1.6"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"# @atomist/demo-sdm\n\nan Atomist demo software delivery machine\n\nInstance of an Atomist Software Delivery Machine that can be used to\nautomate delivery of Atomist automation-client projects, like SDMs.\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the \ncreation and click the button to create a linked channel. \n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`. \n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically. \n\nThis is a build-aware CodeTransform with an auto-merge PR. \n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the \nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app. \n\nDeployment to production can get triggered by starting the `deploy to production` goal. \n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n \n\n## What is a Software Delivery Machine?\n\n> A **software delivery machine** is a development process in a box.\n\nIt automates all steps in the flow from commit to production\n(potentially via staging environments), and many other actions, using\nthe consistent model provided by the Atomist *API for software*.\n\n> Many teams have a blueprint in their mind for how they'd like to\n> deliver software and ease their day to day work, but find it hard to\n> realize. A Software Delivery Machine makes it possible.\n\nThe concept is explained in detail in Rod Johnson's blog [Why you need\na Software Delivery\nMachine](https://the-composition.com/why-you-need-a-software-delivery-machine-85e8399cdfc0). This\n[video](https://vimeo.com/260496136) shows it in action.\n\nPlease see the [Atomist SDM\nlibrary](https://github.com/atomist/sdm) for explanation on\nwhat an SDM can do. The present document describes how to get yours\nrunning.\n\n## Get Started\n\nThis delivery machine feeds on the Atomist API. You'll need to be a\nmember of an Atomist workspace to run it. <!-- TODO: reference auth\nstory --> Create your own by\n[enrolling](https://github.com/atomist/welcome/blob/master/enroll.md)\nat [atomist.com](https://atomist.com/).\n\nThings work best if you install an org webhook, so that Atomist\nreceives events for all your GitHub repos.\n\n## Get your Software Delivery Machine\n\nIf the Atomist bot is in your Slack team, type `@atomist create sdm`\nto have Atomist create a personalized version of this repository for\nyou.\n\nAlternatively, you can fork and clone this repository.\n\n## Running\n\nBelow are instructions for running locally and on Kubernetes.  See\n[integrations](#Integrations) for additional prerequisites according\nto the projects you're building.\n\n### Locally\n\nThis is an Atomist automation client. See [run an automation\nclient](https://github.com/atomist/welcome/blob/master/runClient.md)\nfor instructions on how to set up your environment and run it under\nNode.js.\n\nThe client logs to the console so you can see it go.\n\n### Kubernetes\n\nYou can use the Kubernetes resource files in the [kube\ndirectory][kube] as a starting point for deploying this automation in\nyour Kubernetes cluster.\n\nThis SDM needs write access to jobs and read-access to deployments in\nits namespaces.  It uses the Kubernetes \"in-cluster client\" to\nauthenticate against the Kubernetes API.  Depending on whether your\ncluster is using [role-based access control (RBAC)][rbac] or not, you\nmust deploy slightly differently.  RBAC is a feature of more recent\nversions of Kubernetes, for example it is enabled by default on [GKE\nclusters][gke-rbac] using Kubernetes 1.6 and higher.  If your cluster\nis older or is not using RBAC, the default system account provided to\nall pods should have sufficient permissions to run this SDM.\n\nBefore deploying either with or without RBAC, you will need to create\na namespace for the resources and a secret with the configuration.\nThe only required configuration values are the `teamIds` and `token`.\nThe `teamIds` should be your Atomist team ID(s), which you can get\nfrom the settings page for your Atomist workspace or by sending `team`\nas a message to the Atomist bot, e.g., `@atomist team`, in Slack.  The\n`token` should be a [GitHub personal access token][ghpat] with\n`read:org` and `repo` scopes.\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/namespace.yaml\n$ kubectl create secret --namespace=sdm generic automation \\\n    --from-literal=config='{\"teamIds\":[\"TEAM_ID\"],\"token\":\"TOKEN\"}'\n```\n\nIn the above commands, replace `TEAM_ID` with your Atomist team ID,\nand `TOKEN` with your GitHub token.\n\n[kube]: ./assets/kube/ (Kubernetes Resources)\n[rbac]: https://kubernetes.io/docs/admin/authorization/rbac/ (Kubernetes RBAC)\n[gke-rbac]: https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control (GKE RBAC)\n[ghpat]: https://github.com/settings/tokens (GitHub Personal Access Tokens)\n\n### RBAC\n\nIf your Kubernetes cluster uses RBAC (minikube does), you can deploy with the\nfollowing commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/rbac.yaml\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-rbac.yaml\n```\n\nIf you get the following error when running the first command,\n\n```\nError from server (Forbidden): error when creating \"rbac.yaml\": clusterroles.rbac.authorization.k8s.io \"sdm-role\" is forbidden: attempt to grant extra privileges: [...] user=&{YOUR_USER  [system:authenticated] map[]} ownerrules=[PolicyRule{Resources:[\"selfsubjectaccessreviews\"], APIGroups:[\"authorization.k8s.io\"], Verbs:[\"create\"]} PolicyRule{NonResourceURLs:[\"/api\" \"/api/*\" \"/apis\" \"/apis/*\" \"/healthz\" \"/swagger-2.0.0.pb-v1\" \"/swagger.json\" \"/swaggerapi\" \"/swaggerapi/*\" \"/version\"], Verbs:[\"get\"]}] ruleResolutionErrors=[]\n```\n\nthen your Kubernetes user does not have administrative privileges on\nyour cluster.  You will either need to ask someone who has admin\nprivileges on the cluster to create the RBAC resources or try to\nescalate your privileges with the following command.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user YOUR_USER\n```\n\nIf you are running on GKE, you can supply your user name using the\n`gcloud` utility.\n\n```console\n$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin \\\n    --user $(gcloud config get-value account)\n```\n\nThen run the command to create the `kube/rbac.yaml` resources again.\n\n### Without RBAC\n\nTo deploy on clusters without RBAC, run the following commands\n\n```console\n$ kubectl apply -f https://raw.githubusercontent.com/atomist/atomist-sdm/master/assets/kube/deployment-no-rbac.yaml\n```\n\nIf the logs from the pod have lines indicating a failure to access the\nKubernetes API, then the default service account does not have read\npermissions to pods and you likely need to deploy using RBAC.\n\n## Using the SDM\n\nOnce this SDM is running, here are some things to do:\n\n### Push to an existing repository\n\nIf you have any Java or Node projects in your GitHub org, try linking\none to a Slack channel (`@atomist link repo`), and then push to it.\nYou'll see Atomist react to the push, and the SDM might have some\nGoals it can complete.\n\n### Customize\n\nEvery organization has a different environment and different\nneeds. Your software delivery machine is yours: change the code and do\nwhat helps you.\n\n> Atomist is about developing your development experience by using\n> your coding skills. Change the code, restart, and see your new\n> automations and changed behavior across all your projects, within\n> seconds.\n\n### Kubernetes\n\nThe kubernetesSoftwareDevelopmentMachine included here deploys to your\nKubernetes cluster, using\n[k8-automation](https://github.com/atomist/k8-automation), which you\nmust run in your cluster.  To deploy to Kubernetes using this SDM and\nk8-automation, set the `MACHINE_NAME` environment variable to\n`k8sMachine` before starting the SDM.\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in our community Slack team\nat [atomist-community.slack.com][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist/atomist-sdm/issues\n\n## Development\n\nYou will need to install [node][] to build and test this project.\n\n### Build and Test\n\nCommand | Reason\n------- | ------\n`npm install` | install all the required packages\n`npm run build` | lint, compile, and test\n`npm start` | start the Atomist automation client\n`npm run autostart` | run the client, refreshing when files change\n`npm run lint` | run tslint against the TypeScript\n`npm run compile` | compile all TypeScript into JavaScript\n`npm test` | run tests and ensure everything is working\n`npm run autotest` | run tests continuously\n`npm run clean` | remove stray compiled JavaScript files and build directory\n\n### Release\n\nReleases are handled via the SDM itself.  Just press the release\nbutton in Slack or the Atomist dashboard.\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack team][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"8f118b3f7a6bdc0998b8da945444ba5d90a14bd7","_id":"@atomist/demo-sdm@1.0.1-master.20190117105421","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-yF8kYSsTuFkOEvtaMVmd9hIA6++uFUSd8tn0rrnPjdBOtFNzvrTtY9V2ZVUdmrsO27KPOt7JbNB1H17FILVxbQ==","shasum":"3c877e69d99bbff01594b4e51d6a8c7f4407b5d8","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.1-master.20190117105421.tgz","fileCount":40,"unpackedSize":635729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQF/dCRA9TVsSAnZWagAAJvAP/2h6n/7tP460kHspsXo5\nP9JL4z3++kZEP+orzAO+fLODkoUrDyguAg2Us2i3SXnQ/S3N3KDl4YRR1sqo\nwo2e7Q+KLu5aEi3AOrn5isiirbyBHpIEAqcq8E7RKiASfTugMjLe7M6QVyKm\npYklVVDGBSdXtow+XyGUcXPTh02hXETfCrJI8RsvgV3E/XnjhJyvKwhnX62T\nlwV1y4rFI7s/m+9u5W2TAZkwTa9Y6D5kQpWd35MS5FiTWSvZpz34n91X0W0M\nrTRbUc4Nn1Y5JOyHmHPkpKcnPuGwVpdp3dgQUMbXk+EqNRznTOtZ5uW+1U9f\nFgQRA1VWzZQxaQl88+sAiZlDDT2jeSt4PPHgTEGum4dBnWXsTEcwI3dQgT4N\n2xA7mf74TVpgBO1MGndEItC8oku5SAsVa7QUINxmzqQBRjSBEOzb0wmEdjDy\n3GqY9vvkX3fVQlbi3Lf5XvfEVU+3ozqmkwIilwmf22mNu4NAzUhqhfis9hrR\nwQfOpGhHy9tq2GiZmeh3Hda3/UopNhDGY3fBatTB6sKt/+V3E+zQCJXxqpy4\n1ID8PX+innlbNlUzEExSixmtyLUuwUathWlMfYdiNowiR6W+GZ9sv5V7zL5G\nZETe7S9NjkdRukaPg3o5LtSOJix1mk4Lg+BPl2XD6NL9fMUTwrmlBBN83U1Q\nku9i\r\n=6Psc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF5R7D2g8WjNal2MyXtdSnKeyXGs5aev7cEUU/3b1mrYAiAiK5q30RPYe0m0f1Fi0ILWt7v8BCKXYIGvqK6+khojpA=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.1-master.20190117105421_1547722716883_0.20435105100040052"},"_hasShrinkwrap":false},"1.0.0-master.20190215080022":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215080022","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190211141235","@atomist/sdm":"1.3.0-master.20190214121328","@atomist/sdm-core":"1.3.0-master.20190213143939","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190116163937","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.5","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"fc80bffe4ad9145e2e46abbd93686f23b4f52db8","_id":"@atomist/demo-sdm@1.0.0-master.20190215080022","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-XG+kVQ6RgGyDjP1KwiPiygMsY9/vkIPqZq48q0AXfq9stBb9lhEmA5Z/DSZhx8ghKOROvJ++CMu0emqtlO+cBw==","shasum":"0ed627c4454889bb06d6bb31cf84e8aeb26a353c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215080022.tgz","fileCount":35,"unpackedSize":627948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZsZDCRA9TVsSAnZWagAAYg4QAIEpkEqZVWD6KgHAsbaj\nKBBdFDPJnjGhdIck/wa0N7+sYmmizbWkrA/mJWzMEEUptZy9U7ckIFrMsqg5\nQAO9ikBo/MaxpTxrlEakZMjs5xqdnCnCulF/kDui5y1jnrJQNQ4oLFvEe2pw\nmZgPfZJWBgXzko3xSsN5RNpQ3kkrKUXUaQ3zAfhlgIxl+UW+927DPQPSPT6I\nzs36IW5BijAyitKI5v8B/A80oiqFQUSXDAH7AvzXantp/wXlAM1k/6MN2ME0\nP6EYNBkcfLAcVN8no/ady0vC8pea630jNgEZ+MouecWVQwAhQWrjLFYwFXl2\nkwQdpN7pTO05nSwPJJvVMftiZYTZpddn28soC42ausyyM0Opy7pU6lwLKcDS\nAagqXmHYr+baaokt5H36Wg9v1Vot6TicCNg40DT2/gwbFAZVKX6NrI00H2/B\nPMCuT0SCqXHl+ij+lxYcXtVc0SzlufE1wiyPw/NV/24IZMZauEF3N8MLE68f\nbzbHLVCPdXYYIRh9XcLgC6QC7MTCsUWiIbhpUQFW5ZaxAeIV+4kX9Qe3QVr1\nwvfzziAbylJ9dp0knbNH5ZW41odG5AQdt48ttOVHvY1kNyBDEmrttDF16X5s\n53uSWMxUZPlweZO+0veFsd9mp+UXbKruW3mL1d5dMJDOpH9TkqYJByDpOdmn\nJbRs\r\n=wxn9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC40N/mRQI3n1ETX6jHZzhhMLbtZBHZTtzqV1UizX0N4gIgPkYfvMQP+Zza6RAy5YPu1xBErnTjPG5M6ktun32nS5g="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215080022_1550239298324_0.6891573372577751"},"_hasShrinkwrap":false},"1.0.0-master.20190215083129":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215083129","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190211141235","@atomist/sdm":"1.3.0-master.20190214121328","@atomist/sdm-core":"1.3.0-master.20190213143939","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190116163937","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"de80c58b4a31451b090de2d010b4dad98674eaa7","_id":"@atomist/demo-sdm@1.0.0-master.20190215083129","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-IJFFmNx9c3z1/QS1P3vLVZEx0cVdvPjaoSIUwifpXV4adqSDaFJ1nbzN1SuF/mJ2ESFEDGvP7xGmaJ1v6ltXEQ==","shasum":"d1859ec80d07f65d12fa29fcb7e08cbf314179b7","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215083129.tgz","fileCount":35,"unpackedSize":627948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZs2hCRA9TVsSAnZWagAAuPgP/RBnEsOKma7eNfnhYme+\nLCxn/9bFtick8si3oBxninQzgrlkWatEtfhx02RUrAQ6lNub4Za1S3nT9xg/\nR3fb3cAPKwb//jJrsT2x6smzfwD7za5FjRTJSqvIFDVvd1UuIcwrDtLfTG7t\nTLf37A6LGatfVnvxZu+xv47cp7Si8YUD4O+mP17XjYldalZVFeVucb29GnfF\nkReHSEan6XmjOQXpDnfq88gdEYpOz3ZzoM8N1wHkmcqTC1WHZ5U32/h50cVP\nCIcPfrvzO1Rd0XwRWCh9k4IODl8UpCD+ADq5DKthmYuRqxl+dwE5twmLc1sq\nRZbxurcYvGkhGO8ERfS1kKVlUcqhmUw0yjnsBPqwJOhS8zLmyOpAX+oYipbx\nOBRjJ45oENOFpMKBCYmzxoiXOSRwQD1x88txZ4K9+oF0MpQXDVm+3PouL6db\nRl5nbJLvVrSGwt4dQtb9GG9Lkad4X7fcRul1tBCXTYajNx5H4a+9WlzgGFet\nhT3l+Zr4Tq3XYxH9MjKfwD+T849Td7UoDA8lH7d4H/N/LqlXxfArjuT9AGcQ\nusROv0YN0xO+F2FuroNHEofi0YUfX6U5RCpYXvJM/Zhlf0xhfl0AvTjKiJwa\nfAf11OtKFGx7V+KfJaG8j0ZSJY2vH4omCY8nXN8kglKaWU3WTLI3Pim4FdMP\nEUXq\r\n=hVLq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBo0n/ja/9d905DLPLPkPOZXgkL3CPSOdohLL9iUWIKEAiEAh8aZOb+ubMORyKlouLbjxnisI9jQ5fNlQyLuTORtsLk="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215083129_1550241184482_0.49422217595887874"},"_hasShrinkwrap":false},"1.0.0-master.20190215153851":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215153851","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190211141235","@atomist/sdm":"1.3.0-master.20190214121328","@atomist/sdm-core":"1.3.0-master.20190213143939","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-kaniko.20190116163937","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190111110331","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"caf74ff3a88f201b65f0809fd3aa290f0b095fcc","_id":"@atomist/demo-sdm@1.0.0-master.20190215153851","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-tYtcPGvrD+BguMF1nGLEZWKgBjzYvRWHSFCPZtGbtVzAsDfZVoMQeoGWoahyKzt/ljd8RFLNQxDRBewzVKob2w==","shasum":"75778ab6104e33c5bafe92ef975f2a4144d26145","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215153851.tgz","fileCount":35,"unpackedSize":627948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZt2ZCRA9TVsSAnZWagAALPwQAIYxZVbKFOAsuCUsNiaT\nRI3psbK5l0u94lRzBlWLxGlhOPN9OH63jJNa78eF7Tn3+BhYg/gZrMDL53lB\nuglL5uHJ5Lc/2Imx9ry5YAuM0c78Uygwom014h8/iQ8LSAtUFF76QRJNAIgA\nkF0vhpOUHD7WGLk21ak5/8AYK+q7b/ZFFe4//ExOqaLF38bpTR1ZpCCL4isM\n7ZOwad2SnD8D/IddtqUodeIY+F3wInVza7dJNWo4K8MS+Xjd7aL2VgqS3gZW\nHIB/nIg6lddrg7t1Gg1Km/gHcvijoA3ruZRSejo/LOy03S/eQH14cVT4DLqz\nN8GFmy+3lybAZSVd/dl91f/HOE6TpV4voRCtXvoi3levvS2baVyZ8Wsb1BTs\n+3P3ZqjfKXAIHp7mwA9a4vvyt1FM3R/nRpYuVCTvrEn+1NfcFG582vCQHgaD\n0/Q+uXKaFvL3Mqv7/s+W1R1ab3SKwHV3KLg2/fVqu7c4GZ2Srf/putU8+QZM\nUypT5VrSt3QyPLYhW+3anGDZowE5E/ByyMpgLa4gCgDBmt75QimTW/PfWfmI\n5blf1j+E8RmS8yE6H7uKIisFtjCUVQP+bo0oll8E7OrR71hQMcclx2lnpreJ\nvKr0qXykf5pHyqNsv/+/59p3KaNFArJpKkMxCqT0om7n7Ab3JvNF5U8S2qbD\n4A6x\r\n=T2Zf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFXvDFRerpfq7XGAODBvyBZ6UW8YZ+cYFRHi80KhxMcHAiAJouBuA6+Uw+ufgavdl7L1niEjPtZemtH+FCZrP820gw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215153851_1550245273212_0.12795342680118083"},"_hasShrinkwrap":false},"1.0.0-master.20190215172544":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215172544","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"e40ba7d18c5b618eb91d6d2af14c9fa48afa70b6","_id":"@atomist/demo-sdm@1.0.0-master.20190215172544","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-yv6nCTyXhhogos8+wCAEJ4yZUAOsB52DkhVBc/AOGWaFDowAeAT+lCkHVSAtEZ7MIF33WpQiTbSik/VuJSe25A==","shasum":"65219472e12ee2bb9f44eaf3ff06ff0da7287994","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215172544.tgz","fileCount":35,"unpackedSize":628997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZvacCRA9TVsSAnZWagAAcd4P/Rk/2DyP+sj8LgEzXVjw\nj7POov3Nmh/1BtEHke4Mn371UczsnsuJ7zaGBUeig7ymi8MKnbEQ6kcXktza\n82CwqeA9DtzgguJkC6kXdNWV10k6uLVgtI0Mifc6tEC+Sz+lylhrltoRw9CU\nkSPWh20xXAYt0nIx3I8ffWWSDoiD26yv350XC9b1GjdDR9APmqetgXgAvuv/\ngQqvFMJCWEWchvtvDMEaBoIpdTa0QB5EAuWMVgDP655qiTBNFW0woSaActNo\nHO+yf36hMaXn928H0G0d1PvqsP12HCDJPp6KvPdJkEUMYKaeNDuxcmY0u7ER\npXSyzfFPoxG+JbaFVl4Zd763HIMIz0YZ4pv34vIdXkhGivikEi+EsWaXpB2t\n5ouzzK3fCc16YptjwXz3T8xyL0tNJNuZxwHMDURaWjVY2goESKJXxk/dRy4d\nhKVjkn6QQQ/O9cZwIx0hTamAn9eT+M8ikuLHu3ouyQbqv5Cm4R+jdxFoq9qf\nFROWW8TMhsqPP1pC5W3Yvf764SCmjBfkHuuhLd0e/QNQoKxgoPc0AQtnjTM4\n2r54JTyh960je6K9qhI1p0ZzhJ9hnmvkNeMPZnI214vYdEknVNyuxCBHbU58\n9ea/IoY1yYfl30XeH4bmQt3JORhg4dk9PjL8T8sJohKDkBul43/fnbWI999J\nGvg+\r\n=D8qQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/647d3rU3TS1X5GhVxp+DA5PrBhfl9j/OT0VhQmyMCgIgRvpjzzlPpH0y/AWHlCWxFt+Jz2MVQk2Tlk6lYAH/HqI="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215172544_1550251675984_0.35672430324247406"},"_hasShrinkwrap":false},"1.0.0-master.20190215173823":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215173823","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"b6a419a2d22d3bbf3c61a1a7f139e851e87d6408","_id":"@atomist/demo-sdm@1.0.0-master.20190215173823","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-A9wBhI1zNN5w0QA4T8qmjnsYRxIHjHQoxYdAcFM9t0OuXZXrK46XU+E+y8c6p91OO+s3i4nQLmEKssOCPuWToA==","shasum":"0a11415ffae4d2f199afd354d1667b16b0969527","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215173823.tgz","fileCount":35,"unpackedSize":629043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZvmJCRA9TVsSAnZWagAAya8P/15bmCJiviQXjSSJp32e\nmB89vMdyLod/2/n5dy1Aj/foSLgn/BYhJp88zfEVUourxXj76DZell97GMnd\nUspI2+S0zh7Vq1Ty3JLLVDpDJpNVmQ5X/Uks7lNs79FqzLIDKra1qTt3Hhve\nx4Ds65GV8dO4MsWFJgtXZKK5D5O0MeeSnhw0mWUb3r0/TKlmfntzqJ2tZcAL\nUK6ZFCd8KZrDf38Ri7dOPlfE/HiWBy6D/iWkWEPMbpYt4YfYkR7G1dHlA6GS\nY+ynQ9vG1RsfMBXoCP1Dk/uHE7OVp7v7vyzgUbbFYhhFp2NkZg4f8Ne3zxrO\nThsYSq+8swBsPt/ZfHbAgOsTN+cltk2Zn4t2h9rM3e8t2AirKuITfpPzhP9N\n+tH8NJUf7N6MmN2CZoZ+k28Ld8gjByGWWk6f+OKnUXSp1+a+Amq7v2x21GOD\nHvWItBAHC7JUEyrTfyK2q/U6O84qcgO0dlxLnLtSvgG5vdiDAPe7IX1aDCad\nc96vgYQqXzlZQIvKtSRtN/UJ7AWwDk0o0HWEFYbi7jlTHFk+U43cwC6th0TN\nHS+v6rG8DVthMJ0629sAn/phO03oK3HQuGB6POclku2Qe1vhP0uoSOerIMSz\nt9X43rAgvDpmjigf5ssdN9ndIJfxbj175zUfYTOgFahpaFbxWReTaWuOrkuu\ns2Uq\r\n=wHXW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDavCsBNH/el+lriJ17ZMs41whsJEMA7/tZFnU5SSiNKQIhAPtbzUhofm0FFWokiotnKiGncehqM91K3ySCIaTBdFsg"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215173823_1550252425055_0.21513332726535972"},"_hasShrinkwrap":false},"1.0.0-master.20190215192856":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190215192856","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"0ba86c760bc763eef6cb2185988ab7ad9157d35e","_id":"@atomist/demo-sdm@1.0.0-master.20190215192856","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-NHMup1lHJo95GiiKm349awpjdRgqkbDI6o2fzIb5uA8gE8Gs0T8U1UsiIDV7dIVYJ8Dqf7eE6uL/bnngS3pcjQ==","shasum":"b1df1163dc9aa6e055785e38da506c82b44103d0","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190215192856.tgz","fileCount":35,"unpackedSize":629210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZxN/CRA9TVsSAnZWagAA1JkP/1oIvOVuhxxyg3JRiqEM\nEV8PTx+f04Yarp6q/TVvzNHenYx18J3k6OqQT+vb7Q0Xi7Az1C0iA6R/K9Vj\n0Y5vmRF12kC8me7mkJN0mtIC6bFAsdGEFiskCfk8AiZ2bEoi1yuFgk+7WUHX\nXh3/D3a11n1KO/+PWDW2LOp+wnDyrGdgKdJRaDJNb5aZEY+fY+2YzT0nt716\nNCnRS2YQzrdBeersuOSpGFjeu85Ru2cTmoyYa3Wmuwx8Ylb1HQELZPnDloAr\nLm99d5UeyDpKMv+9s3FP6pQqOI4+Z7KKgUZ8R/fvAbKhADDf6V1w9ukM9F4x\nVTpoaEkNZ4lQLb1wOD6zby51x0a8zk9ECJ2XAi6nLDI9iow6JhvNK8YU29V+\ncDkcg3JqR1k6zrx0k//T+01Yvems9/gDCcAp2kkwyyyoDewSQ5A6GWpdzYtd\ncg2pddhmtSNU2Civ3tHzLyc6WHUzuW/Rp4nDK4dLv6IcTbaB27DL3DeODCxi\nK6chfQF+eWsjoMVw/XhQ9ImKqOn6S7a0PW3SwRFlGd8Fdu7L7TNPLJzthyPW\nZrj//5a1p/ItFiniZa595VWX7ARop4u6Dvv/DijVOqR8UCG1RQB/6QNbzUwx\nWjSughDw4nxdctRywLG16d/ZRBG6DgvzFW6Oo8I010d4Dy/oHAtFp0lFzmy/\nRxT3\r\n=Qmqj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHpS6Z9Brsknd9SfiWOY8AabCuTnmZfPONgNbc+zptxHAiAk1MwnVaUcJS3BIFAd/9pkpx6LHcK9lvan1mSWFkKj/w=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190215192856_1550259070683_0.09430902873379221"},"_hasShrinkwrap":false},"1.0.0-master.20190304143254":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190304143254","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c0fac10211ebefbba265b481a871befb553217a0","_id":"@atomist/demo-sdm@1.0.0-master.20190304143254","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-AguryRYatWW5iC5zyvv7MeogXFzVw4wPqLbXfE/qq9tQpxYgUbzM2VUXvyggs6KCV/yaIGGsaOMmUKNbxDU3dA==","shasum":"4caf0f95e4b9057e0c4e7d190a18cc4da5b33aee","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190304143254.tgz","fileCount":35,"unpackedSize":629700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfTexCRA9TVsSAnZWagAAT8wP/RQBh8+e2DRNb6gI3URx\ntNgs9sRJ79KzSavYubNSuZ6j3kzjBy67GRB/dA98o3s6vO+4uKIzD5/Kg8Xt\ngDGqDYpkjx17sPiO3BxVt8Bzgjsr/N591rqh86CkCwuuhM8yc1Wbs7EerzVv\nmQOuQB+xts36CGePid6KHzHsRc9T6J2wtdgFopMYeE6dW98EvXDumv/ARgK7\nOHcb3urIE0yF4Nzfp4hU2MeY0O+btlKlMjjmelxu1CFhmm4YoFtxYHT2Z5U3\nd32SLPhBOmrnX5K4kT5S6PNNKhXMbDlyyxS83544n8Cl+pMC12e3OddSRu3e\np3fufqYFFbmMlS684O1W1v1rkbOOQtNYEtooO3gGxgwf1AAdufPz65c/G3is\nWb9scmwEIPW6E+dNIA0dst5jDKVKdgRnkJmxL3Mp4j+COQdlRs6bhIu+ma2A\nykhS4nYaQ4qWzJfcGbQkMprnDW08MACUCpzvpctY7kDKVLa0kL7FXAoBBl+Z\nlBHW20Gcb2ICbyncesy6rRAm50yytGzRL8JwZsEMIKvK3PiWzIsMqU/eel0q\nC6S0CuC0Xcf11s7c/u8fBaSTw/L2wWd6Q1uP6sWof2JwKXyMOhDL2CHaLtJ2\n6R29Rgnt/lZV3FxkbtbFrwraxuHdIY0INSgs3if/TBupcDHNtqYnTDciyCHU\nGuRx\r\n=+9u7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICC8KCZEQv/D/Rh7DWU6OrXtguMpVHipdtPMrlq48xCjAiAGezyZ4y70z3M/oF3Vqd4ZUf5NLWME9TSW8dkKy/LeyQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190304143254_1551710128356_0.8276375024558582"},"_hasShrinkwrap":false},"1.0.0-master.20190304153045":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190304153045","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1537f5f224430f9dfe2ae9895ab2e25fd0b3b0b8","_id":"@atomist/demo-sdm@1.0.0-master.20190304153045","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-4iCaIw1UCTQnlaXo3+06tirN65p4z2ykMBtJ9FicNXQ9TYbt/FcUDs40C36iiy4hpUSr0BiQXjWuY1uPjUOvJQ==","shasum":"619c18a5378a1f481e4475ee2da49d657594c357","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190304153045.tgz","fileCount":35,"unpackedSize":630163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfUU8CRA9TVsSAnZWagAAY4AP/jXe04en4bwStyB/VoRN\nuUnzKjOJDQnAW37zr4Lu2+fn0TZa4PqGO3kGeOMkYtT/wGweXKd7nEP5DtJl\nqicpwnQOSep8TnIgevumcVYPsCUIX4sqNFNpKJDfTpkL7zongDo/zpx7ubBs\nbKQLe3J5jkpAAFapL11/hZtFPoPdrpPbIt0C7o+pXPblFGHou7m/5aXlk3GG\ndOWw0QaR/D7og6r72YppOXLxjdxMlWzrExKD+SQMHe4j8B2B7nUMDDnmr+7O\noHrlEQzhoAgss4py1wYXaC0dPdsLSkR1I0qIE7trqPgnocslHsNAweL4w1Ir\nNwh90eQKQ5nEBFBEytGHg3CyEAaEZHTqmpBMMluO139WQPYzPgD3g4u7kZAT\nWEeqI2OtDdOl2biphsUi7stB2ZRnb7FVFI4aGUqdJSrF05c436uTHXJeJE/Z\nw0YLWL/KCyedR4Qjr4K5Pp/AqzJTcX8Ibtq6zwe9+XkWXUhZj0So7ZC8keo7\nLnmh5Omd4dVgBY9xfFJva77vlBL26aWDRaMSJ2m6dzzY7KXjGMKryolUK7LB\n8NvJSxHg6Ur7KA1QGTtD/S2/g/WJLFo9Bm0zvEz2krS6NMBUy0sI+AxkA/if\nUQgPzVByKhjfxnIe17HR8MNMXzUjWoSD+JqdKx1TZnDp/yfpBY/5/hgK0LBj\n9SzX\r\n=udTf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoW6MkW/k3QQ8bYtU742/rt/dqwjJVzY1ChaNRVf06dAiAzdFxr5eOZtlSx9tpnEH1h7LmXHlLoBhAhpUgbaeY5Nw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190304153045_1551713595813_0.6313098740447969"},"_hasShrinkwrap":false},"1.0.0-master.20190304212614":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190304212614","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.3.0-master.20190215144219","@atomist/sdm":"1.3.0-master.20190215112213","@atomist/sdm-core":"1.3.0-master.20190214192447","@atomist/sdm-pack-analysis":"0.1.0-master.20190213071419","@atomist/sdm-pack-build":"1.0.4-master.20190110123121","@atomist/sdm-pack-docker":"1.1.0-master.20190213113315","@atomist/sdm-pack-issue":"1.1.1-master.20190108144409","@atomist/sdm-pack-k8s":"1.3.5","@atomist/sdm-pack-spring":"1.1.1-master.20190215171558","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.4-master.20181211132012","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"98b0330ca5b4c03e6c7238b8c4ae96a82dc66618","_id":"@atomist/demo-sdm@1.0.0-master.20190304212614","_npmVersion":"6.5.0-next.0","_nodeVersion":"11.6.0","_npmUser":{"name":"atomist","email":"npm@atomist.com"},"dist":{"integrity":"sha512-icRSliOeJOHrtDGFfxhzcFmZTvoXo4GlkYPoPi36anGT/3etWF1fh3Lui7Q2rj71bGoglg3SiD4OgtrOL6vZDQ==","shasum":"eba303f483ce76339711d485eddd30ec0df77ec1","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190304212614.tgz","fileCount":35,"unpackedSize":630270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfZiUCRA9TVsSAnZWagAAPukP/RW/21KIVm/aF7xvIyio\nO1holaj2DsoHnK383PmZ8k/307cB5aF3MiBlhOHnsXJ1yDi7DGMPqvK9DXpQ\n9q80Vzi7mYXgryeyu0e8eHv5s+35nTiomJWakSU4oJVGewbCcIBVKb9fvmyU\nVB/MxReELMfAu75+yVXBkp8Fza8yPJMq7PChqAnSl/IciCjV45cSiswcxYKn\nAk/xk36TrbO9J6kkgA6A6S7Wib8FIaxgwDFng9m8m+oI+rez0ZIxA2zshNSo\n39VzNqcq2JSjUTzHjx7284UCpy0QHUHnY1Omk4Xl+5f+TZakyx4Ltl6qJRbd\nRTJmqo6IE1sPcNK/HIBfwshV+7SaWJaHh2UGeM4ZTNf/YlJ1h2NKoaGAun9v\nNK+zfqZbNvGh7FAqAPxhB3VTWRmNdKhaulioO/xHoRLWd4kcD7pBFJWxxa8G\nivpoCE1a4mF7BXP435V5N6Fpzp78pzaSInSNUvs7KuHjcd9MuCVrDZYeBJfN\n5CrlTESxLYGWw2uAR54aqFVJS+/730qrW0d/ut0fPMrvQNUM+stD5EbrTVsT\nHFXW1LyBUMEZEjljndPlPlIziuMO/K4VaQN4Ln9jXdLm5iLpTZBvBwgIc38B\nt+lwAdBlB45LW5f2gY7On4JVdX9mtxGgJ0SliQhPJFM7r8zNN7Mk4iV/pune\nnIvX\r\n=D9jM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1ERC9s+Qa2tBs5hF7uNZw/W9LE4eOsCpKJarfEEKIsAIgBLc2wwh1YlLwyIDzKuoD+EzncOz99fg2YLd0TDZjNRs="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190304212614_1551734931923_0.5563475338656596"},"_hasShrinkwrap":false},"1.0.0-atomist-update-latest-20190324164250.20190324164414":{"name":"@atomist/demo-sdm","version":"1.0.0-atomist-update-latest-20190324164250.20190324164414","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.3.0","@atomist/sdm":"^1.3.0","@atomist/sdm-core":"^1.3.0","@atomist/sdm-pack-analysis":"^0.1.0","@atomist/sdm-pack-build":"^1.0.4","@atomist/sdm-pack-docker":"^1.1.0","@atomist/sdm-pack-issue":"^1.1.0","@atomist/sdm-pack-k8s":"^1.4.1","@atomist/sdm-pack-spring":"^1.1.1","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.5","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"0a3dc240937e7ddaa6f61ce2cb47cc603a5c6e1f","_id":"@atomist/demo-sdm@1.0.0-atomist-update-latest-20190324164250.20190324164414","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-swqb9cd/NIgcs8XmhVaaeJRHqquCuvu0te9vwXudaGVwUUM4NeSVt28Naz0Ph9/4PXZbua8AKMXv+9QMTVOnCg==","shasum":"a440a768f812b2f56696674032eb1dc8ee362dee","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-atomist-update-latest-20190324164250.20190324164414.tgz","fileCount":32,"unpackedSize":244812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcl7RRCRA9TVsSAnZWagAAL9gQAJ/RFQJPCcd+6hm5eLU8\ns6KXM8qrWqXUZ4ovJmKLqA01OG2jclepdwd+yrGc7hTG6Onv8QrTj64Fj4ZX\ncl1AHhYun29oSdzOdtPdEw9fxGLfSCasfqUrT+ROzO+DoL5dVd3YkAU+rPWZ\nqNXlsfWBXQQdtpRzA8aeB947sEz4DRajiOOt1fX+I980A++pYoPNMvmszQC6\ne+x5SLxTUwC2pBetBwTUBweF0g9LLucAReOmzWcptDqq+0fDsmOf3FKVVOZQ\nCiyiTOyg6QNKhT6P5mi6x8LCn9ynx6ugg1jsvNV3lfDzeM0vC8koKTTw8+v0\nAd61aPsbCE7PenSjMGatLR2jDqVgA9rfqfz7jMUnA+dNjSzgRbRoqkmvmfz7\nlCoTdor1VFOzZDkKoSm5xDzyTnBcQzoVtE4WoSwLKuWsA2cuOt32f58DqE6E\nMwpTQABMN9ZpoEZjKFSK6DdxynrmgVwFHcR9VapjIbRGVT0/ja8g0Tsfwkc1\nhP+Gd7NI5bURJ4e+pMUK9yX38JSe27aR59ViwydDr6Jx/rxtZSFiPkbGA06e\nwsILfAJnv30GzSeERsHbm1CqPlQnq7vrFOYMmjswm0scQS5U7DmDAUD4CHoe\na15BKnh/y5PDEm1J6odK70Od8tN7AwpSm2z4cJHT3txdkjrAXo1+S5XHUjiC\nU28N\r\n=DxYW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBjqWGmERBADfvEqCw5VVZU8Wx7JjcrcGeedXSy0v7egAiB+qEIBCyqZi5s5liaIVZ221FgqnlZhutz2+CCtC41ShA=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-atomist-update-latest-20190324164250.20190324164414_1553445968351_0.11594218440655868"},"_hasShrinkwrap":false},"1.0.0-master.20190324165204":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190324165204","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.3.0","@atomist/sdm":"^1.3.0","@atomist/sdm-core":"^1.3.0","@atomist/sdm-pack-analysis":"^0.1.0","@atomist/sdm-pack-build":"^1.0.4","@atomist/sdm-pack-docker":"^1.1.0","@atomist/sdm-pack-issue":"^1.1.0","@atomist/sdm-pack-k8s":"^1.4.1","@atomist/sdm-pack-spring":"^1.1.1","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.5","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"e37c9561039ff1a0d030218e14d295ab4b85adb4","_id":"@atomist/demo-sdm@1.0.0-master.20190324165204","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-3fuUFoanBXrSK0KvVsWlHqBrl5uMyknteE1sA95dNQDKH5Eq7a+J4y5zJ1Vn+MddSXbD4ViIoKtWHhsGlCrcWA==","shasum":"af4851e3c6ac331b9eacaa800649aa72c452910f","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190324165204.tgz","fileCount":32,"unpackedSize":258009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcl7Y1CRA9TVsSAnZWagAADrgP/1RHfFTHDztSg4rkfybx\nCYmJZ5HnJSwTWnSc2Xii6MKSdLv9UWoS/wSqwYt4Akq4kLlEnfJvZNN0a320\nn+2LlM5M06HE5y91vXJCv92LawMkbZL2E7fYjbR3dyjksARzqwN55jnrPPH2\n/DT166jNQui9hemfdbTWJc+s1uNF/3tjWNSORQeHQ699Vk0eQiVVlq0Qvqgn\nA5qv4+suiYkxOxhDoL13mZGujXtA1Rv/jAVfVg0wKJ38oqOxQq7nOExg2sIq\n6NlmBKwVNg5uhzIi7EVhDoeXvOJmLyn7VBKejVsfeheYvdcv1DM8jM3svuQN\nIJXh4mlccCk9Tv7ec7viOZGbQ6OobSZKPz9ZkSfCvl+vwOilSkxT0mF85BXv\n9mvX3eefXBUC4JY5HHaevod2ETaoQMl9lm4bqmil0hfakwjzDon+r5gN+toC\nXoE7MFpXAevTzkqANv/iQUuWlKZxuGibxpJdSAhUfuIz/MMa26bR3eKosHpk\nCVS/8/MqzLqIuN1n+Y4WVM/HNgaZCRv6zh5nQY+E22ztpS5sJC3Vy+bvzKsr\nG18oxnhJuVSyByfmBecpb0qRhGzRr7+jBAg3L0MXV9+wjcFffTjNu6e/6TZ2\nYpVjbbDiu+WAVZyO1C7vKauVlRCsStflm4TfrympZobq2goSjZShhf0F6rRK\nnLNm\r\n=c2Me\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqWBh+UXzXmFr5Nq2+gNHO7DLE0ObvjThsGaNHywKNgwIgNnxKInM+YMXfaKD2Wssqtc8Dup8T/7IHqdRexiZE1E8="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190324165204_1553446452548_0.3500535350714591"},"_hasShrinkwrap":false},"1.0.0-master.20190324174350":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190324174350","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.3.0","@atomist/sdm":"^1.3.0","@atomist/sdm-core":"^1.3.0","@atomist/sdm-pack-analysis":"^0.1.0","@atomist/sdm-pack-build":"^1.0.4","@atomist/sdm-pack-docker":"^1.1.0","@atomist/sdm-pack-issue":"^1.1.0","@atomist/sdm-pack-k8s":"^1.4.1","@atomist/sdm-pack-spring":"^1.1.1","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.5","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ef65f1502cc75d25021cb6ca92c7bb0d308a23dc","_id":"@atomist/demo-sdm@1.0.0-master.20190324174350","_nodeVersion":"11.12.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-POXv7qsL07FZgHkuIvDWfuGf5kRBHCnxhEXuIbLdPYttrANBglbOablqHvN5FZVfTBw2XzN8ENc0Q4gVDmJiGA==","shasum":"68db6fb004f845e82c44a421fc3cbd54c59c7d1c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190324174350.tgz","fileCount":32,"unpackedSize":257969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcl8KJCRA9TVsSAnZWagAAcvUQAIRyc1MFyUHBKggbyUBW\nPDbgpSWhyj/la8nGT/2zYvdFILWA4FNWIFEjWXSo0zm5vKqVlKf2US6aIaeb\niFe3P9rBxlwQZ+xAHxpVcM7lpMRdU8iT4wzUVgcKujiBpv6OBBQy3qaqtkXs\n1lvN5tgBu4vqvVCKQYIiUpzIB+ik4IHOu+Bos97pI9IjWwpk+bpnGJtV9VoH\nB+MmaQeVqZlDl51N9JcpDBzTgK8evh5+sOs4UsbQ0OhGs9eNMCeIb9gJ+IXj\nWE/wOkDQrpP2x/efDaFq6nv4xOFWsMuhhmK/+hDJ9Z1AKXnMMmPr0a9GCyqS\neiGgZKypjvbOMSTX53vANKp+4qXa3gvhebcMBylwgbumVsbNNVqr48jx0aZU\naal5Cx4VaZun+SkIy+fUqoG3TsK0u5sOSe0D+bq48qI3hgaKwcQBisJDjhZM\nSnqg5BeQmdiUzTDB1bZN9w6Ym0AfUkc9UTQnyQZ/OMjXvXwzsP5Ez72F0xp4\nQ1/IKwbU+eSmcHzH+jNSXXStNLUVpJM+Usj1Yt4uo6zoB2p8Tt/UmYbmXFri\nLKoEEAEaSNmBtHyHXAoKc11P8+eQQZDtVituFxVEwbIye8fQrcAp+chTjUjZ\njeqjM62JQU2EK01iIMzSvMBtXnZgd0ZEy00F+MSfQT4TdMvB2cYFE3zequPS\np1uZ\r\n=tjg6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeHVHbs4HlnXaxjgfsLjX7djPgCWK60idDEidi5DYIMgIhAOZlFRa0PH3T8Q5PlwvctT0EOp7PC9u0JEfvwojzVTE+"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190324174350_1553449609296_0.8846214387552915"},"_hasShrinkwrap":false},"1.0.0-master.20190501095939":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190501095939","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.4.1-master.20190430085123","@atomist/sdm":"1.5.0-master.20190430120612","@atomist/sdm-core":"1.5.0-master.20190429220018","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"1.4.3-master.20190418162856","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.7-master.20190429204230","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1d0f47803e395ef04e3dd061cf19c4ef92b1e530","_id":"@atomist/demo-sdm@1.0.0-master.20190501095939","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-xln76gH6WVuhJFaJfCYN42dSRord7/Bri0ILT/LHhvR/9ns8b53p0AtTfpUpF6QSsJyyIueFGXcVJz5nz6DGdg==","shasum":"52b0d198cab5c64346361a7fbd53d83518c7b55c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190501095939.tgz","fileCount":32,"unpackedSize":229356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyW6CCRA9TVsSAnZWagAA9ZkP/0TzxMi7TcbduOGXwZ/R\n/3pLmHq84euZZg50Yslw3VOikgq2hBaW7OJuY9gtlv5nSntWkwmvpGJ0YLC/\nVGxdPpdoEDrXr5yjKdcvrdJYHI7EGh7kRZYxZzJw7LkFHOakhRRHmMN/OHJC\nb7qLcQ5aeasbWbIEZ1cp7HNUS2FCA9Qwr/6M1Tzk4IrLu5pS/EbdzbC54eqF\nKkNSRhEWnpDZLhOgs4tCVagqD964vjIyrMllEg+pl+Y9gaQSN9b8UoDmpgxq\nem+Z3OFOddYXjgfwSdoesFTtuNPxA/O+iDs6FZZ3GyTLsnW3PQRVAuCmkkLL\nUOWk9H8DLmbzmooT40J+wG17ZNBTd/g7Rd9SuzXBcyGmevhuPEZOV/ZSJmEN\nwI04Xyrme43l7nLgD9B8JLsck0fcu4wJdaF+H3RBdXJ/zVKlVoTUYbPNvxBz\nVXlJOYd+s8ZEq6jZW4MCpcpCTj9eOHpDWqn6lGsKgZGkhRuxZhh9m2y4Vnze\naZtWMCNHjPr9vE654grwFPKN0X5zorKEniO3ekHsqUG5oqOzfOszk8msLzVZ\nOMuuSGviFxmuUH6CHM/2cUS0s8cmy+fu4150MhzrD+hoCkesb7F6ZO9Eabcc\nMcgRF/QIi3Oej51uhl0b1xjhrhQ2IvEBvf7ewjyDJTvXr1JskSHMF0te6l5S\n7aHb\r\n=wEIb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSvD5OvF/sNYLAmcj+FkuvNdHd98EzvWcjdoHcX0KRJwIgHc6hlSeUBhT80GcZ5PSGIhXTwViVqqE6EPnpA9AW+bw="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190501095939_1556704897356_0.7142619542087669"},"_hasShrinkwrap":false},"1.0.0-master.20190501101337":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190501101337","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.4.1-master.20190430085123","@atomist/sdm":"1.5.0-master.20190430120612","@atomist/sdm-core":"1.5.0-master.20190429220018","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"1.4.3-master.20190418162856","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.7-master.20190429204230","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"18405fdf2563dd94446f438709be69f5cade0f44","_id":"@atomist/demo-sdm@1.0.0-master.20190501101337","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-n3NcsURGcAc1VS5rIqBeJ7VwSIdRddNgKoGZ8ZPg1rhHQA4RFhfI7bSRltQYns3lckjxPa4rvQBLQy1vPkFpuQ==","shasum":"fa60e64d215404d7a39c7b5b57256fc2977e18a8","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190501101337.tgz","fileCount":32,"unpackedSize":229353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyXG7CRA9TVsSAnZWagAA+aMP/RiNgGkBujVjjz3TVMQj\nqeV92l9UXgc9YJ/ckhuln/3rXvNJFmOjOaHM/kGOairzPWqEHkVmsad8V6jT\n5YqxkXPufclnx50FGqmVqbFd8RasnhzpzyH3gxKKKpXkYFMB9PQ9ZcmSO9V3\nRkjKrMtj+nottIlfa00BgpYUu93AoGmEkGmKiNirAwTU35b1EMS8SBM71klq\n9ibBPX5TOtkvrPSFvZdf2aP6Zqzwqqe8Cl+5fDtf2//i3Uuws5racAoD+Y1j\n0mcxAjFAovYbLKVb/Kqw3ozYTzt+C50bACZFlxMoOPt7QQKnmmaz90EQEz5T\nwd/hzG4Mpsvh4Ar7mNlcQI75pHEZBBQt3QR5T7SOd96W5JBvBRthgl8ni8Ff\ndsLd7etF1M2SovbKt4w6vMyX8N+wAHHDB2JxFQFjadWZLzLmnSQToSs47HKs\nkwyTtajzi8EBLIV3BAgjOKS7R/1Md1psD8XxZ4fc8iAZ00oqHQqxGB8TI3WA\nMENcKlOj+IjTI7yBkMKUi5la2ERjIG695gNww0Y4X5IcQQKNMFLBO+1rsSpP\nlT105G9mV2l6CczFrUEdyGtjgNzp7HGLngzt0Bdlogv+1L92iLTftcWIaWaf\nuaPj7hCHLcyUUYonGWIQRcIfhfooZ5EiJeunyVxN93haMVTHOBn3EK0BXJvP\niKq/\r\n=vXZB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCymbh8Ufm01PtWjZ5+XKi1AVOQ5I22mU9kCUTdE+c0/AIhAJviNpqaNDXAGdVNoattIKeDpcQtwq1vVEX/d3o9MhlL"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190501101337_1556705722659_0.5475691464480932"},"_hasShrinkwrap":false},"1.0.0-master.20190501102722":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190501102722","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.4.1-master.20190430085123","@atomist/sdm":"1.5.0-master.20190430120612","@atomist/sdm-core":"1.5.0-master.20190429220018","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"1.4.3-master.20190418162856","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.7-master.20190429204230","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"79a853dddaf4fe23b36d4fd334bb5d7c508a01b2","_id":"@atomist/demo-sdm@1.0.0-master.20190501102722","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-VtGFUG53nISuEmnmHEaJ+QV1lOh7tv6LSVvoycRrU6d5UTYq7kzpcYjd0/FL0dRA+0J/4Zz54xo/m5I847mQ0A==","shasum":"063c3b99fe97533bc25a549462d67f549b022644","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190501102722.tgz","fileCount":32,"unpackedSize":229265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyXTdCRA9TVsSAnZWagAAetcP/iBVPxzcAxm1IQ/hcPmG\nDpmdze+DqVHMIA/5nOe9fTV8rnQNBpCxFb5zZXQ+TkDAq7iXwbaTdxNj9AQe\nZ5vBwH2MY0PJKwVXmvT4J/l8kMG+4ap7FRHdvUAmk/8JttI+/jPuiabX3Zjs\nfFxAxBU1YcoRy5I9szEz6BNg9HPyV37jvTosAmEuYADqHvPik8tPhSloZb3a\nSXmpmyT6SY0qQQqextZUauweXWhdxpJ9bK3HYmg1fYKj7QUuoKzxERVPd2w2\nX9DolmZ/Aa0Z/+70wIxaXvijuyUeGSA7HvEWB4Wes6F3vGtmEOerdUgsGjmE\nluQA6GETbR2a5dxU2JmabS14PehJOxfQtyZEB4dqrgQ7IcLIvupF8m9rz+X1\nRG5S7pBR8aowHqReXFdEq4DLyoEh1l6CaSd8YDT7vom3pUSrnpn0gEHwpFU8\n+EZloYm5FH18XHuhkbKyqyU34LehoEnC2eXSA5Q26gV9XR7t1AZMXIWUoGS9\nunzJL2kChH/vwNNetuxd/7rcaOtKZZzJMxnCWCxIFoGZJUtDtbN7XB8mmweZ\nz5VWOg1qSinfopfnNsXwMB6t0uB/nd4r6ipLmX9sp3Svc7DGppw43vblTVKR\nzqApmKuzuEsAr/rKUv/f8lSr3cfbdEnZnuOE7xdWXsTrpwn35mlVXu+FKu2W\ncpNg\r\n=w4qR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2i3UMvCuOoagOyhgFUifT7ErUltKnlBzR722dM8xlrAIhAPTXnyE5yqe6tqLC0CmIVgB77Y/QlUspoC683zKgJoSd"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190501102722_1556706524506_0.8702874857982887"},"_hasShrinkwrap":false},"1.0.0-master.20190501103024":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190501103024","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.4.1-master.20190430085123","@atomist/sdm":"1.5.0-master.20190430120612","@atomist/sdm-core":"1.5.0-master.20190429220018","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"1.4.3-master.20190418162856","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"1.0.7-master.20190429204230","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.0","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"7.0.1","tslint":"^5.12.1","typedoc":"^0.14.2","typescript":"^3.3.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"9753757b95f806cee7ddd51bf53d08a81bc7905a","_id":"@atomist/demo-sdm@1.0.0-master.20190501103024","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-bm+0PgISly6N0qLE9xWQ3U+7XYhYQcmNFxV69zGfPKzTjnHV6fLDNCdc76K5Co2eecmJFz47bWOWS4ZMT1/G1Q==","shasum":"a51df687c9892440b1760735f9b839d42aa68f19","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190501103024.tgz","fileCount":32,"unpackedSize":229361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyXWTCRA9TVsSAnZWagAAmKkQAIe05B/HO1uAjg67YA2g\nejMHwvAS9Sxhv9zFSuAEl87STTOLA4OVFXLmZxy44PoaKU38xPxvFY0AOZk0\nxXEr2c9FFocyqnJFxZx61ANSm7LTbfnql1497MSI4SHlM+KN88+iSj5Zfq4r\nw9gV4hbvgqdKZKaSant442BFVlQ7cLea68bruNmJ+595cREEk3GKTddtwttx\nRZIdo9AszeUXvKaDGPpfwepHffyl+/t7PIUqgM6jB4eP+J9QhC3YZWmM9AeT\nx5pUNNLWIFq7y5ZPaB0APBSuZUyHPlzj1Esel19hJn8vl6D9xZ+Wj+t4cBir\nY7vl8TwsOm3DRKgvp17Zhb2fC1KwCaI+k4ibeKsGX/hYE+8Y8ygPTpiUz39e\n77xXOp2MCNqdI2WzKZoeHtge1289T/fxmYogX3r8TPcy72oUj34bVyM/rtdR\nmK+cfr7ga2U4k+I/MfUSK1PnsBO17sldkeVxjUBMvnosb38Hk83sIi/ZNQ0H\nzNIcRFwbS0IJjiBPg+9XzyBej90Mlroyc7O6ZBkj09AaR64hCAwBhgE01wLi\neFhBTbi15yqfx+S/F1J/zIdBbh9cnDKx/oTLnR74pj3du4CXYOM/oquLv33o\nKkkx5yJVGkuEPgSWEacDqMRj8jZJqDwP3vG52ZJZHn2DltOlSIcBFlhj/YR5\n7pMY\r\n=1xnb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGQEDPxM0gXZC85IGdZz++TlXZXBaly7lGlNjsmy0NUAiEAwuv9nQLGfqPllnjpkiyFUl5kaZVQQX9pC6RqIMekbEU="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190501103024_1556706707029_0.45849437448492525"},"_hasShrinkwrap":false},"1.0.0-master.20190624165206":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190624165206","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/dateformat":"^1.0.1","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","dateformat":"^3.0.3","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3ff4a517a9c039eb8fcd9a99df483eed04b00c92","_id":"@atomist/demo-sdm@1.0.0-master.20190624165206","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-oNa7dv3y9wgFqoiO+W0TB7vmaJVHZ/bS8NrXh6tGPVCdZrr4DLwlOWacRkR0Upq4knmbSlfgYTmgDAgSJzfo6A==","shasum":"af7515469b05f67c73475e089cf9517595773b9d","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190624165206.tgz","fileCount":33,"unpackedSize":226308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEQAxCRA9TVsSAnZWagAARZQP/iWrurODozYJQzgf+TKa\no2LHxmlq3hiWj5WuWJpoAyIrIzqE9NNUTbwBQiAeEr2fNUhMrHtD8ytax7Et\n0A3nxw0xSyBhAcsMKJ+OVtUJxfeJsjUGXFNzgV1J+Y7Yt9P1gfs53zwms9K9\n6VV/Lm6hCof+HlokuM9xHCtT7lSXoFb3K2faTcEzYQ5nkA4sFiaExla8TJHI\nwkjoQJaPRunTq4Q7fUUZIGrB5BofXSKBL1mZiZi56d8L3ZZBNVX+q+NT5Tec\nwPFJEu8cH0TX1RysmgjHXiNsOU3nyadXG3iliRgFjt85H9YFV76ka7OH3Vpv\nYb2GGKlBk9X5/USq4I+4m378blwL8vEO2IbOPpw3zgW8EeBcvCpYs5ZcdUVq\n8QgYU5K5CGXy27YMXFoancv5l4Fei7K+Btm3hwkRTHvgtxYEdEZfUOmWzR0U\nQfQQsGAHkwSqamU479Kma8Oy94OL/tyhXle+z+8S8YzgyrAWUjsshpn1OjoV\n9iIXvDIXAgN4ox/2+HRp6/yY3YA4jtouGy94LngqRSfolJhzhXewX/VZCAmC\nF4V83jqZ6pf9DCCWAO0FyH/MdbVuBZQh9CuymRHM4fH2DdQRakjT7nCXT6Pn\nkB2oC3hn3SvGzoZQ60W5FQPG1D8/uLfhy42+qJaJliOGH5VpLEHn4OkCJTXL\nzipI\r\n=ukay\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu08GRAZ3VH0EjF1yyyDW4ns7oiCT6fHJmT9S3jlUiKQIgCROcTMXMBFqT4WEvfbg5a4YjrEOMZxkovo95SetypqY="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190624165206_1561395249016_0.6651944644940151"},"_hasShrinkwrap":false},"1.0.0-config-data.20190625175449":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data.20190625175449","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"799954deab9185ea3f1ad067b8564c88d40bc2dd","_id":"@atomist/demo-sdm@1.0.0-config-data.20190625175449","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-0jLV45RT2NBbXvc2fXkxnptJhuSzmu67+8154kzvUcen3yebgRykpq9ZKaIZpNXijgM9zvLDMp0pQvJGCywoLQ==","shasum":"fc76875d9d2cc9cd3185db27049e76dd48cb4f9d","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data.20190625175449.tgz","fileCount":33,"unpackedSize":221487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEmCICRA9TVsSAnZWagAAXX8P/iGmmCyGolnjs2cy1Hhf\nA0ICA6Jhufc42G6Fpk3rsTdi85ercEljmzGL6SghuYiuQaK+ychq026KbUt1\nckkEeeZ++THrqU8Elqvk+51GlWA8s2L5YTGmlR/Z9QcnL3GIdDBcCxqfRQFA\n5F8ss5+gAQoYDaqMzxh+I4HIxkrf7v85MoRXry7C8vO6cDnkkRC5EBngG+jI\n9h+jNxnUjNEsXySmXExKnWpSfVxG9vNPuXWsRy4r/GL7eqYgKO4WxUqxrsek\nOdmoLs8u6RKRJLhr0qZN0X+gru37/+aV73dg0z5NhyjrTwukRHJBbBEJFE4l\nQPVKF5UjKjV/oStAVDpmVxxxvOiXghoOeemHAfry5UD2gV9yeo1/hJexdJSL\n4U7T0dV1pvjIK5IgVV9XetD+FAcgEI60BX86smCs2KIZwTKKbPeGq4rJFpdj\nctc359Ao+Mybr99iHup2hI9cQ+0kxkvfqlGUOYCHbRwro4KhxOZ/eDfH3JJU\nw0PJzkgJGXL4AzNEuZHI68cwiT/hbVIq8cUzcdklCaA2vHcqBjyTCVF+hnjp\n2LZg8koDJ82vbsPrBy0IrqhROwfi8eI+q4HHkbmmpyYQC3ijQ8p4UQwQih+7\nunPER0UrZK5AeJQNJ2BZjuxizpF8RbWbKy2pqM8mAdHrs9bViVKBWN62Vi3N\n//6t\r\n=uykJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKvelt5F75vNzkIfC9ch+lSYoUxEAVK1YzH0ArR/zouwIhAJwAB8ogGym3vXd3g1CvXiT95G7MS0wVHlLWqTyBIf4E"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data.20190625175449_1561485447542_0.8849874835761109"},"_hasShrinkwrap":false},"1.0.0-config-data.20190625180548":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data.20190625180548","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"cf6d07e07c786ccc32582131f54bdd90d91ed439","_id":"@atomist/demo-sdm@1.0.0-config-data.20190625180548","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-SxSoQi3yqF/Y9u8cg01KKKAE3WSgwlN3TtPmK3/5Mo1XLRoFiQFiVPytn1NfF2yaVBT1xJ4FszqUNw+hYPVbhg==","shasum":"1e1149bf610c15948a91f3e0effce89949c4fb09","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data.20190625180548.tgz","fileCount":33,"unpackedSize":221487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEmL/CRA9TVsSAnZWagAAP8wP/2lSJllCqH+nhQ/sz7Gf\nnde3AZynAp8Fn3rrWtTDiH/iNfn9dPxwVXrhl2zgtI2iPDoC4zhf3VLP3nJh\noqAqKwJjQkIz/NbG/G1ALYmruZZjjYg26TBd9wSrniVqsLypK77oYHueZOjm\nAe7Bc50IT2eSXC6QP+GMWxJEnV2kUNn68fR1iU/vknxqMuZ2KEvghYNhB+W+\nFQwhcnztzdaBt1cvxjSVhJOExhPVArONRqsjcnTLvjhXG462GoKMpkv46pdg\nfdCc9B5A4ZgZSZVmNvEWD4FnjvDRsdJ7Y1oozu86cyBbhktcJptq5dNHproI\nD/XDudeN59nSbHaj6+Q+RlbRlAFNLlYobmEMJCC6PoYzgXyYXQA1P7Fyuj29\n3LwuXEm/VdcUxpfRFAq7JpBmU7zV4YGOxwhGua+z4fTWDqMRQE2ra+Lf5oJN\ni3SsvZgBmSc0eHV0FG4lPGok42vla37uvR94HXrO3wwucCyfH6I4eHeLPuzc\nMQbQelISYDs1tyhp6NH4QLAy062A5flf9UDax499gfAXJXn0EMq++pxxLux9\ncPrjrBawyEyG1KBxrwqrW1X3UBqlXPYhBOQsMmA8GNQGMhJ5rwh9CP4QtJq5\npSijZG7AXA1NJ1w//vrhj7NLa6ki4KBjrPZywihxkZhr81B8VAivOGp9OGXz\nUluR\r\n=54Oq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMo4x51Fhhlzon6jnNuCreVTORgFfucjxm4Lb/VzTbzwIgJZ/4cveOaapCmYsyrvnXYzoPM2I5dDpuyH6IHpx+uwI="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data.20190625180548_1561486078996_0.629983556701688"},"_hasShrinkwrap":false},"1.0.0-config-data.20190625182654":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data.20190625182654","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3c4e254eec2f56c10d62d47a83126a9f59a91e9a","_id":"@atomist/demo-sdm@1.0.0-config-data.20190625182654","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-nCzOpL2nd7IBDX8JiwRbvE85hxbO6P7jUlzx2IPevvQs02lfKjWuHjFeYvvZTK47GRRgZfk6Kfsl6HebNWzOpw==","shasum":"2f01f1f18a85dbda9a6bd83ea7342011e43449ce","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data.20190625182654.tgz","fileCount":33,"unpackedSize":221489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEme9CRA9TVsSAnZWagAAaTsQAIBASoP66z7IZat7owHe\nO1Do3uXRn7yV9qBCIjXsQHj9IYx28VBlV8PdnLYAY+EE8gjONLZ5xOnDQsRh\n41o7agVDlvq3/z76rn/HoP6nQcaJfVij0wi5xA2a7jHShQcNHFL/YDESKHfK\nX0nQRlhmpIWQumRtRLatLRHKeGwJdQ+fAB0gSROcG8F+xvR5iQTwitljyex6\ndhw4VTUJ5RUQ9UPJfczD+lPDYbWT7BRl064kCxELskI/Us2fXes9WaBbjx08\naGy/VgGsuwLpAOsKOelz1pWhzC3MK9aykPZG4zKnoQIapHZNBjWd4RG/GW+1\nzgbmTyVuwV0+FwO+TtO9FqpOXYnLcWIhbuDr8WOzLXNl8LigacaJ5Ve/wgar\ni58xARaR8FO8T451iDKiKWZroxxLxtzl1+K/v/aPFKIqJXWbEphH+KcYcpLz\nkC3wAHr4ftw0b0NGNLn413mkK8VZNxdnh8KBf4Mc2sj3BVCjUj30G7eopyGn\nHKiEHf5I5yGDiwOnQv0j92pQZk5DVn6Sb/FgSwNcuCDoH3VsRzwB+txANQEU\nWd0VWtUpVfBla4p+uPKGFeHMARPhXAp4bn2b+r46X/CNpfiIJvOPMbLo/E22\namZAVQk/PYxVDkxKEWsWtN6VJv4Zy8pgKVtT2LIzUtuu1jYSmmeFG+pOm1m7\noNtw\r\n=vO9u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7qp3pKd5zhRqkJy7MVewB4sNECwDPeSzkeJFeInxFmAiB/MzEpq15rBLC995p1kpkW1fNooH0O8rN8jo8D7iCWKg=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data.20190625182654_1561487293233_0.7164815384347467"},"_hasShrinkwrap":false},"1.0.0-config-data.20190625204313":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data.20190625204313","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c3b6fe35d55ede4e1110f686b488e19024de6560","_id":"@atomist/demo-sdm@1.0.0-config-data.20190625204313","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-zBmuye8RIGtnahc4Mw50HU8MWc+gI2Vu1Hpux+gLhBT97Km/sdVEIN2u63KSSobZ5kATjRWyMeh9zcMSNmXLDA==","shasum":"e785e4a30bd8605758f3f0ba14f75340f0268bc5","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data.20190625204313.tgz","fileCount":36,"unpackedSize":223837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEogrCRA9TVsSAnZWagAAatoQAJ85XZs+IKiq/gTGUyWS\navBS1SXSe2h2i7TV+zxkCbeemWTtYj5Bp3ZbhErDXio9Ek3Mjhs6YxVaI+gy\nRa7UlPXXWhkxQeWLHet+7hpl8dj1nnYBjH3YMAFVe43RLE+jB0FERqDEMOWZ\nhSeB0iAfjFh/IckN3pw/kfsrty/+ZrXtF/jieLYFiRoOiZ03XIN+o2ZfnA60\nJSeCwE9u+iwBby+wLa/JyUQVwVFBtcK5SxtGHEenCPRaleQoir/M9T3XTYon\n/9Wme01LZ1RpJBo2+jleTHv2P0LYCw6Nspo/BqH7iQfudQViPs9Zccj7dPwt\n+qX/tDDOOADoBUD31ySMMfTknIwAmZz3HLap+u4gq2Z5jhjsIZuCfx/4iMIL\n88U/NpSlFwSlg6jSRgvcsEYzBNQY42jiniy7mUcG+FZKeyK/PLYQJOasuTen\nnASwpz+UFqM91GjHLPi52IH8ziX6Q867PyQa0P4ekGEYwmkWH3W0zrJPkqKQ\nTXjVJlLouix+KAZtO+SB1DfEew590yjeZbGCSq5TW4HIqRZSurktSnqmJoCf\nIjzMnldtXm7GtMc8FVkNGfjHoxYW+4xcgm9L7EusVs0DkdslYF/OiGVTgafQ\nKMBBba0opFFbEomKqGJr/b9Ku5qYBK2tjds+5aIolRwsO9UFRq3s5oZEykF9\n4GLi\r\n=ERq/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJKc0T0LyCpBZh0ZIJJsJDp36LycSsX2Tsxz6V7SlNtwIhAOc8BH2hEgguYZbgXeOcV6SHDOoLDPZ9zvsOc+3zF2XV"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data.20190625204313_1561495594517_0.33964509996015213"},"_hasShrinkwrap":false},"1.0.0-config-data.20190625205846":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data.20190625205846","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"23d497b6eea3f1f749c71734ed4a87f2058588da","_id":"@atomist/demo-sdm@1.0.0-config-data.20190625205846","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-FlE2o7Aoq23Fc+0RuhPrpdHUM0+kOGH1bq1AbD25IP4B5IcykRI6Ae1txfdqUyZyoLVptyGEi+U/8pcuNh7Rqg==","shasum":"7b6fbcd43f859aa13a4af44b4a0f4ffca293cfff","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data.20190625205846.tgz","fileCount":39,"unpackedSize":224527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEothCRA9TVsSAnZWagAAR5gP/2Hhss8QpRUL8KKCCVGv\nM2KUldi2akBnv4XVaEuUJeSnaTFzNl5yR1gGPbE5mw7PxRsJMduu8wrhJKd7\nfBw0K2UdYKRfHyZDXBXdYKegEQn1CvDhVUu8JgXUUbG9Qma3lRLlLC337Dwo\nZxhf8ZQQfPuga/TG//sA6tWPh8mWptGy4OaoTQCuOJtj/HJpeKJRn5qAUgFD\nSbaM+d0XNzGvHamItm13wDT95fehTdrTOMZjkmXvNSjJt+K3WYaYw5bcoxj6\nO0yu+RBMoXD1LNhG+XPxRVKzKzcEzS23y8CuMdrCAF4DIdi9Nhdvl3cpp1QZ\nKtdPK7S+Q6B+mp1e394buj8Dfa1oTOaF9quXZWxJiKgl+0WWAZTWooo0Dcuc\n5JnJ8psj7mvFDOpNfPy46E8HIKafppYgd0lVBipAdl5CCOnkVV+6lUcyZOq1\n3JE+FnqKeUlFkBF6yFoDF6w1m+GY0/V/9U7GB4nawulH+OZVj0YkezIagRiG\nPP3UL6TlBWguTsOUaEkNhIwfj5MnHgfOWR3xmj5MpEfSoV26LjUGHbA9Rpsg\n14rGQTQ0fu8K1xj4DYRGjoFu+9bBVMZ2dxKF1SRjSyXKrP0LLLzFIg/CxlLS\n1TQoNN4acsDZkDIcoJdGJjFh7NU5QDFw6o16mzzrdSGdfDlaDzSGDQoft0F+\nWenP\r\n=g/eW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3NjfAxGJfD/avTfCm3EaEoz9n0i1938iZ7tKalkmeJwIgdaBvN18KqLYGhotyrV+dzWdJO+juo9maAOSYSD8XyxQ="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data.20190625205846_1561496417096_0.23422136113565495"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190703131523":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190703131523","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"73a44ec462c0f31c244995d071a34a5cba2d2271","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190703131523","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-AmoPvQzvT0MVOjlsgtuztY8cF5WkUyDI0nx727c0kyqfjgAQOqRSA3InUq/dRSwNMzWrGrW0kes32Pv4pQOMng==","shasum":"f43ed2762c07a3eafc8f83cd2575f9aec3e59c62","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190703131523.tgz","fileCount":36,"unpackedSize":224324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHKrfCRA9TVsSAnZWagAAkHQP/1a081UwvDf35vqY/kwt\nJkXRnLMFI5z1DnZsmWtoyUJt2VjKmQrNoUncgriDMHKzYYl43Mge7wb8lr5X\nVZNkSKiHbNzFA+y6w+Ne+iGSshfNKKOTo4dqFv42zlaWoPm+6om45S10vTaq\n/bQiLwf+WO7GQYxjVTujm4tc7KKRfn4m+mCtXjZINJ1o7OeHQ0d/CYMI0y3f\nG2Xgkp0keTyWiLKT0YBT/e6IQjaV8CzAHsLzIgi6QRDi4Hv1PLkwQTaHYnyi\nuY4NIQ2mnRtXSgq9JZ3l/oupaPOAymTJUbhgj0KIpx0kTYvcjgxc2295Jj4z\nv7gzjiuZbBiP9pj1js4AHIHqrzwMNvkT3l+K10KXHPdq7iALhjiVFudp+rwU\n5QG0CQ1oPe4p7/9UqT10zVWyqt32GaWOOHAqD9N+yIDn/bEorYcmCp5DcZMO\nL3tUmCguYPf+wEp1Da7p6q0YhXEMl/feihm6SmTmgar29WX17DJLyOw3QgVx\nv4+9ScEWaZrKn0M3MP899HstgSaQhJ/touXJRsj9dqjvvvuUxmXRHCDZA6Vr\n9gsm5zYa685lvdMsqiT1PSk9H2xJzaMy2kBpmTVyDyRBlpe4f7ayV7AR4P9G\nQcgjlXiNKiFc5CuizzxMNIq1fAKn53BML5AHUH3Bb3+qa4Tko6/f2eO2RMER\nv1nu\r\n=Kvl4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBi66a/WFfHhuhozuhzC7MZG7FAlKDLCCj4zJvcbKeAwAiEAybRJ45MB5xx/Pl7tyiY3mC+NVHY0GQnWvoG6d9HLsdc="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190703131523_1562159838071_0.9098325237357643"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190703161313":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190703161313","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.5.3","@atomist/sdm":"^1.5.1","@atomist/sdm-core":"^1.5.2","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c223fbe9a042c9d673ad500a751c369d59bf0998","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190703161313","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-9bVqqVWrFyuxC2QYO9HTr5n5t9zQm0B8HhrHRIxlGnaqgr7EtO1j+7laRNGdacrqGRG03r37SPHFcprfvtnxiw==","shasum":"9727a11f2f5d66ec862510bb91e076097e67ca01","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190703161313.tgz","fileCount":36,"unpackedSize":224405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHNSgCRA9TVsSAnZWagAAp1gP/RN5K7r+i5J+MKivQyhX\ng7JvAcrxiqb7k7acGfyTQTTtCC6koJDSXZeLrybV9qiJfP/D6hveBQB3xSMA\nrmQTQgkSqohGtA4gk2Avy6EeZtNTRfdghtqrjXkXL6SAOYJXz7jwOzB8pa9R\nAAXdlM3xXU2QRZvD62O0rNpxlfrtRbqXbr3bfrgtkhqt5nUu2bJYkNGH1mYC\nCTAHSzvINMOy8SSXLBd7Ee99czQR+qivfsaQ11CQ27ZHmYgZd9Z8qbd+wLzX\nHAh1GIH9FzDq0krweMOJHV9zzhJ8BtOETwZBKls6MswpowWpcAqKyaWVwH+m\nmBIYB7gGnwXSgpLF/SB9QTxeX1dC99nGJoDx7jNapQ0E+7niv+zRjuxlpwbE\nIQv9WevkMhWj5R9fHAUaql1fQzlr4laP7fgNZN+sBXjTXeqsbKXorea3y5PC\nVuaLs6qmWvVbO4yrvax/xaH712Mu6dM/qUVni+L2AyfaNctEzinLH6Q8dYZw\nYL/HgKzOI5AHZGM32LhxklzwwErGw+l797ne5C8wcqQDHegBxSq6ssNUQo1U\nFeeMkF4xNH3wJAgfKLxluU9mSmojpIq5NfStk5+K6XikxIse60BetmEptqvJ\nsLXmA6IONRWJve0nML31UoekFcVrx0yct8wiGKb652NRFoFdkUCVEuoAJxdn\nUXXZ\r\n=z1Q6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHObPiOAL3yReXjCJdBbxIce2PaBXipuzCBl3TLkZp3AIhAPZsAJR8D03W0QOHeqju45i/ly7Q/VXxiB0cYCFo98oN"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190703161313_1562170527469_0.37420512945785345"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190704154948":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190704154948","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.6.0","@atomist/sdm":"1.6.0-master.20190702114952","@atomist/sdm-core":"1.6.0-create-goals-on-sdm.20190704153636","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ea32dc92e5c3bf1781b25bba39dfbf584ef8f35e","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190704154948","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-mdLiN+KLTZjniuNP8Zsn/9lY5xSBMz66JfppYUC6hY8CdAh0UgJfuGJ9h4Qzzlxc9PM5Z29FpwLrmJmHKoPR5w==","shasum":"4b1154c093b9540e5c7fd5cce635d846d5a9122c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190704154948.tgz","fileCount":36,"unpackedSize":223088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHiD5CRA9TVsSAnZWagAAp7MP/3wRCvfXckJ5w9+FS3P/\nCH+MY8dCceKDS6+8i6w24WpZvL7577EclAayCn5WPb4SmIFtNLQi3LP23P0G\nRycyccQPE1zPjiCKFYjqYbj8c/IoDtl+Uzd+l08p+wACWm41ZXo4WL+3zH/J\nqvteVxBtbZDZKv7duljIuZ/EHSkFAMte4gObDdZGBASJgknosmW8QPNC04mE\nhyO5N3B+aEwWz0frrvKGWGK1e4EUSjQIAP8EWST2OyLVH4TA5Ed3ruM2GpTI\nDpu7rpSUe7Tmv4QKs1GmUmm5DYNJef5gRE8Xy6Iq48nykz3fDZvpxUmBNJ1Y\nd/LbBNJyLM8qzxgTXtNj+oBSjSRDy/SMnc05sJEmMIEnRDH+LL7HvqxTPqBY\nVmicV1/WiVq4jtRmPQXS26vXlyHV0TR6ImvUFjgvpV72jWMIRulJy8uJuFGS\nHFsdbz7r90dq1tkashi+ozzVTDadejLfETMV2T/eGMfTrwH0rzNrb4jFuoiX\njc1PT0/mNRbN5d1PKf6zSEaxsoesmOtRzGqJV64rFfX2GPshLsPlSA6nA+0W\nr9KDm6gkXWd0pKDHm45ZmiFlp7+vKUhbQF09PBZ1Kzhz2ecCjO6F5DGLG2PI\npaSiQbHdqqnVpIRklrK3UAI2UP2fm67dgoybu2h/FgdY7pNnrV3qN5kDanxQ\nAPS2\r\n=niMT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExjE/dqkwHZGKraLnc/exqwsqVi034R06XdTf9SkAwpAiBabSJQ3bQzXCaxH/tbbFqjKK61yrfUEJfqmIpMMJ0vLw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190704154948_1562255608963_0.6496792202394259"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190705073652":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190705073652","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.6.0","@atomist/sdm":"1.6.0-master.20190702114952","@atomist/sdm-core":"1.6.0-create-goals-on-sdm.20190704153636","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"a7438733243cf61151e2e921ed37621e59b2934a","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190705073652","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-NjoAH9ow6K5LoCrT7jGv923vnI940QKhc01m2siUGrUR5W095R5nCEKYLR8Sy7OvNbcCgCmNb6HrmmfgK37I+w==","shasum":"84674e183f072be025437362129360e80d9ef7f2","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190705073652.tgz","fileCount":36,"unpackedSize":223088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHv5tCRA9TVsSAnZWagAANbAQAIML4PXgbjHT0j5URG+J\nGNC1NNpz15fw2VVylC4GUXdoMr54Ex6C8aF1UKwCTuf+kpijSiAM8TSeRZ+R\nUTLcizUcfXYAF2s8fF/r+mCyH1GoGMajjAIl90snhr3cdNak5vdFph9UFXpa\nX8DnaaOHf+OAaTvka3gJzkVOlnVe8w3VCq/fNRXJXYdllq2iEORDqjxnFzKR\ng3+iGM0gYwmSf8nBpB5grkO7k8bP3/i3EUJBEilv+Hh9reo2PTyOe6wobjV9\ngxjfns0v79m0B13iJL5B9wOd1X/va2CKc85dBrfDplOjPu9t72AhyYKZECWq\nuMp6Ap6I/ULnEUU+1zNM9zumOehB0KZQqRSoFqCiOK/Hc8viUHvZHhD0o6Ok\nxwAnwUyxqpBxv28ghMYa+9+lezKHreXjJhhdgAbWtqZDp+gzQ3q3cxP/16qk\nBKwajW94ygKwjYU9Tf9/1FblaeF9N/gfyLYFPwtF5LZBjT4qN8682+40AVLg\nWgQEkvJ0TJ7MWY7zbUKlWGt5YgQk5ZxOlfBn3q5nesBWM4dT1AiV0JWISUkS\nSoA9i2JNnhmKapF/QpRoI0JmoSAX4s4LLNSfTqmshPjC0Ut7u+TxgvHyxQur\nBh/zJnBDCRdUWrDxvzNldyw0W+wTXEjR7s7joFGCfLqcqVbl68AB5/ddgtT8\nq7hg\r\n=TDZb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNu1FRMJJNmKA1thmGuW7k6AQIsHuJS0iBZOiO7wSXLwIhAIhMixoOILRh+FSwv4GGqQ+2tO6TO6B8JzAwoHsO2+v/"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190705073652_1562312300384_0.34164171273381694"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190708133217":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190708133217","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.6.1-master.20190705123604","@atomist/sdm":"1.6.0-master.20190706145121","@atomist/sdm-core":"1.6.0-master.20190708131856","@atomist/sdm-pack-analysis":"1.1.0-master.20190429060345","@atomist/sdm-pack-build":"1.0.4-master.20190320190156","@atomist/sdm-pack-docker":"1.2.0-master.20190408133256","@atomist/sdm-pack-issue":"1.2.2-master.20190415230740","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"2.0.0-master.20190429120158","@atomist/slack-messages":"^1.1.0","@types/app-root-path":"^1.2.4","@types/fs-extra":"^5.0.2","@types/lodash":"^4.14.116","@types/node":"^10.7.1","app-root-path":"^2.1.0","fs-extra":"^6.0.1","lodash":"^4.17.10"},"devDependencies":{"@atomist/sdm-local":"^1.0.8","@types/mocha":"^5.2.6","@types/power-assert":"^1.4.29","espower-typescript":"^9.0.2","mocha":"^5.2.0","npm-run-all":"^4.1.5","power-assert":"^1.4.4","rimraf":"^2.6.2","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.2"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"2a36031cc1e9e9be7bf739ab0ef27a3ceb7517ae","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190708133217","_nodeVersion":"11.13.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-bUZbT2HPL8JHR+OVif1bla8mkj5DFGviEQdNs3P/RRGO0gvqs+A9O+eeAX+PLbfcSyZskdDYsII4MWSf+G7XGQ==","shasum":"9e761f964351f671a74b71adb4a31b5afdcdfab9","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190708133217.tgz","fileCount":36,"unpackedSize":223093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI0YzCRA9TVsSAnZWagAAlOIP/2ghP1vNDTUikmCmgTJK\nkkCMnqUpXKYN4kvFnIVB2qtpRKhSbmUrCqMKE803BXVtBArF5Kswa8bSaLj7\nG79VMk3pHsPMn61+N56Kbg0nb42KfkJex4GRNhReGuboLx3BnubrlVP5SSXu\nnMk2iaoVXLHnqCVwG1u438PPcBO0ac8lqbKttvKXDD2oa3sWPj2YUt6kOLVY\nWJtWpfPFSMKFiKdxabvia3//OPuB6WraJHgQ5n9/fTcTXY0A+KX37XcSXV+7\n7dsPmJ+alT239pAmHkyGGwTep9lIJ6G/eZ8VD1t6fWuN7UxAlrA/rEGp5jrs\njJ31/rA6W8NSiC8/ADmuM2nRft7EW0ZEuOiXqtIMpFDFNEH9X7xjjQ74wT7W\ncVWhbanSRbyjFBv03g8G8qYZKOycQsaYfsrLSgQL/TZ9z/vlsSjeK4uwUt8X\nXrZ5+pe62WlKzd0kxjqU4fLYNpYFcKzK3+jLPNib362Gs8sDTeyeRKPgQJ41\nXiIcwFq20C6FaYToi99M7rRGlbLkm6fNeLXU+UeWl0sNftc4L3D1nwgJNW/g\nhNkoB0M+WXW4EtXJzOFAD3GUFR1wYus6PpRkmLFfFf21pkFmvz0qtiQcCyKv\nCC3ebU5cB4p4HlfLwOoqJPkdSLhOuImmoaFAi3/E19lTjYgFIPinZBwz+WkF\nPduo\r\n=TRkg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8KmfUe/yVa0r5eqSp+mzb86XBoklIHUX13DuRpovoogIhAKYvB7epsOSXo22RE3rx+ySTi2XUqnRYjNCMZCZU+/3z"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190708133217_1562592818187_0.30773547118931166"},"_hasShrinkwrap":false},"1.0.0-master.20190710082037":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190710082037","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.6.2-master.20190710075516","@atomist/sdm":"^1.6.0","@atomist/sdm-core":"^1.6.0","@atomist/sdm-pack-analysis":"^1.1.2","@atomist/sdm-pack-build":"^1.0.5","@atomist/sdm-pack-docker":"^1.2.0","@atomist/sdm-pack-issue":"^1.2.2","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"^2.0.0","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"^1.0.9","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.1.4","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^2.6.3","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"24ed2f3c95e843f6982e42525cbcd5c9217bf1a7","_id":"@atomist/demo-sdm@1.0.0-master.20190710082037","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ZnFAVXd0cnmQcuLVvA0zemp6JxTTpHj34KBXYM76qqyONxa/DA5phSOIvnYPmBHzhk51J5ct6cIAShjVa4XChg==","shasum":"cdc3d051470b98f084baf0c139888b5b25cdc9be","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190710082037.tgz","fileCount":33,"unpackedSize":228976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJaAzCRA9TVsSAnZWagAACx8QAI2en1d1giiSF5JU4OIJ\nH2BNRtxFzz9135biL1kpi/QnLhL74dwXxnV/qPhe7AnRjM66D9HiRoHwhgdA\ngy/J1DmdBlgPV5o13+M2P5rDwcplhRIr+N6L9C7GDvaDPumX6Dh7cbIVhzkk\n6gUm7jFP85VdIgc076T43kJuMCLdWRLrynz7Z/GqOR50ZPAIh3T0Rh8GeQH1\nwnKwwGzpemOg7GSG9lYhkhJ+hMbv8a24thRj/tO3TzR1eSjnHtj1ydPeas7t\nLapYL4VKIkMcLqG9yAUN1E1nZI7q6PbizY28uPWX780O/dq3wz4QZfHr8QjM\nUrbyt7jz7tRi3mcWJHlCDgEuMgQEPvZoYZ2hxc1NZH86ntVXa1JjEic0kOgL\nk4CbbnsD9cC8TWr3hTc9FlWM/ALKTTseMTks9PPCj4nRPgTO96Hg1QoEUwXN\nY0Lbxail6dUo3YMOU2MsrbPqhx8qhEl6z+9fBoFnUl0+3N43WyAClxTL+Leh\nBuwhfpf6FKV5yUzRmodweQW2aBTYERp1rEn1vlB/y34FK/joKCeDk7AK7p55\nhrx3r8YqXr8GYrL7aFRTW+D3QFydJIZP0mTSwW899z5kGiMCGtRhRB06T0ZN\nA4qNmq9vKnqyDpQwSk66tfiBllfHIkczXQ7BW2QWOPWkOFLv8Uc1tZQix3EQ\nl8f9\r\n=Pyrx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZVKo+MwksqTQ27qLb5dRnQS6PHd0KyVKRlqE6kyFK6AIhAJ4CkE5b9EfrYKNuf1iihWvJzztMHKDWpg2bXHpK8qXf"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190710082037_1562746931264_0.43853620276075755"},"_hasShrinkwrap":false},"1.0.0-config-data-2.20190710082143":{"name":"@atomist/demo-sdm","version":"1.0.0-config-data-2.20190710082143","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.6.2-master.20190710075516","@atomist/sdm":"^1.6.0","@atomist/sdm-core":"^1.6.0","@atomist/sdm-pack-analysis":"^1.1.2","@atomist/sdm-pack-build":"^1.0.5","@atomist/sdm-pack-docker":"^1.2.0","@atomist/sdm-pack-issue":"^1.2.2","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"^2.0.0","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"^1.0.9","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.1.4","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^2.6.3","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"032853fb8044412b6689b5a1b6799d71ae43735b","_id":"@atomist/demo-sdm@1.0.0-config-data-2.20190710082143","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TPGBTRtATS8cDjhnFwSngMl7ZCqFi0WghQ4jG0vtyyl/1e40lMMBeX+Dxi9KYZfxvOFj+YrR+02XjIhW5Y59MA==","shasum":"50cc4334866a22ddba47866762bb46dbf02c6068","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-config-data-2.20190710082143.tgz","fileCount":36,"unpackedSize":223008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJaCQCRA9TVsSAnZWagAAfn0P/0DaOlr1Kv5B0ocgAPgr\n61kp9B5tlEgVNnmzEjDoFYEq+gGkDuOe9rehjBZqukT4dURE2ZEVo7DcOXap\nGSLE/0RcczGa/yDMGzP2QJIc6Bz6UbzKtL0l/Zt+L05yxb9X28dCdzGtS98y\nwbS8yvHnvCHy2lLTbK3b5BRqWL76VWa3nd8WUPAbwzJHlKyGKIXHs9vjElSv\ntrOgtdQIIfygu1yN63BAR+dQnB+ul3KsA7N9Qv//oTCPR9WWXTB96rwVJQho\nw+p9GLDEdtU7Z6un5RpuBjOp4Q32ZKTyEsrVumIIzuhGDZwy9CG72gSeNfIA\nhCLNWflCsFijBLsMAodWRqLu3Z1TS8vGiOYetqmtB8wztRIStrsm1ioUDQvR\n3W2bNrURnAgwXIaIE2LBGSXyrzyw0DiLrnvH+2x2DfVdsm6zalrmDKaTKbp+\nh4eVZXsK4CzxR23qGe+2bPlWDmtSFfagKItF9cLfHgxSpuur9CzyY4l7aE0P\n1TKh8BUsKXm7dtE+8JMMiPkQfBbg0pUNVNC8yS10mHofnxvIBidkIWrHKcI0\nh9h4eSy0yR+nj38jwC7irLCMXQrGTpFJkePKlnR0Xp5eE//f1VRX78ymfDz7\nRemkyRWcEZ87hi7Qu5DsS2Am4uSliFAl53ftVRicHQAjCZdKs5isVm43t4sW\nGG/0\r\n=fBuY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvHyfyDebSApy8SriA/Kn2tX7nm3Yps91YDpDBWBibFQIgdzYlKuBqTUZHVPzArmHtBghasBw2XHuGp6hSnuIkTFM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-config-data-2.20190710082143_1562747024031_0.025429766914622842"},"_hasShrinkwrap":false},"1.0.0-master.20190710202036":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20190710202036","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.6.2-master.20190710075516","@atomist/sdm":"^1.6.0","@atomist/sdm-core":"^1.6.0","@atomist/sdm-pack-analysis":"^1.1.2","@atomist/sdm-pack-build":"^1.0.5","@atomist/sdm-pack-docker":"^1.2.0","@atomist/sdm-pack-issue":"^1.2.2","@atomist/sdm-pack-k8s":"^1.5.1","@atomist/sdm-pack-spring":"^2.0.0","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"^1.0.9","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.1.4","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^2.6.3","supervisor":"^0.12.0","ts-node":"^8.3.0","tslint":"^5.18.0","typedoc":"^0.14.2","typescript":"^3.5.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"21afc59112cc2dbce69dde14a177942079184326","_id":"@atomist/demo-sdm@1.0.0-master.20190710202036","_nodeVersion":"12.6.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-++KNxepLeex8d7Kla6DgyN5t6gIZ0lGYN8natz2OBKlz01tnxfw8b09L8zxUVWPs4SJHXgSfb/8Nt8HaYYmgBQ==","shasum":"9db22d2d2baba1c5f2ce956baca9a25a66e50f92","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20190710202036.tgz","fileCount":36,"unpackedSize":225747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJkkVCRA9TVsSAnZWagAAN88P/0CXDN11+jMZb6XYnLDq\nGWlI75b9PdrBMB9o+gMjNdEUE+zYz/nMQf1NtKRAhPbB6knfssi/8XjYW/4i\nD0C8VPTaSLI8tuJ5CnKcolBbkiVF756eRriZ73yt0vRHI5kJdIjI5U1tDhlX\nL503Zte3sueJ3pPqJXLw+UWgDkeuX9dT6Ro1q5khAPrUp1bTXKZhHsR6YAGo\npnttXWOpaJFg05d9ei6gO2OIRJXRQzXsvgWK1F12tIyc+d18VW21r6hY9WrA\np8NDnDIeAOJyeLnYWN4frSBV9aFZbu16s1TYY0z2vaWbYGiJHIoWITmmosod\nKbKxqWk7aFLUVqGX3HacMEZDJ2/YmqbqacurJ52WBjIkv40hHSKksM0E3ZcF\nW+iqfWqqvxDNL12LvwecLk45lhp4V17mjNd5FsJZYctp9BAVqK1BV3LcjOOH\njmXuNQwA0i5DkNT2VDYm3Ic11GiUfkzlYxPfA9fhhtxeSE42yoY787Rt8ITa\nsK56voY7gTy7blJa/WhP/FVLHe3GxJyonbVuUJ/sqeJgldciN5F4sEIo77UQ\nrMTiAcj7MVtngQWYxFFEuhxwnlFrT6MvcqdAEBfIo3YxZ7nBjGIjPmvAoBKy\nSg17Z14OQzf4LMVNjY9Fkfquog012Iz62Gv1OoNwfrpzcAYp5ezIC5rJexLI\nCfr+\r\n=8SUj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb1yot9FXyibmHjIVaQ+jd092tWnXunmrLKlKnosnXiwIhAIZdlvJghJFNmV3UKBwcfR1VVlT5gdnii61vYyTCwlyX"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20190710202036_1562790164441_0.7310936287758822"},"_hasShrinkwrap":false},"1.0.0-master.20191028104408":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028104408","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"126b3391781a9f6b1a34007d8878007a6550ca24","_id":"@atomist/demo-sdm@1.0.0-master.20191028104408","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-dk3Y0hglTyRbFRMAu1yXbaqlEtS4wF26WlVK9VcvXwmKWyawQmojcEwS243DcEyUVYEGZZKRkpv5pMqMCuwvfw==","shasum":"d972f21a1abee82dd3ca6ad34c4cf8f8fd769e61","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028104408.tgz","fileCount":36,"unpackedSize":220938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtsbWCRA9TVsSAnZWagAAs1oP/15fxbiYphSMbsagDzVc\nh44i1CEn6nLcDHY0tbw5vA9GjTpgFb2zK2dcyDxp0h9SRDl8xUtiwfi8/M08\nAQWc1L/oFhxCf+VUyjCob7o5II10rw/uAN9JGN4gRPavUmrzg/A8beRvLftz\nCgXH2mIX0A+hHth70p57LRS5TvyXgSFyFmRli2WPLP4qLgQw/oVrMaNxc4aC\nCZhZCigAZlNKPjBgj35WxuYRsmUHJkuW5CZQ1VZX8T78UPtYOtxRqoGiQ5GE\nRvTDUpE9ajcvVHtRO54UXWN33IZHwlaKteJYU4yvjA51zcuIbnMeaNWPJqEn\np5z/FicbI6SD1VcyHDnigh/xRaywsG842SwCXL9A5JBqAzv3NhIgjQkD2Xgu\nho0VbtFU8mpEREmqrEI5v3U4islmQC+4KvWuhABm5+3NdlWTCAivuicmyg6W\nYK+owNr0OP85tf0ZO4lmi0yOUr4KTA6+y7UYP9qfkdHOG1swxLwAkvj3h9ak\nP9BvU6ZywU0d/W0ntTTZ51Tzpl34z2sq2yjQ+pm02WTRkhtCUQ+VciP8AIdo\nCTTwPwC9qCDl7bhHlnkuokJUk89/qhlxLHxuXvgMXC0cspmszWka3zrd2XFC\nY1Cu+mVjLaU+Qz/WPHLwCV7VBM8GBRqMnVG4XtoDzB7srakkbg2vRPCRhaQR\n53gJ\r\n=EJD8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiFuaD5nkG7I5JVtIrKnmcEtSYRc+gClSMM32d8jfLvwIhAPAnVnHZhD6SX4aHu3FWD63TiGEIA0faOfH8akVFWvOf"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028104408_1572259541650_0.6867730170315252"},"_hasShrinkwrap":false},"1.0.0-master.20191028104935":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028104935","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"d294405eefc2d9006120401a8bcd350a9b525f34","_id":"@atomist/demo-sdm@1.0.0-master.20191028104935","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-XcLTuC3til0HHrazjMt5usqEIgrRn9QEk6azNRDIqr34c/ZnvURzRjQdJzVYWKnFJAyVZpda0v66XmyQLTeE9A==","shasum":"32539f27bb577156932ad4f613217f103e35f4e9","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028104935.tgz","fileCount":36,"unpackedSize":221893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtsgdCRA9TVsSAnZWagAAM4UQAKPhsWlFumFNSkX1MhFT\n6pNSBg+4EFuZg85lvUiQE/WLCrJi5MgyQT42SEdEojkMy38tseYmQh09QW+o\nhqPRFGxPI8lycegTclJH/wpgAG6ztO5vAcLKGhJNZ7B5gJkKdc/+4pa4L6KK\n8X3OT08TmmuwdTJuhhu1CHzbaWhnw7s7NS3bDL60OUksqhmDxiRjLume+6Xc\n9P8KBHzbTiPpbyCr/xQZFV6IvJDDXkfj6KT1TdySyIijHvwKi7GuZuG4jq0t\nh/aiYMUwI6IM98ZvkibI5tOAl95GtikM+cpSvGAq20inJkyc3NllT9rzeUj2\nrIfBOwO2vLEXPUr4bX9ZWUqq910Q8YzDk1guOeIAws8mbwC/PLrDNWrqV9Vj\n4IbJ8O7q+9sJ0+HniTdumks0+w/qftxqH2q4Mp5O/M1wicmtER4YYkYCaHT9\nmKjjLOMNapIS0outrdcG6eYuyHtNVcn2WIQkCe22zzNpnbq5az1hY8eYQkUl\ngOmen1/EwlnocrR05ddab8xLQZBhSBjLhkkp0dJyLJFI6I8hMxbYwNyxlLVw\nJjoEngJygm2ekIrU+VhpE4A5iENYOMptZDdq9nop0swGTNHe/DHlDxZTlm9K\nyqxCWIxvEwzCrLKIeDS0+VRBY2ihuW4Ncnx5y4HKqZ+lLC8nzlW9xwRuIefq\nFyHL\r\n=tu1T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC43wTTklbz8Qbu29umSzcmlfEKSZFbyRMNbIiYWMjf5AiEA3G5GIFaUYMm/980aTe50nTbUl3kos8ub+tcVPaR7g7I="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028104935_1572259868506_0.5435936719709848"},"_hasShrinkwrap":false},"1.0.0-master.20191028110422":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028110422","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7bbbc031af9b35574ca0a9261c3239709d44d112","_id":"@atomist/demo-sdm@1.0.0-master.20191028110422","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-qznlLiEJzyfr0MG750hDuTTyGvBubUXPzjJEumPF7VGTm2BVvHRo2g7A0PYcURCixdTyHaQd+wevXP0FLbXUyQ==","shasum":"7e3069fb90f2f4d79c0812d4504dfaecd90beaf1","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028110422.tgz","fileCount":36,"unpackedSize":221903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtsuzCRA9TVsSAnZWagAAceAP/AsO8cHvz2o8qCnSCKpf\nCD82hZxB41lV7i/78QNor/v0RBqh0UPzHYf3fLUAKhlLirDK/fyMsOuBsEqs\n4srbj2PM+ugWsDfGUa68XV/VtnDzp6oDJnDv8nXh3fGJtXOajO1Gytt5i52w\nXkRPwc4N/VUiNDV5MuqxhT2lEpvS1FRqbeqrh27NYKwMg8u2WWxvLAfd3Bht\n+t+BCyxR/8yW/O1fcuRNHdATazhRFqtEjoT8ZzgJlprnI5te+a6vF8So0TGO\nEYZFflSV/tVnSFeCMXeETLhY1LagmWpWfv+xtj4q6sub/4P4OItZ5v67wAtV\n0n+GxC+YK7OpPcu+kGVCpMX/MK7pSPBSExcysEdykK4kCkoROykTSVyLvHcg\naePUJlj8y9kv0lFPnJqsvgSkwuu445EYbkaziP6D0VoUhkvnNvGqNSgREdXR\nQSAzwyqTYjktvqhoiDOTPGmmPde0LDbvy+xlNw0/vTEsdVQxx/bIv7pXt866\nzP6pBJRRGksb1UoOEWRflJLsDKWm9scXqPO9iy0cHstTMYh7WRNhNX1iC1We\nHvh83y/v3MYj5JtEDM8K2fPOvvv9r0Uji2lpZPZFEkNIIRXhoxy1kemDRPsF\nlM9ewtFcBHGfyZXP64fm53EbX6pWbduiFJbjKNCjgkse7vsaxMK1eEy2EMXF\nfN5H\r\n=R7nK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/3qvfGK1FNPgadnxRiu+b9+ipBF3AKA46K2DczQew4gIgZlmoO+XlRRGuB4IHGV1eyav0EErV32oUzpukV+SvWIQ="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028110422_1572260787054_0.262774796568912"},"_hasShrinkwrap":false},"1.0.0-master.20191028110743":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028110743","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7bbbc031af9b35574ca0a9261c3239709d44d112","_id":"@atomist/demo-sdm@1.0.0-master.20191028110743","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-SYg6MHhnfQtVtcJkwHfff9DBiV+KbC3Ammy4l5CyJoeeNdc309usvJ8d6X7YJQYyuPEjiv+e8ByX0ukOmANcHg==","shasum":"973832e30800bc1c08470a61c91b0a2f90c695ce","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028110743.tgz","fileCount":36,"unpackedSize":221903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtsxyCRA9TVsSAnZWagAAqnUP/2cym9dqCtDY5b2KCG21\nl3LZ2TFhIupyIwsRl0H3UN64W0LSJTRVMV2ukPfl7neHxa10W341S2/jOxzO\ntOFNZcnmah1HCoQMpNkE3YbEehxPEBtuHh244fmaMvxvWj2FjNqCO084dO94\nmbvB77zmjgvIyh7lP1ukHXyUHJw0n01NaxtzdsLttwehoMq2RtMlrU5uU3fk\nVC1nHgqu7yM7dJM5Qirqk9l+TgEQIwAvi+gk634Ubwk30M3v+nQ+YcktrjWQ\n8O59GdVHp7VQXfUCAPZiTakEPQDG5x0j2vs27knp6fQ/3R5ePXEPjBW8anPO\nnYbOrh+C3XQU7MwRNYy11oAoMZwLKB3BnDvAl83oOUMCcJRwMkcJE3OBu2jb\nYgsawq1HCvcUPekSuaVAZ2rII2HM5Crpnt0YyJAAeE+q+ymrmVZd703NgBsU\n4LEbkjEeqTbiQ4tJbum2czVHOcfwA7LENzucPzoEyHTKwtJ0lShugIf3vfA8\nMQX9m0kfeRBXxZ18wNQ6CTdZ2wL46JAyhzBmo0+DmA/HsxHcX2wy5ciD1SnS\nPKSIIqEY1H2/HzDByQ3MFOKUWDOTaiD8Gt6C4dt1sm+Rg0VANUkOWBD8nq0m\nHbV5GZRExgdE87TPG9GU8WxCU7+2VwuorIgCW6kA5BcbztCCD7f4EjWi9FlB\nuEUW\r\n=9qXG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICjMGWRYA5BZDJzHxriFYOLr1G5fcd7ZemfuLAbtXX35AiEApjEEc5eZXW3Pmvpuv/DRImEOefkL+6jvnJ3ZPLg16RA="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028110743_1572260978158_0.5997334736183955"},"_hasShrinkwrap":false},"1.0.0-master.20191028111902":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028111902","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"e9653edad05669bfd7dd9e93c2004382d11b720c","_id":"@atomist/demo-sdm@1.0.0-master.20191028111902","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Mv6LNaiB3HlpSOp/2MMVFQL3It3Mz90imlfEodzAH0t8MG4QWiTeCZbh9uM4k+BPmgW9Gn3QWpOhTIp/jQUoJg==","shasum":"6d9c10dfbd603316136aeb38e6aebfeaa5a408bb","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028111902.tgz","fileCount":36,"unpackedSize":221946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdts7yCRA9TVsSAnZWagAA4I8P/31O94hm7wkIhMB8c625\nH54+DekgyyltRrqmTAeCw5ty0onQnwA9LMYdQmgvVJmIkCjY39QHTMZ1GbxG\nbgbzWsycr16J7IO+KbM81PUyiOvlwlPQ7n9uondhdJX2WqJ/9HdeK2sVW1X6\ngfouoT5q0ViphDMHOGrVoCc2vMoJhBZGgC6k9momYHf3sWI4DOiZLNLGk+lJ\nIv3iP6GQWuQxXA8Rnf8JdOM4zZ3k6obPF698qBbDw/U+KxbtOvyjPocLKM7j\nh8ne5dAETHNqH+ML0ZXQ/Db0hl+OzHWM3/EM0DGqNVU874EomOEFbeBbBWXN\n3miVAPzK5dJvQ+Cy40x9sNiD5LAjS86uDSUQlAltsI+MjUJ6Y1Ki1zaUzDe7\nvB5p9vuIjU1kYRO9FZcltge5+M4ZSH8v3+ktuRUDd28LSsY9ZlHlV0WHG0aJ\nXlYIVTzVscSjvWdEuP0MxzT7mVIIe9/x8SEHNZHc+oQykqYHOKNbOEGAO2ai\nEy+JdmfdA5v4jvv8UGniUEXuzyEhMxFq4lkxhfzUedSLEgafMTvvu/pnFZJi\nmNDumJBAhIWmhkymGovMSE3M+miRSHwFku01lhslROOK35vaggRtpiOJR29N\nnVRZpVOSVMdSq7XmotkfOTTokrvFhvZvp/pcL9K2k3Mup36jBlxvDQ4dcCZ7\nzTFb\r\n=H6SE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9mzF+VeYOTKqo70PK+SCqHloUZr4ghT3Yla2ypXemgQIhAKEHUP5MTSPF2e4jntBsXtO1gXVWChfEDLfniTQMuFGf"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028111902_1572261618118_0.9854333827628396"},"_hasShrinkwrap":false},"1.0.0-master.20191028114017":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028114017","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1a56b7efc9252534b9b928e5e0bd9b00859f8659","_id":"@atomist/demo-sdm@1.0.0-master.20191028114017","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-vZZ4uBze82s+vdUCtzlZhSjhcpU/isPcedi2TZ7YB3tzmHxIVLGcYmZuQrznDh071ke6/NL02qPQYWLwd01GPw==","shasum":"3e5570fab131d1a340158de9dc808924d42a4347","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028114017.tgz","fileCount":36,"unpackedSize":222071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdttPuCRA9TVsSAnZWagAAPzkP/RCmNG+ktMYDKvhL2rf0\n1Zahrrlla648neM6qL1wSmsXh4/QQtjTpYNRIP6eeZWt78cUo50cOxEE/MNt\n7C6rvhDXuGVnPO4Mkoyi1WRRAW8r/E5Ro531xqRw+ozyfHvzWCvMUtWH6/ED\nuZOdsKsfEtLFD+diGPdRwquCpO7yotCbKw3MsD1cMAWEeTUFhvVp5OafGY8u\nBnFwV81QonKsnqbwoKxzA7TuXPwPfHDI1IddizUk3kIWpvL3bW93rhPup1vz\nAX8Qj/xrS3+XH3p+8m+SqkcjEmFqc/R557/DnyGceULNYz47sNPcVh8UVzBm\nM50aWYFq35HGzelCtOgyOpCk1kJGeWdbr69qFtx0U7/CrJJ0YSNHv+caHrMZ\nrYJJM6G19Qe8ktTTETUU4/SVzM2ioDe9HQmV+xpmVTB1FS5aYPZQon59h2sJ\nYNNOt0rI4Zix46hHLCxHhwrVqzV2OFqjTfDW041lo0jQ0s/JyElcdu+v4qrd\nsOAhOfZ51U5pbJmjawJdKgA8Fkj3f46HEJraDCdBFjczIepx+Nc+IaKjGoID\nqnejsutZAe5CIB37KDinTQ5/c2wrZKaIR3MpUlwusOrR8/3uCSA6w5ghekmr\n+xSA+2KWTMEQBmVnO7Scjs12ft7OX+VHQZx4eA3fQAj8cU1eUX+xvwXQjQQU\nqOXg\r\n=9qWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEXl0VrBEm+zH1fu03uiG3jUiABa99/dKgDAu+rZHFLVAiBR9p+eA9xOh20SNh4SWGxqAROkuVaFR6NnzKrXS6b7aQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028114017_1572262893579_0.8270444636906347"},"_hasShrinkwrap":false},"1.0.0-master.20191028125729":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028125729","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"6047a80ed25b2969409201cbf2eb4af6a3e53787","_id":"@atomist/demo-sdm@1.0.0-master.20191028125729","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-AjNRNZKIWTVJxFBojWbJGHTvutgUUkaWuFY3TtVsN4FjnfFKxmlfsspcyt3vYMDqbDZGgSJHmKrYFAi25svogA==","shasum":"8716aeb3825b742e3ea06f04f6ce6a92b2834f6f","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028125729.tgz","fileCount":36,"unpackedSize":219997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtuYYCRA9TVsSAnZWagAAdOsP/0nS20mA9SBqDz2WgoFi\nlgnGqpzBSfK62YW3Qrku0NGNtJPDPfgB9QKmqSglahhSiqKy3foZNg1wbBX4\nJUc79jiqpgWqyqm3cZ875s83+uqkBM8JzT/BehqQJZIbdCZpYjDPATvRQKx7\nxBNd7e/kZwcV6xiubmSn+a/CwXmXuimu7EUQ9Z82CGzaI6oI0ny1XH6FOX1t\nMEkhqyFhVrltd6EWN5aQujcA0t/PLRscGe9mGBFDPImtOGRRUMYwSTNbzY8f\nK5SFUlVjpVk6uj9sTL+3i+f+Q//bnVQD2rdh7jx+es0Ki+ATiQBHijNdD+j2\nHC5i68WmrPr21GZCxmx7CXtu1dG0lZGXCCi/o9fjQ5mQmtyY5AIbNEOVILz3\nH7REExdSaNUboal0lZ9OczEJ/Kbdnmjujby30YRBQzz97K+jAqL2eJoGv1nY\n/Fg0Yioj06++WGjae+mU2Iy8+BzWu/AEr6l+IgYWnPwKtA91nXn88EXCW0NZ\nyWsVzI1TD5ie/KnG8GDSY3OZ741inU+XRdWYzTgAMxHvsJAz/npLdcH+27Wm\nWvXhQ5D2YydPZuWFYeqioNxWHRpQmUzIrB9HUApdU4fSpqlAfZ74mTNUGLKm\nlBa75dt65sJif7C0rm17bHqxRlpKRcFvDG/103cMwlGFr5jEDECQ6uBSAVxX\nwh3W\r\n=a7Za\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDicijJFQC7GavulUsSORXx8DYw2mZQ5i0TVj5cVwZhFQIhAMEVZppVHaMvpqgdAcFvze7EqmOwajFtv0q/v3holaD1"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028125729_1572267544276_0.7164069725889528"},"_hasShrinkwrap":false},"1.0.0-master.20191028135922":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028135922","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191023194134","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","git-url-parse":"^11.1.2","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"314e1dab436726523af5a3250da05301fe49a8f4","_id":"@atomist/demo-sdm@1.0.0-master.20191028135922","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-wTwblphFkue/4+EZvzGmDeeytzLLR2AF1IsdTdt/K4YcdmNzijKD5nTqqcdcuocCRCa1PjJdwUhrT2KsnBCO0A==","shasum":"229570855d553fb8061d8c17a4bb0e87f56b9722","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028135922.tgz","fileCount":39,"unpackedSize":223591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtvSMCRA9TVsSAnZWagAAwlIP/j1mScsvewfkt5sBGYSF\nqwIffqIbSQHkvSyEdvWY8CKIyPFt5pd6jIkAXawfzvWsjHWaU7j3VG3sDx4F\nUWOVYMLSS7/thGqv0WdDXkn+NEvyrRyLspSgH+QK4IDGi36cu1bYgeFHbbza\nhHQrU5QzwHgv/BNyRNd+xZswU7wcbLOKrgry5DJ9ezRbLpSVIcf86F2VfJhN\nJGpu6LyJMpKX4OIsA/dO1gUIwoO/+d7O3Svd3jmEwzlXyLiJ6A1eUpzB+0t1\nFIHzp/swYK91nQnDkgu2mPJ2EJAhi0DODsikAmkUVpqamyylWUslexxQLHw1\nwuCAbdzV6NJCma3ptEAmVsXSdyubbB7CjhIkuOGd//UbHJoFjmsm+9ecjmOQ\ni1+wz0jgLczVM+fNBzmBCwTx1QlaUCRqqr5jQzPm6ZW5+M3TDWQiQItQOsPc\nG+2atNFGNeOGgFcAU6dG075S6toRd5+b1gtHuHdHgQCby/5T2qrAzPwu9sBT\nsfBr3RXmbnSZ+oXLP5QazY9tIlS+beJCHgJNPqCX+lKiIxTSxx2R7Ij+3M6N\n4xWsnPVCX0prA3EiTuZDbS15Xu1SQ5w6JDf73VMKz5QTlANfPJk4vcB+J00j\niv63Dzmi6HkuT4xRYqUZHMd8+7GoGt+eQ5hisV7uEcCwIuK4go1LzefqUQux\nS0Me\r\n=4A2y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlQGNv6uaa56iuAdXjXc/5N20aso0/13aVcHicNv7keAiEAkWuqJ+gbFm3BrIPCV/YZHU6OPQSBLhVhQfPLtpSupbs="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028135922_1572271243849_0.7215474833424489"},"_hasShrinkwrap":false},"1.0.0-master.20191028145825":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028145825","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191028142705","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","git-url-parse":"^11.1.2","lodash":"^4.17.13"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"fceb43c3fe10010cde403d0bf83060b9e24195d9","_id":"@atomist/demo-sdm@1.0.0-master.20191028145825","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Z9dGn7EPkHANkUwsWnubQXDM3w8eklhoEn1Eqb9VC2qz5nmZrjXSdM8e5FTIsshJc2Eb2jkggsOdxvM5mUk2JQ==","shasum":"8de3f18dc6076e5c5af084db762f8a34a8405a08","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028145825.tgz","fileCount":42,"unpackedSize":221641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtwJmCRA9TVsSAnZWagAAbXQP/2dRCpKLvFMlHWQGG5vj\nOtA4luCThKVuHQ1nymZheKv2SwgJPLEP6vKYVkI8XiVvA/Dfh3dyaY+ww7cb\nXlQ/RcRBaoCdKNubz75i7TgDPKbTnLoLBRsu5kcQdGccRp0ox04drZI/ofRp\nI4sGmhIAvWTKfJX9sMwYffKLJfbTa0O6eLQ7w6XDGFWn2psBDY9Yf5lMt6RI\nlQ5GnOyoqj1kWm86Ohf5cvjo0TrN5sM616UolvJ5q+eUKZ16DA2yzCgYenvk\nPyf1GqdQz/AJuJHL+/MLiJdjHhVrGq28qFWNPeRerBIInipztkScjrmRW4kK\nX6bJYkhZpxlWAA+T7qvSW3HGuJbK3E1pxJbF5HrVIK+3FJ3mQT23+PICZnoD\n291lLb8vcmzTiPj9TcPJA7s3W6gCRMRm2Pca/gsxPeZrG/RaBendoLVyEgss\nYeRHYaW0h/UfQzo07YAZiiQzXQX6Jca/B/AY3lsV4KdEKxYKNyYiLEnaQy5L\n6guLZu0xSOXoue5oK/L2lWb42tYYmpOt+149BrnFSjKWDlwodmixziptdwA/\nXNdY+7pKR2DqTmhBvvTG3FCTNXRo9FlVatsJyydDYIZkx+sVbTTZDe5Xfuru\nk2NqBmQ7KdSzD4aRnCJmYzPRfNtN6F5u2iL/wpFtz0eBFL5ettk7I4+L9R7F\nphB5\r\n=C2MX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7bodw8krHZYuUaAoBIQ4nalwTo9HKwvSnvrK8UoZf+AIgQ2S9G9R9VQNaxrK46CKJZU8BsQMMYWV98KUiTDb3Ytw="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028145825_1572274790075_0.2694380284256377"},"_hasShrinkwrap":false},"1.0.0-master.20191028153127":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028153127","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191028151808","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1832701c175abfb3e24b9a76c086768d529d79e7","_id":"@atomist/demo-sdm@1.0.0-master.20191028153127","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-9S0MOSjvq41b15Xz2XmicJcyAAo33PodBJHfNpwuqTOkjYBVQTSk0uu+/b0+nvxXOt2wfEvoVHH/7LbUSvel7w==","shasum":"d599d34ff878d9cc15355f0a1820908b507249a3","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028153127.tgz","fileCount":42,"unpackedSize":221611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtwouCRA9TVsSAnZWagAAfWcP/A4lv4Y5vks4L372Md1V\nYB7Km5jtizBB8LpyOBPYFEQV65KvX+JAnUHs92TqlMcPCX5j0Tx8eo1jC4Zi\nM019hD2IIuivjgA5xtu/ptrKBOpvGG3wllDSIBewnRjPUnSDbBZAptIINPQx\nSQgXjgsydZzHgzfJPMNUyf2RQ3/8QcYtgOHL7Alx0RZoUF+9g4payURtmQF0\n//SrmG4fyTFci54f8mP26J2uBqAsm9kHxRcKmdDmIUZHMP4DPmXtC4fP7/Ya\nmdelcSYQ1ydB+isT3UNskoomjys5SDkEw6WVMK/pYXTaDxKXr2/7poCyRe3k\n7HJF67xKweJ9PBBSm60TRoPD3ibyd91e+QnqXa+LP9LYvym12/a1e/R1FQtn\nr/6cI9xWzWUZ7SORTTCMFi8lrExCM/El5tggWlugfD2XGLQrqV1j/rN3Vblo\nuGKPl36kslaRKsXsCjvESzrcSmuZhSAMkby01s7lfcmlD1Mge33UHykl1Jv9\nFR7QGF8XvvEiB5dyIxcu8lqN3wq2mGl9QP0JmbRkOPJ2BUKfVCvi+o78AaNk\n7nUyqxAA1GBXfcd3FVpXgthTIU41osDehMCkhXRygTj8q+IHsApb0SpyCPrl\nnly/hvYQlDwIeojJzaUEG7JKrLz/xFp21xDkuFibPgku4uDmWISQ5PnuklQb\nItwi\r\n=C5F2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEoFxIefPNUgANmGeUtuSQ6tTDuCZwWkFjkwSBuCWwI9AiEAwTfA6j0mNbRwuhCMskUQp9fm7rx56ju4E4l4/e25xpY="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028153127_1572276781579_0.19874357161170209"},"_hasShrinkwrap":false},"1.0.0-master.20191028154722":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028154722","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191028151808","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"9b7ddddb75a5887d274956ba65220661fdd71d88","_id":"@atomist/demo-sdm@1.0.0-master.20191028154722","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-BHiyenW/Uom43XVCRvR+olu/yHtTWbTZUee9AaXFfL65lLIeKIb6wbghcWVa5y2GCcq9E9pdKF35UTD2cI1WJg==","shasum":"41bf832ce515bf0c04d8e88bc484788a38009391","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028154722.tgz","fileCount":42,"unpackedSize":221611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtw3YCRA9TVsSAnZWagAAeLkQAIW2MrfY5XcXST+ikwXp\nLGuobjdc7npB8nGQ+AryzA2mXa//MQ+yC7tdyt5DTu+bDBfcN7MtrKHiBuv5\nBwClKgZc4FlpKNnUg0kIr+LTPksj8ERjj4TWdR2y29SKCdJ4Ld2WxvpI3t3R\nmHA5ibb1Tz04VLNInQ9HPDjWgtN9A8bMz11FtF1XlDGatJAjc6C8e+JsOczo\nEb79PbXSxN854QMDdpRtaud3XQT9ZaaLhNhiZH4ytrAuNbechziBOzH5UByy\n5h5vctnBSzgtaZYdNfPq4dfrciDZYOcMse9jUrsOYdKcDop+++itmnK5qOdX\nIRm/50CuKfOFO0TeAUqgwxpW4yClaqVpKHkGs92FXqBEVhSt6tb1anFIrwE7\naBZJzcPVRMkRoc0eRIlGeMwzYDUWIgF0FZ3763EfDHOrgG+FG6iozWACu17l\nIw2qJMQJw4BHBktA90LpnIvEuNH+OrL509vvDy7ge1lDtnHt8en83F7vbNDV\nt95l+jPYF+Xkw1EZLZvus3CuXP8dhhLmJOlq8UmJuUALLNzmey7K/0ElWKrG\nI2hd/rw4Kw+o1fHRel51LW0js+LmSfj/4bKimGDyd8JwxStM90h2v8zVBwRn\nS6FwOhfhYvpxKbqsP4zPJPKw9NG0Im79XqxRJG0sL56iUBrO3CFhr+tofegK\nPzwP\r\n=E4uC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLrSrNk+HLyTlB6kE5DXKLStpHnDu8vhRz9h8lLZXH1AiEA9xSBB4/bkp9gRhC+dP0BYXOj1gtD1aGFb/GSMigJw3g="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028154722_1572277718233_0.8853777383563972"},"_hasShrinkwrap":false},"1.0.0-master.20191028172019":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028172019","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191028162338","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"192d6de5847bd129bd34474cc292df738fc1907b","_id":"@atomist/demo-sdm@1.0.0-master.20191028172019","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-c74Cu4YKqugSvivE4zkLNISaV/f0UeCIOEKJYXKoNwPtyjn78dKKVIdr221pcIDb9kTbmKWvf8RZ8rsWQ7H42A==","shasum":"4a4d3e217d6fe2285a6e35cb5f68363eb6f1126c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028172019.tgz","fileCount":45,"unpackedSize":222460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdtyQlCRA9TVsSAnZWagAARqoP/33qTVMIRPuz4BJQ+ShR\nE85x+ouw/r+OcKA3x1el08IapRjMSo/wCb6I8B84U7X4KvEuP7A0oNYtDJlY\nVu80pHjXhN3FZIQAH8ou22eIamcJTMg20oDw4lty39apLyFbMDbNtbAv4QsN\nbOGTTL+tYtsJiD/NZ/5EAdPtFRXaj2ULIJeSk1Q6UM8BdXzjd8PNELFIW8AV\nms18wsDin/Zle/L91QJyycVMYdCbWzU0s4GwqXA5TlrkTR1bOirozXtXNdIX\nxKFGhiWHsK3KXZpJnFJAwsozS4/8N7Y0Yy8bRzyaN7VviZcf83LHTFehb0ZE\nYpqBjgOuzqDzzzYf6wcZ4qkTAEMKCgJNj+iLZVGR/3FM5AgwUycASIVZ9/VD\nZEVMT4qeYcxrLmp/fbOwJqxjsahMfH7F4Dg+iP49wCTqM7FPwDD3YoY0g6HV\nlraXdcW6b/5ldg1coOtiLOMF38gM0cLZFQ9tAUm1bD8aQVXYK/CGU/J/uNPn\nfOaLEi9OM63TL47MQ6JJJcYb2NZll1U9DJ+LM1u3GFyEUxl1OGSkXnwHba7A\nTbJXyGV0tyoYWff5YP0Ga6raITHKZJUEVCMihbQSaxFZMnh5rrHbQINpVmcX\nX4g373YMcgvKFQqiOTLhduvRVDzv9EQ0Yjgg3exEAqaaWUZAR04fh/RBJ9Gb\ncCG7\r\n=tdqw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG74Rti3Ge8VIh1mN0w22C97MdxSG6g98zfYRETEpgqQAiBr1h/cdi7gLuRH4gPXQ9sompCteyq9SQKWvPxmHLapTA=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028172019_1572283428777_0.9316753631278394"},"_hasShrinkwrap":false},"1.0.0-master.20191028221613":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191028221613","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191025130333","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191028215245","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"79091d767907029e34d0c417af5af16bc96a732b","_id":"@atomist/demo-sdm@1.0.0-master.20191028221613","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-DQNqfKFDafyqdhrVLnbjoN84TAc93Pxa9L8lMm466jK9aYh2E6UsUM94rFHgQFTjJfiaRNoRwwZF1LxOlx+BxA==","shasum":"acf40f54350c9c9ea707a1eb64fbe3f3f0ea6377","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191028221613.tgz","fileCount":45,"unpackedSize":222570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdt2lsCRA9TVsSAnZWagAAeBQP/iWIEwOoVXNxLUVI+o7p\ntL7ESBvfLbOstH0Y/d8vWLtCFhJhzOx4K/H4B22q3pyJZH8IkorUs/8c/k7j\nl/hpukZpIrIXAlXgRD8t40Hvqd5WAXpwiR8SyVHa6XdsY2DKbegXeUcxalwd\nbyS1AYud1Obk7o0tW2T6sNfhFTwKdQPNxbonHlibrsDQ7Aat3nWe5I0locEK\nz1wXQZAOrpgwZAweL4RPmK/vI4Tz9cr6Lelw5OCLNs1lW7gsLDx4Cbd0GjW1\nRtiE9lTu9H3U45Hg8kQnVns2Ul+0j1mhteGqKDMPJV5qJfQpbwzPV62mGlQv\nZEqwj5uOWnO3OyLXu0Ju85wNbEgZb4+4oIN/AzVw/+9bzWVUIAuu5pmGcIfc\neu9EkvpjmWREHnfnLRg37Iy6UbKc+hqKugrr/6qVgat30a3mjmNZSnNASqXf\n5PF4jk2hECAcnQIHruy3F6eThuDQsqwM5asOwlVcBznf6+/lEHe5vKE5ywmJ\nvB5zY8DBE+SBHVdd8uHHzOmwPsHpD0dMwGM2/tpy3iGE67eigFYkXzUcxEp5\nUUHOQXTrrYbzEl9P+swoq5pIBuvlhBtvvy4hb5NcaTzxN9s5Yg2eP+SILLqy\nza7EmUoCTTM2kNlKULK9S2+hQiZ+Pqq76FinZU/tu/Y3gM5XwQZjjywQafEm\nCGQ0\r\n=HmmF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCb/dEfdppc++Ost5tFMKRk0qMyQFcgxyTkddm1gILF6QIgLjaMGnIXBH8M0XtYToxF/r72Oa7g5wZJolvWYHeX22A="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191028221613_1572301164362_0.4762278138072715"},"_hasShrinkwrap":false},"1.0.0-master.20191029005859":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191029005859","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"04a916d4fac943561f91ba1c1aa3cd45c893b70c","_id":"@atomist/demo-sdm@1.0.0-master.20191029005859","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PQOV9Yfr7jZzNCCT1S6klw2kCFxs0Pbu0ZepH44SVQJGrxHclbzfTFWSXm4vULB+9V9dtNx8qplZ8HUZl4uAYA==","shasum":"5b7805112f3a3237f74a5de71117b4390198f86c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191029005859.tgz","fileCount":45,"unpackedSize":222570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdt487CRA9TVsSAnZWagAABLUP/3Ro6b3Fs67julskstLj\n3BAJIEICuFnRtWMCteGdzNydoeUO+Oynapg597FmBEfvtZFW4L2k673VmLRJ\nHhqdnVonz9yww+q+mbBKHqNA9gH/wugl3lCcfLDouU8GKpf6OP99EcVSzYmS\n/euWATLil6dZQKTxUR4RyRPd7uToKhRCp7RzUF+pDCFjJFRIJD1kz4ORoZDL\nGABTR1C/j2kb4g84j7zYcFyxKHn0k2sM5n9HiI05+JciuFQlTqpV5YV9ba3e\nV7nFd/3BwRbYZhCPwO7y3KDBtvJ6+etcq8qjiyKlXulXAZ4Vrui6OwsXMcmP\nt757oLCI1cwrlBf+lhBonQFgYGro6a+0qqNlefz9Q7dwuVzTsPcNMswC0m8+\nd44j1P2ppf6Jc8R0kanPR2E+yLNN+SgICb4HOOtctd/Ixpp0/goPDQg9N8/R\nlr4pd3hevZKRPdxvryqSznbehBRq2s/exmGBDlCsBjusIstRQC3+XSS/rUcI\nprrt93vJDS86bz9VUjOAIWuHdSLykStaajEqzbK/mNW+M1CBAFMXg24hXaS/\nIYuXR+NgEuaAH2h8tNrhk/MWtOr2T6A2Db9fOnTV4kW40v8gQcEfhZ8EKNMf\nEOlyvXkiIbO2tv6JuNU3gbVNrw2f//2CbJF0QhqXa5BD0s+RtAn5ofAWk8oT\ni+fp\r\n=qHMZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDRls4z/TUXrc9oQ2ZdtujH4pNagdF1OTM1iSg9wyZQ3gIhAI4bGcKmaHdPdoxCyCF61isz50OCe9UBx+65yFHI1qwI"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191029005859_1572310842937_0.01749531175278607"},"_hasShrinkwrap":false},"1.0.0-master.20191029140456":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191029140456","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"672698d6e20d3b0ca0bd70b32fc4e0b3123ac861","_id":"@atomist/demo-sdm@1.0.0-master.20191029140456","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-OV3+w4CuUyz9oMUE/xoRsj82USlEws5D4+fy1O/FeoLeqsUcqGuX7GIoNv3TpSDhtYNwDQG8h7KxC9P3WvgDIw==","shasum":"950872887c2fce7269d082aa6b7466f6a01c78aa","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191029140456.tgz","fileCount":45,"unpackedSize":224958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduEdeCRA9TVsSAnZWagAAsYQP/i33vl2UB6/3twXpyjjO\nngM1L2cXxXebnWB0Uunu/b7JnJTRYPgtLXbgKcIUSXMeGmc1kBHwAbBQYUwY\nVLhMHDdfRHVLUI0RUPQW9FZs3dFqa8YhZQP4BRr4pxTtbPhqx2VGAz7q0rBF\nTT2f/Fpr+S1vMq0Am8rB+qxOqdZFyvZ/T2eq9IwU3KHpBEet5yUIrLqih5uE\n8+w0lF6/dLWuLtiWen1VZ6b5E4AoeTyfCa/+nK/52+lyt3nMUBpDsvm7kGh9\nPbQvve1bYOxz2ZtohmPP11zBHu9H7CqUY7yhQYfWJLIuLfH4nGeLqphqyzDs\nRGrCspoYxuMoEk6RXeY+6FQzRJ5pOuxR5J4Kt5a2JwUJYatkbogm/LERSMrl\nVvGdloHBNBLbJS1T7ZYi8nWh0H6UDfBc8P/Ywx1hH/CZgBLylNW7ZjSAfTQK\n5sqEAR2CD6R6P/INw+cMm9Ll+W41qKSPsTzaXHkKEqzDH0ZrGowaZGzvwKLG\nd3DvRSd4K4i5YspNXMbp6hNAuW39hSUdQY6/R9IXQAf3Z2HAB/WOvJTYW1N5\nb/nWNerIm+mgF6ynIxffFkfWp2N9eWpeo5UXGPIDriN1Mf5hf5qlve2O3f9h\n8DhUDTufhFmrh0xCv6hRhG3zZaQEt9TwMZ9rmvKAaxRb6fHTeVpj6hDsWWZL\nKf0Z\r\n=bEx6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqj+VP5uAnyYBQ7Kco71/AW8yNLwQtZWKZvT3au8dssQIhAKQrs7pAo3Pajeqpvt44t+gTULH2kY+W6lMyPJlub8ge"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191029140456_1572357981833_0.036593294441677804"},"_hasShrinkwrap":false},"1.0.0-master.20191029141611":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191029141611","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"826a0397518e1f3dc7ef4b40c12aec353382a26d","_id":"@atomist/demo-sdm@1.0.0-master.20191029141611","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-43L16niLE/MoFSUm+/rY8hWD3gGrzEUi9UQtUIUOQUGJStDaMTbYISbhpY+Le4Gb+qu3KsD7/ZYFjXpliYMQEA==","shasum":"ae4790b745200731e28ba0958b4c703e4e6bd80e","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191029141611.tgz","fileCount":45,"unpackedSize":224957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduEoUCRA9TVsSAnZWagAA19QP/0HqJgRF0FnsrsT0+kId\nYRgDZeGVJuCZI8UMgZ2kYHkgP3CvxfhjVlJglklxqQ4AWJ2a2NlBFVEAtj8u\ncO8L1pfjQGG3NGgjaUTjrMYqLL4xwBeWcurzAdSReslAAMXzgnRRJMAc7upe\ns66fRukRIchptGPWc3cAao700sUEAfBWiUL4h8pmFjRkIyxqQSUTQjWbZ9QX\nl+UtSPUpT8IxDkU+n9IVFQ5HrgL3lMk4Ij9Mpy1BkOjmDys+5IrH3Y/zStnK\nJbkymREmslTD//qVTPumb2jfEOkCJd8EDBFA8S7W9hOEa/pdPKVCJBCuQxcX\nSY0/mV+WG0N/p600dAXu+P28ZIktY2g0mFx3zVXqwlzDMDS7Y10QGtJZMfOR\nBaIE5SbNKFBJtJ1EeflhYHskBxfYyDwsSKSz2tx/MBdD2nBMMI3MSwvLC2VN\nhjjcX3G6ho4qWy210KqCHH3H2PqiTrJtunaKhBzacK7PsasnBqMBkKtmVpcq\nzaoFIL+R9LvWlfGNuenfjQl1X48+CbAECabfXnHXiURXFKsIAc7HvWfmF26R\nZfUNv7P6ZuuPn89yM+7L5ynjzkBBIOk7jrNhjZQQlIBfY3zcrYkEceAPON1/\nZ7gLaK7YSGVtLcwIPWBGewc7WlwC8sR5En9Iq5ucnREaCybfDX4zfef53i/l\nyuKA\r\n=Y767\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkdWO3QvAW/wqfFsVnvplr9wa4CWxSNjuYm7lXGB/BwwIgIymlFxWOTFsSJNtc58sT0pyFvISl4gEbxOxUP5e2ouM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191029141611_1572358676521_0.8522697061963571"},"_hasShrinkwrap":false},"1.0.0-master.20191029142034":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191029142034","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"b5091b9ae78fbb69d7d14ca5eb413785e5ebc90f","_id":"@atomist/demo-sdm@1.0.0-master.20191029142034","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-PE+r9b8UfJb+1IkiwsfNR/hI1nqnVgzvdj7KF8qDF+pRs0ZtPj/pEoLojFZc3KmkdpLeRnuRLhQ5DNwL7IRF3w==","shasum":"671dd59f03d657089d9197d6566ad14a52dd954c","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191029142034.tgz","fileCount":45,"unpackedSize":224581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduEsFCRA9TVsSAnZWagAAh9MP/06nRKgtB0qlDCUubFOt\nWH2QRfEO1CfIFkIS1F9YWbG2vTr06NtpKfaJMn67MCfO0cvLP2WMd7TAaYQF\n38TbqD3cVHIHlFtojNcTGjNOIT/fX9I0/2EUx+vpC/S6IMsM4yu9XrTQ5lKY\ngMn8rkep9D7Oc6DthEsR6r9YquvswwQgsJny0U7WfrF8bIWkiJtd/nSTU117\nyaUsispHHU4527t5FMh8VbR10TeQwKyDUuVx8lRKsUtSWvKzq44x9L+aqxeT\nZ4cBvow7LOvoQVzYQx0odldmhXDP6wo2Cf5Eu4jPrAUVJCMRUnuABS4Fr415\nFQ14J6QjomzyhiBqgCO4lqih1Q2QEat4cUvFyGBehhehuVJUvEZww5BeqAFq\nvFjfYjL+Gbhl61Acm/mVrPCMzB4zwD3UDcqOAXcoi+ggEILhk2OvbK3WjxPg\ngxtM19I3sN8mWFEzMLWQJUFIk1HciMQMfH7DmX/+OgXHb1ACi4gqLdg6N0IO\narRnlB/gbtcZQNsQR4U+cPzP76ehSal1hr73bum/041kNwXOiwA5lfPPJAQG\nF33hvK4ZwpPQcUJ4HGCXVHDPgLyyWgl/UuauMGI6LXiPlT2MN5EVx1HSZI4T\nZk3mZnttzgGwkLFlxOuMauoqFGkVlzour3Z6EB5N+m/xV6lKaiRWpQ8HHYgB\ngL/O\r\n=FL64\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd1dhcUAJ4xI1DQPvW3ur2Pd/ZkeN+Y/PMfjGO5UbAXQIgVKse1Ytoxq30VMGrWxRDhjyT242x0viHQCGK0NZ1CNg="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191029142034_1572358917163_0.8235441300298469"},"_hasShrinkwrap":false},"1.0.0-master.20191029142502":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191029142502","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"6b6eb7626918b1abeee438134cb87d5a1c979e73","_id":"@atomist/demo-sdm@1.0.0-master.20191029142502","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-cjUv1ChGeuU1a1MbqLIdBKPP3lQibWq/0F0fO2x28xzIw5KzlPf0elfJ7BDTdT/FUotwNZNKk+vlhwIw3Y0njA==","shasum":"3ff1d97c12a5a6cf58edded16347c7c636e521f9","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191029142502.tgz","fileCount":45,"unpackedSize":224581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduExbCRA9TVsSAnZWagAAedoP/R9QHGFJQUeKQbQA5SRt\nMoDI2ja0cNWjrP1tp04X2c/fs3pk8gP/vO10nVQ1IaylOPDZQXXEKExUlVWl\n1YE8F5VEUf8GgPSnLc5Lq8B35oa2zK1EwikuO4LKIG0bZkUVEZE7tzz9tvs0\nKD6sSxV5XQwnm1/r65ll8GZBmmFacDAwtA06ODTmEaWM292nxChTGsXeKRg8\nLodpxNZCIfmZcpCuAW+wnWYAY16/pk8YvfZImDnLItaZkDS7e9SR/uy3NLhE\nnAeCNf64x2kv8N0tO/Bo7BfyjPOvmG6TV7hU5uQ8UlwYQDvjIAbSJUQczHH9\nzV77Cr8BnCbwynxOZ4qw8I8VTcqFguPpQU9ijQBs/U9XyDlET/6JRBa/aA+I\nO/SdL0ukfJVO6TOZGVW2w087QUAB+VT2fHBt0U1ansMNRs5sMNJgbCCxQhhp\nP6MOu1P1YnpK1S2sanxAZvveJnVyKjEUMLPNod138KwF6pmR2sSSHY/p6LCY\njCemvSYvDWml8H230YLrzDbr0S1qF/MReCBPOX0k3PX/qtMQFtE08IkewqHD\ndG0ut9Q8e2pMq/a6bgyqCOKYsQdXr58ThUjffxwmq/DP5+1LutV3J0m3UUeJ\npSdBP0HTXh0CqavDGfBys4qsIjQx/yTF6FE3M2nWeUTkeDQXSw4XOELAAOH2\nersy\r\n=ZuKK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCt766/0YPItO9Y5WRBP3oEzjruzWouAZAh4XZJAEbAzQIgZLr1qQca3LQzJQf3er+Ph//lV6abpE7xXZwvaTr0Rko="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191029142502_1572359258787_0.6313760346087791"},"_hasShrinkwrap":false},"1.0.0-master.20191122163825":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191122163825","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"b3d1c25c92a18c1bc8c000dafd98a3f92e874814","_id":"@atomist/demo-sdm@1.0.0-master.20191122163825","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-himNblhUMtxlG5l2mZWHqbi3LsriyUZ5G79zZZUIOpqosMQ0REFRJSPqt6S5iowyIr/FiXMzvurCP2ituB01kQ==","shasum":"6b176800c40dd478ab38f63d03be4db7527b45a6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191122163825.tgz","fileCount":45,"unpackedSize":224541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2A9UCRA9TVsSAnZWagAAI+MP/RmTTD/BZvA41SIg408Y\ncFEoai/+kvFt0qnWm3NyhE+o1GMG75z+QpgXu1vWUXnfzjV/M5bjwfcmmKsR\noNkem1ZDK1EsxeXaZLewKWFA/Vi3F6TegxxCLfr9lNUbSHRMFX1xMFPXwnNo\n31B/L2rXE+gxapOsSmO1m21TSUzz0Fh2FZnJ8gLYAS8GC7DmPzBJrY9G4f9j\nHYYeMRbBAW+XPM4KJNMs/ihWwJM2nJUrGNG6voRtU/5Ai98JwozKBgFtRkUO\np55cfMIjq9eHoy+DS9G527iC/RIqnNk1oNzgu5/83Ye4plnAuo8xVJoVt4Gf\ncr7O4GSI2ilwZ2LQedwunsrJKdNj1i+Q2+kbmeD5Ovnz1QBFX5i3Y+kGz/K6\nvPJjnuRuowkUAV+O4su4rhE0gsRKUYqBk0+q/PxNGhg5AVPTtkOn/Os3VJGl\npYJIEP2AltazRboS/az7wyR6orHDCYjkhigbFlIXqqIBwtbWTiEylQn2ltQp\nF4m1+G/4KHD4H2i76Bl/sHVIAIYSqOWFHAoOUAt9UV3AWCWcPXwG7T681dd8\nJFYKJujLzbrWuCrCcJtm+uf1JmcqtUXzIyuHIGuJZ2l5IxHdjtDVPZa6ngkN\nwvqpLpYRa6EqSVbClGKsBvk2EMsNrZO82TEVaUyjIpbnXPWonGX4sx/7pI98\nKAc5\r\n=yE8C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9/7t1YEpTKgEjrfkcBGu+ra54IjjvPSiRzIrY3/uTDAiB3LfOA4HMdSKVfw74Gv7tv1n0gZ+Pbp1QrKaM/Ngm1cQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191122163825_1574440787663_0.43776479375359423"},"_hasShrinkwrap":false},"1.0.0-master.20191125193159":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191125193159","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"1.8.0-master.20191028235651","@atomist/sdm":"1.8.0-dynamic-goals.20191023214836","@atomist/sdm-core":"1.8.0-dynamic-goals.20191029003037","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.4.1","tslint":"^5.20.0","typedoc":"^0.15.0","typescript":"^3.6.4"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3a9d2167b2e2642e03d179dc6f0d0aa35a286813","_id":"@atomist/demo-sdm@1.0.0-master.20191125193159","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5pc4jLQIzhOGW8Q/g19QEFFnc/C3cBVSicYkBnH9mIMu/LIrdd9ZAIA4T3UfRV6GybBS16VG5LV9Og88q1/B9w==","shasum":"70ad473a85383d8f72cbc44ffd8a025e315cde65","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191125193159.tgz","fileCount":45,"unpackedSize":224453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3Cy0CRA9TVsSAnZWagAAVLoP/ArTx8B6bFsNjmGMP+uU\nLpmP1kqh3SNfI0MD5T5lmFhwKz1EzCXYPLZhRJm3hQ+0vrGcb8Zq1mc1PJ9A\nAoc1PnCGhU1niUrZ7zl5YBeWYLwY0XZ2bn2IYyUvNtVbCFOAWI/8af83Ez2w\n23Cuspw+y3YPGiOEj/BpiE0+YVZ5lTgF2AeFgI3zc8QCoPRcSYMloRzYj3EA\nyRJY9/4l5bcky2NIZSuTlvLoS7NydBAU0zRJ8KDD8w/+PNVJCUum+mAUqe5x\ndcVYpF8qklT2PzY1fWSZ56DqCtxIlKOGWRCSfO9PLAB1Qyy3xXPbNlIG++73\nFF9pYGiseLWrX23BQSHFuUun94Chcz9YzLJAvxCjeN3OVm+J6l74377jx7HF\nwCMjjowtRZi1K1lY35P3lLGLta98ZhOG1Y+XHeRkWkFyzDw6sAvSxan2Ldff\n+AtEEVVatQxWwxlxWaEGAEJPd3yH1C69VENhRBcT13bSIw/CgD5nXo5V5YY8\nBcjGkJo+fq0khknuDXE0wDZMX7g3danQd41Btv7+tqhoa2ECFbxTap6fKFnn\nEIxY2hkp3RaXz5Y49vb6kaUkJGyTsOxYvJbyPWcnXcchU2ee7R60PqvLb0y3\nCr7Q4rfPs0qjexseW5gpIlM3KsoByf3bqDnO5E6yYl2AEsRqRF59Y+AkviRU\nOwAN\r\n=UWgJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNWkri64HDWUJCuX4H4YV6SPVYoXsE/E1eyQitoZZCewIgQhJOgTUSUY+tHb6JuPH25dmFtceY4L2RXFUItx7YxKs="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191125193159_1574710451786_0.926765261986336"},"_hasShrinkwrap":false},"1.0.0-master.20191209163202":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191209163202","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^1.8.0-dynamic-goals.20191202211216","@atomist/sdm":"^1.8.0-dynamic-goals.20191202175738","@atomist/sdm-core":"^1.8.0-dynamic-goals.20191203191326","@atomist/sdm-pack-analysis":"2.0.0-master.20190924210620","@atomist/sdm-pack-build":"1.0.7-master.20191011105702","@atomist/sdm-pack-docker":"2.0.3-master.20191004184845","@atomist/sdm-pack-fingerprint":"5.0.1-master.20191006120505","@atomist/sdm-pack-gcp":"0.1.0-master.20191018215140","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7de402021c0ff29e50da939ff24bd50f88792992","_id":"@atomist/demo-sdm@1.0.0-master.20191209163202","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ZhzGqFkkFMx23wNr3gCbkphOujTWa71v0376eh9UNY15gGyM3VXF4X7QT0UJodipQPeiYX7lfPoatplzS3TpQQ==","shasum":"7c142cd6c108a5bf1eeaa2ce69f9788b101dc3b7","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191209163202.tgz","fileCount":45,"unpackedSize":224872,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7ndjCRA9TVsSAnZWagAAQlEQAIJQNqlFV/mbTjVO/GRO\nTcjSMGP8gJnSrtIPwcy+ubPRhs2waJROmHavDTZSQ6Tj/ve/Y6yMvZDSKf0X\nETygMRftzed0G69TqMafcYKmh64J1gr/OTXAudU/hutxgKGGwPi8rrFB3vzp\nXI2MCuJO4e3YuzdxcFR1LFh07k2N1hIMy4LE2a9gsvUAdjkqto+akVMklwfc\nfSfGS6g36qh/olPPcZgKBjlRcCyRS8q5OHMVJFKgcqi0J/8yZMaSdNo2Vc2y\nIVd/hLkkMC+yA2BZma1vEjwcgRtEqNbR+MPT/lrSZwt3J3wRSE5ItQjh9EDU\nnF6PHICq/Ml/G4LLrOrpKIkyr46tnL4VqdjPdW7G9JbXFqnbzGoulkqNNnUI\nG+ZC4Yoy1mbQbShj9Zmh+LDLWiGv5XnkZmGfk4qY9Qs68ksaffG23ZxbLxHD\nH/83BdFg+Lms1ZYBnBBcQoqTVPGcer9uZekYxGMRQ3hWmvqKdNg9LakfvFaU\nkUm7mVckTGqzTjw6j+Ttqbs2H8yMeNLHvXQ0beiRT73g+/dlAwrgy3xrDyDv\n4hbdEtjeFwEZiAC+0MYsymjzWVSS/zxVTtHvdTUSD+J4emTPscCv9kYITFOw\nS3tI7e7bhsp00FMGFS/pjspl8U3p6z3sqqepsE6ZZMw2lEgEd3ztrxrOJyoU\naGLg\r\n=edx5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFf1RAHiFE6SaejAwQSasw5V01HBTqL3b62zPQJPpeInAiEAkdNyqKPERWFawdRatp6eBxq2FC4xbsRiZvW5Ia8gtVk="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191209163202_1575909218741_0.5479660232901227"},"_hasShrinkwrap":false},"1.0.0-gvisor.20191209225751":{"name":"@atomist/demo-sdm","version":"1.0.0-gvisor.20191209225751","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191207163337","@atomist/sdm":"^2.0.0-master.20191209161414","@atomist/sdm-core":"^2.0.0-master.20191208214349","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/sdm-pack-version":"^0.1.1","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"2773f0d9d992162d31c2423952500478e55ca7cf","_id":"@atomist/demo-sdm@1.0.0-gvisor.20191209225751","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-bBW+YxLChmSevWhUxKDD00TT83Jm8+/ksD086iFsBIA5mtELUiG4G65335gmLjZGF9HV4G5gzEIOnQAsMbETQA==","shasum":"b6b70c278aeaad2b2137839049c2788b3b5ab60d","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-gvisor.20191209225751.tgz","fileCount":57,"unpackedSize":206096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7tIGCRA9TVsSAnZWagAAeWwP/0XRYrBflPHjjt3VZ+Bv\nOSSGTWN013o0bANSRAnFg2LuhRsv3A6xRl8AiWna+PJCK9l2VDSQHzGZeFy/\nLe47YnkyqbswduXBKIegfvER/Bl7SuEE/iqbQoG4db6PKhOyT2Hk7HDUYEkr\n4E52X90l+rgL98EZn9xyq6FYtmGA9G2Jf0OQVkeRmAwcWkFr9KTPKvGdHvZM\nvVaOCanjQnB6UkBbxwreTC7gJx3LYEX57sVpdM7Xf38NBBuzP1Z3htiVExzf\noGyKh5muwbbkxbvA8X6npDcYIOOaM9qon8S6ZyknB6pu2Vnj0vzx1hgOUkdD\n3MiAzW8Dl9f9xedczlvZxOvVj9FSUxlYR+ao988MzQUvkNLWhoWPHavkJSDa\n+EVDJkYMCcgKwzbBcrSxuol2Diohb98oQYBtuSEHQ75uuswYTb6VRMxS8Ibt\nA93qLC9Olks+WiqD3S33HyInshywxLm5mPd19oRMwmcaows042H3nyxCP+JJ\nZ+rYFEzbTA/0fF+L6C8jcxSk42pbDGrHNtHUVCIw8wk47U64lb+OvikghXye\nG+YYTTYJnxiUBEJ5RBz4p8mQhkahs16HwenOSj6rkB7ruN6sda8zK3oIet9H\nKPlhrmpzh7b1zKXsDTx3fPJwEpJcafzZgO5/5eU8Et1nQOSYsub2iavn91nY\nF3ZY\r\n=IsND\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlCOD0ZhZM9IbwqCaC83kfKfU9e7f/6wB0J/RNHRu9xAiAZgPExEomJk38A1vWbwfhu9hLzP8pOhbdU44Q6U15h/A=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-gvisor.20191209225751_1575932421765_0.9596311056608786"},"_hasShrinkwrap":false},"1.0.0-gvisor.20191209230249":{"name":"@atomist/demo-sdm","version":"1.0.0-gvisor.20191209230249","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191207163337","@atomist/sdm":"^2.0.0-master.20191209161414","@atomist/sdm-core":"^2.0.0-master.20191208214349","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-issue":"1.2.3-master.20190916025056","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/sdm-pack-spring":"2.0.2-master.20191017114359","@atomist/sdm-pack-version":"^0.1.1","@atomist/slack-messages":"^1.1.1","@types/app-root-path":"^1.2.4","@types/dateformat":"^3.0.0","@types/fs-extra":"^8.0.0","@types/lodash":"^4.14.136","@types/node":"^12.6.2","app-root-path":"^2.2.1","dateformat":"^3.0.3","fs-extra":"^8.1.0","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"index.{d.ts,js{,.map}}\" \"{lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts lib","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.1.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"7a2c48a0cd0299ecd551403fed05a9cebed35aeb","_id":"@atomist/demo-sdm@1.0.0-gvisor.20191209230249","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-B2eHSpo0HUgSCoEH4x/AvJwNq2yU1YhUJMQqSUGp0mXYf2VLrc96EqBGjT6BzwizSQlf2uqjwkBHNyPTr+iVWA==","shasum":"314f8b14d5f438bcad45fbcae830808ba1164aeb","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-gvisor.20191209230249.tgz","fileCount":57,"unpackedSize":205841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7tNLCRA9TVsSAnZWagAA2JYP/2KnzsmBfk4eUOiEvbT/\nUvOyjtSXe3/72ylE0UwGMfML+uzamzVyacHQicFk8+tu5ZyVwHdLrSmbIDrs\nYdX5DzaRdVSSHtpy1vd9hKawF17QpasXbNFohgWCzPqE0J2TH+QS8CcP3O22\nMfZkgU69RVnf6OqSGzhAt6JkcMd45pbVP5XPIEFtlSU6HCriKn+MMzxs5ZAk\nC1kHiHooRzJmzRjdYVxJgNWD81ogmTdYS2fE7VEgRjG5O6QfmfeXFjZVntpn\nmjFNHPDPcnFEq3qRoePJMRIZ98+eMYFlAtFvkqQ0IQkl/DEhgHjk8AL/Vv4Q\nU87QABY8H+pO/itremykMVuCLtPI0oneQf1ReM4qwro/7pXzEoAFzfPK6+K6\nEBWA/5SBtJRCluakRp2Uu5Yw7vGt5LVEWBOywwuCspN4JnVjh5KMIqovQ4yw\nmwLnnL2xtka3EgjzcGX3V5pjlRo1BF3wmCu6Acv4JJV8Ws4zvl0DKCUEwvt7\nXND0sArMbRD2aioJAlioZQTL7EVyZlvgT5P+ZwENNt7yBko0uYXxBcEwtJW/\nxfsQGV0T4fDg6jp/1nrCGC0eLNvHQCEvMxufp814/9EgPe4Ajy/+209S/iGB\n5vmT5SSCRLQ8YA+3SQQJkctspFz3gsu9yXtkf6Zx3S3WFGi4hKM45kPW1Nkf\n7WPO\r\n=mNee\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtHpmCS8xpILzfGVDyscTizrLsFbs/ejYy2GipMrolBAIgERh5ri/wEpdM6qQcZa6q0DtS5eaKfpvv2oWySQXe2rM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-gvisor.20191209230249_1575932746865_0.6494758657927886"},"_hasShrinkwrap":false},"1.0.0-gvisor.20191211014623":{"name":"@atomist/demo-sdm","version":"1.0.0-gvisor.20191211014623","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191207163337","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191210154504","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"e033c10969f5b8049eeaa88c02cc83bfe92a44c5","_id":"@atomist/demo-sdm@1.0.0-gvisor.20191211014623","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-P8z5ARs6eZnMB3yf/t3lAisiiHytJxYPDXM/QQ1yH7KLEDHHfpFX9wGu8/2OpoLUGxfJ4BXfL+0+B9B/9cyB9g==","shasum":"ba6f3b14bd89d4707b7b0071bec107f476875c26","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-gvisor.20191211014623.tgz","fileCount":22,"unpackedSize":174990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8ErECRA9TVsSAnZWagAANxEP/R8o5FieYnViXk+FZL51\nLfjXEWrAWa37GmgYmpNLkpnywcKjmPOC7qdFny6S96R771UHotTeBSZhObas\n/26p+q1W2jSw1uXH1CdH1b8Xuu7ehw96j4/7Drp/yqOXiPipPb5RyAuXe7vf\n+JflGxGsBHOhiopAvUA7cWZMTIi4w5XghjHsUY9jaxHGq9rzucyOy7mUmo/j\nPBWqMr30iAC/2qKY+tf5jUO0i71/gfITPNaWU1yObB8OsoN16LS8l23WDwOf\n9ZIZczoH6nzzgzWKhiJ5YLQBtqEfho8dbw3CD2g+MaUomH4QbvA0lDZ6+bdn\nhX/dj/DNxNA7fJX4KBX2HeQov6QMw62uwfnQOTFYBnhB6Kq+AIOW41O4p8Mf\nIYfdnAjhjZAvRhh9l28VdGocYIs8obayoyjOHfsrBkJfhLIRmTBV5p+H6kkE\nvIFbRikkak5Ipk0+Z3msisON2FKcuVIie0oB7RMZvJ981z3hvUXN65IBXqWE\nlVrEcACe5sFBjrRSPbg+531iarhrwQokid6WrcI7Xy2Eiw37lAIRsTFGDSrA\nIvSk6oOvq7m7IEqJA2lzstS0RTjWJJbazBoWI7XoOct6uFEtUNa6lYY9X5Vt\njoZi0Iu76Qw2xaauzIOftcJngk30pVHYjNKZIiz/jSEO52qd+QJ7ij+g9izM\nW7US\r\n=JTVd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDehdGdcRdxRSIvl92mqzGMw0waOoqh+jWkeBFKdVsrHAiEA4EzsW11SOhf0k47LSvgb8/6+u+9niSl7rOFOokcCXok="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-gvisor.20191211014623_1576028867407_0.1269473825559646"},"_hasShrinkwrap":false},"1.0.0-gvisor.20191211181654":{"name":"@atomist/demo-sdm","version":"1.0.0-gvisor.20191211181654","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211161817","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"eeea022eb8fdab71039739319a375ae5b19d66cb","_id":"@atomist/demo-sdm@1.0.0-gvisor.20191211181654","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ct7LwKA+zh36L8XSIamEPuza3shiQJexTDm30sXrEWNjhx35WX6iYmij5OVpuHyegonp+Th+7zhdxgtrS00PSw==","shasum":"683b644fce84cba84eb0cdba2d2159026e240e5b","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-gvisor.20191211181654.tgz","fileCount":22,"unpackedSize":175074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8TMeCRA9TVsSAnZWagAAAxIP/00+n9yLuDVQmp742A37\ncSdWR9ZWhq7tLlDysT0nqQbNaQAIR5S/S8lHC3gouUe0cTCeyiNyymnh+I9z\n7nCEuD8+TkO2OeF9aE7Mulf9JbMojWbzUuy09cZOPcbvAlHmlFcCh1Q/Vw+v\nMUpUL1KBM/sP+0z9BpFYwWIXtUAHGlG91Nv0RuO+Rk/OQeuwiv26wWvqPwVZ\njxMp7ly8mHAhas9gs99pzl9cjvZsH0yFjnLGkAZTUHcFyAUYj4vrf5HSQ/o7\nVfrROizangl1RIz+dfNHaJoMpktulFnRVHLWwZDa9SfKPieBfjgDQ3DOmDTj\n+iUeQB7kP51p6ZwrmNbjvy5JkNfuN/qpTZ/+x+esUlr22BYUoDqXa1tiRdQ0\nX34iridfp/2WrCr+vCbOPnNtCT2i9fWZn+wwRN6sHV7B2qsh1SVPsddphdrr\nxb8d+CXNUkx3q4wBfuiSwDAqAjeAQNot+TDeNz0ksgTzT3ZCFuiXoJqGxDzE\nEKLXB0x2+XnPv0isFLX/e5ALCFw1uyZAtmxhU+fmCds9R3snEniL6A0QoAGf\nu41nOkJ1NRdRLZ2yLvejDhKpLhaFWLmkU8dajHkfz4dMMa0BRXMfz/bXk09T\nPdqx68/M8Z9NJq1QW7HqN5pdfexnQhB6NH1XSmHpyAXZFk8C0keSQg5XE93w\n89tk\r\n=otY9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXooZix1HXlHcKm4HVaMFPRWIOiO5ZjJylYESu+kviRgIgYs6B9o8DV35M9H8uN4bGNVrt5Eb8hQYtvwQ96ze0zKM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-gvisor.20191211181654_1576088350445_0.6873009339187197"},"_hasShrinkwrap":false},"1.0.0-master.20191211182035":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191211182035","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211161817","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"774ea140a650f5ca71ecac73bcdf28aea5c60270","_id":"@atomist/demo-sdm@1.0.0-master.20191211182035","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-YW0kNSmcG2Dnj0BiwYiK2iO7CDhDqd9v1FId8qi3nY0Wn0j7NXPODBXNgJ6g+QargC2Xgm+02KBTq/vMX9bFKQ==","shasum":"9de4c3667f65be0b1021aa29af0343a81dc60f40","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191211182035.tgz","fileCount":22,"unpackedSize":160296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8TPwCRA9TVsSAnZWagAADgQP/0DnhxKFKdBic3/nhMcL\nfAQyq2LbfU+xByD+7zYhtUc2XOvx+5lxvH7LqZ5AZiyxt1n/2XZVA0wnCFkD\nxIf7DUuSKjmTR7C3r182MVfbvZ0ndS+j1SZqbWyM5pL+a8dExANSe7nqYPLz\n7ITwV29i1BY2WaO4AwPNaKLYXwfq4B0wa/QF/1GEJjxB/3bKiY3iUevBbJyY\n6Mgb1OFFM53XSuAq11a4f9K+ggSDFF0TKjx7RxPNHd6KF4sHVcLEzpHA0wvE\nKtpIdiY9tscs/o0ljFfaSYw62gd9gp9FRGHE0v1mk3m8oBKLcLqJfcz7m5Fg\nv0F9U4Pi2ABOhKBz1SSRTSRiLZ60jvoUGgqidIdHpJUP3IpexXuQtH+iXNz2\nm1JiO5wCtgT0rjSn9jLJ7VlmpONV2XRQlTdwZskCse7/DeA9CtPXlns+q0OG\n4iGIAQMI0CRLo/FlLOU1dltNHce4fiAsR+hjL08fygFjmpNv3Pr6zPr46ANB\n7RuVutEFswwUbP9Ns67SJ9N/GtYfUYTGlHH8HDZFXQc1DfWfRPhu9bJIqfZ2\nMFWISDPaXahpDF/N50EnSSchGmkZ5JpyBjHfZ4jU7WyrS8KmlnPvPW0XNoPi\nz12u0xVy66Waa5NMAlKfeB0ZpL2FM8CktNhehq+jB5D8fks/yRMrpZwsVR0C\nXEoM\r\n=7Ccj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGIzujkEO/d3pf/aSax6MCcl0vnnBmNKFhbxmbZQ/GogAiEA691uf0N8SKHMqkVLUx/xeRkzx8erwdHtN36nutRoAYo="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191211182035_1576088560322_0.27204729900412095"},"_hasShrinkwrap":false},"1.0.0-master.20191211200748":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191211200748","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211161817","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"842e2d9f9ec3adc3cd7b209e4a33e7fb5d1602ff","_id":"@atomist/demo-sdm@1.0.0-master.20191211200748","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-f1VK7xdTxFEy/POQPD7iBkHIPLYvyzZ8obnVBMFHvtKA4bhWc3rpmlGIFYShZWty+A+OXGZTdH1VWQM6aGs9OA==","shasum":"bd9c91bd4cd31762b95341b6ce51a58526418e11","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191211200748.tgz","fileCount":22,"unpackedSize":160296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8UzmCRA9TVsSAnZWagAAjEAQAIcaL78bnASuNTdv3L/K\nvTLGZJ2BehJ6MTw7afcB87s7oKuvTSuBeZS82cJIock1XISn2bOs3KHcxRqq\nstDdxOFG0tezCi98PdLDhfgN4cLtFwRWkKchj89R9ranfujY4rJu00Ow10Ei\nXY+R7e6YrbMWqSjX/4lzEwKEbdeQCoty3U46vkc4sDdUcFgnnHVDKckeFnhD\nJ8tzhYbQbQQi1Ztm99VWPt+EajR5SBdaCn8vF98dpyGFLc0qzfwliMewTQlv\nFKudSXDpxiJqBRUyFdNMeX5UTvhJr1jc1bianbqGsHeAROs5agpoIPLloThb\n8qIArrguEq3oT6VHZhOzVemDycQ3IjhUTmQL+hiee3SjJ4Dx9AAJBTkSGEYM\nkziXwAXgF1ZrnPKuE13snSYDKvR+ZM+8RMhcakt7QbGJArTFpM8TUywKZIp8\nk8WDof4gsj/1CqaO0tD8z9WPsj52t0KcgxqasmFalA01pC1eiI4Eexr9Jf1y\nlqXK1HGjOQwMU7uQWKliG7mn/VnEKajshmxFXfy6xpx3smZQOrHpOQ2uYvuP\nT/I81BVoXTyO9DPZtOQShd8jZJIQUKtnXJE+G+HWhFibNRlSrd2tJ4mHfQQV\nt5CMcPXTQrSNHt4wYKj7HlVQlL8iA0PR7X3ttiJDVBVKoNo+7WAAWJbmjXGy\n66Eu\r\n=cnsY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7OSJLA4niNc4Vy/ZQPyf8VO57UJD7mJbIIv3RV4NWJwIhAJRfrAd4nYjj3/jX6AuL+C2p+OxM3sOUbO5KtFEZ6HsQ"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191211200748_1576094950414_0.8958601422121186"},"_hasShrinkwrap":false},"1.0.0-master.20191211202100":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191211202100","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211161817","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"6c851003bcc152630446391bac27916c3e1d91d3","_id":"@atomist/demo-sdm@1.0.0-master.20191211202100","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-hzR113WRn8tKDfHT87cVJ1QkMiLXMU2kB3hdHDc4N/DkaG2T/VSDQ2S63i+ld74iGizDMjzOoBjGMk0djKOZ/Q==","shasum":"29771223e2f10c97b6f3e1d255e45150eef59532","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191211202100.tgz","fileCount":22,"unpackedSize":160296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8U/6CRA9TVsSAnZWagAAHhQQAIwZNUJLTGAhr4eQlb+R\nDDkZvAHub7rdY0mTMM8BS2vqtfqiiRObgF6n54UgrA7sql2xiwsTPngENTTs\nwXhVsI0h85X/d3qBl6t8zk8HL7eUlQp1aaOmWMUYVnl4+mMZsgTbUhcNcMHx\nIvg0B3zvvwrO3zMk6REKTCmXfsrB6OXgIpesktvr/zNOD0jAb5c8+2uJTT1I\nCwSY/rDk+0RWDWPV3+WrF78RpY/SYB2GWxJOxiaJmT05lXaz/0uc2v+ILCHg\nTVkplXXlbv5Zyel2Tj+fVwxhyp8at3UucNqbc33VVZaXIz9x9GCcOKWIqzMs\nCvc1kTAqkMJKdg1Gg4ISBZFRHKM0K+hOkLNHxm9OFqDnanyMazUD9z2niF3l\nS8u3e6HmITl4hF1WdgoY7eYUmvDuzk4obN1uXjiXXCwnrF+V+AZeqi0x0hCd\n+VxA8cbO5yf9jYj31nJamnaFndvep1ZxxZUjWPc3DYtYYjFt5L9lavX4QS6X\nS4IuPXuOJGj3UCgrRQFiK+dDIR3E2slHke1NvW8uWIkaHdafXpMg3zV6k34Y\n2P9X86Fl6cexcBvEmDbFL1co3i6tsqOKP9UgjS6mTkiC6jPkYeliFtAzSwOe\nPm+QJvH1EtoT9K2F2QwsZbOronEZgJaG40yRUPbfWogaV8f1io0FGCvJ2buZ\nQ4+7\r\n=foYO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKCOLEB0RjyKd4qFZVD5gs1/Kmwcidk5omapb7VOo5EgIhAPisuXei7R1da88Jbj7gEh/4n3B63o/XbzHnjeuu4FrZ"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191211202100_1576095738304_0.9122613344702657"},"_hasShrinkwrap":false},"1.0.0-master.20191211204121":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191211204121","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211161817","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1970b66114bbc47b30ef15b51dcfeaac8c618db6","_id":"@atomist/demo-sdm@1.0.0-master.20191211204121","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-uHNOqEF69wO3qD4ZZWjhHyAe8qV4SJxfRSO7qLZs8YJOUadUWNpt3uDrpcfARqGPsrk8GHHmsGW8keNx8MgQPw==","shasum":"443b49e0a7f94b32364fddd56005705a935d5f83","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191211204121.tgz","fileCount":22,"unpackedSize":160296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8VTBCRA9TVsSAnZWagAAYasQAJup7Y7zwXlPbLKSJ6CF\nZ1LMVwICry+7uOvmGMob7/Ayv8yQ9U0BOsqb0dwYHZYMa2ak/5xA60Wlyv63\nnS+YFGIVMIwScPyRcdGu0NT2YbJDfKZjyjGIoW7HMVkxfuEKsxEhbTpX3I9Z\nFplXttiwzp/wk2IbfZXpDCCUIuB5wthjShWDnyuuFvh9Sq0xJ8Bl5IaXVhVn\nwdZA+bepGPeD4S6C5G031FeUiuNaniuQKRjbRCqyR+4Veg1dTstKyC+GVFSx\nURHDjBQpZ39n9vjlOUn+YC79RFZ5ebxyMit89viUVR3eIvGG0Ei46kAYqpEw\n+KRn+/h7mDngg1Yd6Pc+6SOFokK1GR8zuKDwc/uerVF6E//x3A7bsHGDiif4\nAyJbcbszbh443VI78ESV+hQuKaIGYImX7AYtiS7Sve5byCD7LHSLn/cQlIR8\nc3RTm/VyBnvYGhsaUqy4GKymcJv6Ye6mvG3AnnddV92d8e1B3m8aKOLB7gFh\nI+4u7WwXMXmzF65iwOcT5yRuwbUk9figMbJBae/b+5BqcC7wb1dLn77xa/C9\nTs4In09nOnKXQJUXdHF2RjhamB7tkQBcb1TaV5JwDHHwO80wHJBw/p1l6LBw\n31i8PTw/0bsJMlkMq/iKWqQkUe8QQoFACPgKBkqOcjHF1GgbNAWBEjP8GJgN\n0E4Y\r\n=3uRQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpy+H//OFXHWLbklkr0ycXrTrAYW+tKVaMxbQkno1sWAiArEUQm72wbxRw8TZnAXGJt24uF51DlxcpsIjkhyEMJQw=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191211204121_1576096961235_0.8555832225862281"},"_hasShrinkwrap":false},"1.0.0-master.20191211225539":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191211225539","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211181917","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"9629ee3230c7007a313a20c340760e8bd1d108a0","_id":"@atomist/demo-sdm@1.0.0-master.20191211225539","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Z0k43OJwaMnjeGk6VofJTiQKp8p6oD0b/OsCPF4gJTpV2geJFK8UZqzwnCPmBRVFUV5PgfJz1rGsRYRcEw4s4g==","shasum":"356d70c9c9828ba5679e302af804987d83987c40","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191211225539.tgz","fileCount":22,"unpackedSize":160008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8XRXCRA9TVsSAnZWagAAaIQP/3ZDvSdz4F+v2NWm+72o\nTrcN+rxXsh30eDThN0GyPdL0ZxMmiMeYVhCfLEztvPd2HgIMggc/MDP+4uAT\nGR/tF6UjNTY0j18vtJAsh7W90QeaJeiWiIdJiRVTTeAqBi+vC7nXPPyrHkXb\nQZ3/PifBxIZHHQTiVYnEN1yACTuoFgIVubz8jxqlveGvSMaUDvdL/8SIxEti\ni/ZRF8/+7aaxK0ewWv+6MlrSRbl6Fogi3kn7n4nqCw419Yrm7uzae1zFxnkZ\nY+p3aZgNSchqlUu6+RPPTUytFiGH/pYlD/DnPFXv2fdczrmBXAMclJYM/bI3\nfOkuK4i0TM6UeKXBpRcR4B5St+H4J9bb5/iOp4wn0aWqMdLGOwtuO65L5e+o\ntJuRvNiwhnb0KAQQGqnNe+d1Sy4LFaDWt8vA2rhxSX4bYCLxDjWTB4nwmFM+\nw7DhqsCOAaItwDVi0bqJVpTIM8x7Eqan7Se4sj4nicBJSA0ZOMAwrYhWC2hM\noCG7FoDz16r9xtzwl3D/WPAV09XU2wlSv6VZH9Ml2RRXChnAGnMd6Yd4E4b/\n3/oD+AJymT5goLdxRC/xglG7lt2YxFAaVFBfNsnUkeM8qsxpcYF8Q3Yh1BbW\nbp2ljHEbijsDztwtFWpltXSFWfkOy5amA26Qp23+Nq4nE6bspmnAVyUWpDv1\nb4Rq\r\n=OvW6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCrcFlWI1l8HfPccygYS9WG0B6PDt2GOjOr2294rscMAiEAgimTFhkPrxiYQ0XnZgsUfHQbJUfrfBIxsUFz16cCF3A="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191211225539_1576105046693_0.8295261201122022"},"_hasShrinkwrap":false},"1.0.0-master.20191212133056":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191212133056","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191210214700","@atomist/sdm":"^2.0.0-master.20191210185902","@atomist/sdm-core":"^2.0.0-master.20191211181917","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"1.10.3-master.20191017202233","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.3","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1811e8e6089b6b7dadc997650b041ad48c06400e","_id":"@atomist/demo-sdm@1.0.0-master.20191212133056","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-7xJ6g9JVoulKUN3Ne55JX7SqPw0fG0z9R7RzocGPRsa56180fQj/jb7aSBLdbkZLiIwmmzPRF1fSqOKH9Q58Yw==","shasum":"add0d0d05d19177a4aa74e1545929301383fa454","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191212133056.tgz","fileCount":22,"unpackedSize":161641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8kFlCRA9TVsSAnZWagAA0xIP/Re5tj0JyXimmFpWlr6A\n8WFoykTnFQbizIZDqmdCtASx4oiT4Rd3lWymruuzaBDLJ8HRXoJ82EUbIxnX\nSZ32khgg2y8PbWE4ErTQkntk8HhCj8CPLNuLcKKoTU69VE5iVnsRrsgIrhjU\n9rxvitNlTdsv4Clu1rN/ftcXrnlTX1jXMPEaCpGPffPxxwShA/XIz430m8SC\nPXvtNozEAydZlGKEphnlpM8geXC7vOCuhsMVm2wAFKzPJEygsj/CbbECoW6Z\nAwYlCVLS8DoE5NsRVHNfZ+znHY6A+nqRj970oh8mGSidMnK+2HkFzl+Yl91A\nOdkRYo1HUK4YZ+1w7gXhIZ9pUunSSE254WUF2MHtO1EkLJOJpcxYnW2i1Tbm\n6cKbkYZH8aws6/2qi6pxkvsHnJ58HASLNJC5xsjBMPm+zymsJG1+LRw+2Gue\nTod4JUS06N04r31utDr9T3Fq/HH8A6Av4/mLYoKe5XJs9v3TKQByYwPhgSIA\nJAb5hFqCijlkzORf5MSH+NhmB1CvVz5TyM+myYnlOeZAgToLzetIQFC7UQdj\nppAsiHVL+wEu/G06f4uEx1zhTvYB3aWTZjd747mv2sIMu0jxOXAfaT7ffrdI\nAMj24URdpbY+UDXuoLdxocmqntSTzWusU5N2sNqlrXTAhBqnmGRtv3aErrUM\n9otY\r\n=kRoT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHiFzxmIWVwAiOl3cMF8eVqiH6WEEr9hg0bEdocwQ+ULAiA7qF80hUMIY3HIdIupNfik8OFF+wGhOERHHwOljii56g=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191212133056_1576157540661_0.4815261893466536"},"_hasShrinkwrap":false},"1.0.0-master.20191213153006":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191213153006","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213133922","@atomist/sdm":"^2.0.0-master.20191212173159","@atomist/sdm-core":"^2.0.0-master.20191212171845","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"^2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@atomist/sdm-local":"1.2.2-master.20191011215150","@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.4","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"51f56a52b710e52729210a3de2f60c744cec68a7","_id":"@atomist/demo-sdm@1.0.0-master.20191213153006","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-yToFL5Y6+LEogmL6e2u+1f61gtQDzUPM9UBruDTMhoLFAUj9IFQm0JQjeu4ogzXEfTETuJuIwVJV3OeaLWyxLg==","shasum":"447a8ea01a19e1b57b73ab29dde1322886f9d11e","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191213153006.tgz","fileCount":22,"unpackedSize":162030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd867KCRA9TVsSAnZWagAA2iIP/3x7lO1r1MLMl/V201+T\nMwU+BT910kRMgCZQkCefyeKgR6+VvJpvZ+BhGoGIMAnLU4tqmcz4MptifKOG\nXmCA9tuL7kbeXOgMNR+6DQSpzDlAt6Op2RAXjtpgEEEJe0m4I8SFDugha4eA\nTSFCB7Y4aD6Fr1brjYLsof0FcvWCH3OPMM6GTIiblC4PkNDU+Iq8TpwcV5T9\nH/18Tcf3etoRaWnC7wZH5yQMPykl07Nz5djSa50+jxerEonDTZuZf77lLXLQ\nsu9gEHLAVSvWFP5NlYnYQp/F+OgmS7RhQ/UdI8ATmGBMtlc1P5kmNiaxBZ3F\n9y3aHtak0CBamaCfwtdluJI7MW4sJ1+5EwRMvfnoHw17yuR54J2itvC2tRet\nU0Fo6Zrk7c0Ln85IlPgDqyZ0Xvf4b497eL1ch5Oxwwrlg2j4SQ5DjqfC/3ks\nVCLcfmCuGS/9g5aP+jBI5QY/aPqvoWJ7+ZSlWt2nMe4Z4L8avQHP9ofN9vy0\naDZEKzpjqh66DiQCGRnXgXaUPmOsbxvYIGIhSvPL3xtjZYcxC96GBOC4ZDLR\nQBe/JzryKnE/9v33r4TrxiaCmgQPXTAB2GmMnPRzIeIWkzUS3fhCVl36cNLa\nIsV6sl1bZAMEfZjyMRoEzbaJCHhJ/Qu23GFTf6rk3L/xAhVwsMvYnVygvkcM\ne+U8\r\n=w+rv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5MWKLKov3O9XGB4RvZBJzgPUQUAu1t3STgRvmbabliAiEAgjvs5JFtafjBABg7Qdx+Ah+f+/+OGd4p73aCjf3hC7c="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191213153006_1576251081820_0.7253737662004782"},"_hasShrinkwrap":false},"1.0.0-master.20191213185700":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191213185700","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"2.0.0-sdm-mutations.20191213145220","@atomist/sdm-core":"2.0.0-sdm-mutations.20191213161329","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.4","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1cc96416908c56b88c055349b1248d08c54c9ada","_id":"@atomist/demo-sdm@1.0.0-master.20191213185700","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-93xtap1c7ci5vAM6ssrpBH63JFnaiZlocZEJVoc4Y6V5BA3s6H4hM3MSSGvk4KijTqKyWaSEps+kX2mCttLIdg==","shasum":"97f53662b801392163479b019ef189cb76e997be","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191213185700.tgz","fileCount":22,"unpackedSize":162249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd899tCRA9TVsSAnZWagAAZ3AP/2EaSe+csfFwzX/+rW/0\ncYta3F5QZJGxiX37h0sztj+SaiXKauBBeSvNzNBbh0zhdQimfskhH5tuHH7e\nTSh7tBgGG5NJ5suieuhg12u/amYofZO28vHcUcAWtyVTuze33DtHEgELLnlS\nr58zIMabWasVyqnAYkQLx3kH/GgV0bQX/IPqBQA7hraGc5f+3cn/G507Ckwo\nnA7w073fVrcxWrN1wUBX4GfkLAGgE1ms6ESYe5hYdC4lj3hBhpEYhlC/FGhS\n/o1A5Di68aSmxrOQmaTLD16Rr1E3bk9sk59/mZZRhtd3zLIyHMEaaFjNgloZ\nb3J9o6w6JTwZh5WHcvirzt266Xm6Jy8P1ZI7v2BMWA0LrFgvELl6eRv+XuNz\nmF347XZlCYefuXB5wOv0OHsy6dGbo8beGUay76LkgLkvm3bPDUEY+qsDCyhO\nf4+Onfxv4o8pkMc5M/w4Ydmwf4ZQSY1JvYq55amsc351nUHi7pQtRJyBt6LH\nnh3hPrp8Gt9EVMBmrtELzsCOStAFWhzLZUxMKklv3id3S+vkNTKmt9wDquT8\n6CxQTtYFPCCAGLqjV0pJJqUsAlUtMNkOaJAnS64NWj/Yw+Rg0ljr+1l4DD0/\nSS2UogBQVTKxIw07G3hWEp2bouGiL/cfGxu9lngUSKn1zJd+cdp5cMffr1tm\n0J/c\r\n=LYe9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHuXnurHgkcMjxOdUNA/ZpC3o/CKndd4aL0zECydskjvAiEAw6/TGpeKunf9KW8AfsVaeJ/oxy10B+PWjpLZMd3I3Ww="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191213185700_1576263533075_0.42777991032024487"},"_hasShrinkwrap":false},"1.0.0-master.20191216211453":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191216211453","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-master.20191216201526","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"0498ed5f87d34cd6ac2049b2f5c4ac67b990aca7","_id":"@atomist/demo-sdm@1.0.0-master.20191216211453","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-Ko/A4v0521gPE7pWR4a5bgPI3xU66tRlcdnYdDPMtWsHSgdqk1WOGGNjqtaGe4216WQj1MFrj5DYMtSR3xmsXw==","shasum":"e1f19baa8cef04433a38d256abab07282c7796a6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191216211453.tgz","fileCount":22,"unpackedSize":162598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9/RgCRA9TVsSAnZWagAAag8P/3QbZL8n/j8WOfrEGaht\n4ef/Efmdky+8FM+fEM0o0ckJUqZ288uJMie2jKKJ9j3AWicRf9DtMOd3kA/1\n8t+HxTTZb3zuhkfitMwfKQm3F0kNO8Uq6P3ASa0JheRC/vHslbbfGBbmtsGV\nCzjh6K6weTV3sa9VXlQoO/IcRGgzPIZYcIBdaeTV5IhY/Y03vA0ACaPbNZhB\ntStDyc9qq9/cgnbN4Hx9tWLONH0/Qg2u5g76+Dc3XHz6iLhETd+vTiqzs/aS\nvtcOKPjjzlW871l7hYuUL+fcPZF9E7ibWMTgMMmgjaD4gPyJYA3mFr72Rsyr\nAhHdTSFRsfu0T1k+Vib4A8vGgWiF/yUBdTBPrKYxHuNW1iYDyYUNviHT7vo2\nnoUuLJ+V0z3QFSvPNXl9gd2tlFGyzqxNEyvYSj+65bEHvMOTWt1TXZO0zD3Y\n1MoJTYCICIqEMRqF4L47Mz1xdwGMUmGYk4rsGeQW0XwnH49d5KezHclgSUWs\n+4+/rG/4mykElRG7zx8zO1cUkSRWB60bXqsZI5SwCCDE3imCcaNGIpKsfT5D\nXSvoV8fTz9/lv0xhomUUm8u5SGd/y1k+a58mL+4KTeiBgHGdF7npRO3zNOhW\nNBJN5qaWaFo30BnXrpr95nXmYXIEpyXkBlRRzzati4dortb716PHPUcXEfOh\n5g8c\r\n=I7KS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1gRNFyRZDGuA5ISiXjEhNhlXmYa7p/MFmemhlsQH7gAiEA7IK2XSM7wbZtlC7mgT9jmfGGiDQnB9d0PNY+heWeJig="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191216211453_1576531040105_0.12455074173588576"},"_hasShrinkwrap":false},"1.0.0-master.20191217140954":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191217140954","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-master.20191217061039","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"117237cfa61546b1f73a7d0362e57ba558c9ab92","_id":"@atomist/demo-sdm@1.0.0-master.20191217140954","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-/maM1X72xmwlypqVGmkfheBYs9wEQVzbq2U8cjWOUvPPgcbS/4AFmRmJYo1fwHOOFtR1N5+QsImplQioHgQbGg==","shasum":"d5697e0840ff41a2e656055f662b1f58c34c9089","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191217140954.tgz","fileCount":22,"unpackedSize":162598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+OHxCRA9TVsSAnZWagAACQwP/jOjf7dgxYMaH3HBtoHN\n1MYgbE+MoeM50w+1thzkhD3S2bFSkKUE+9J/eld8PUBH5WIqeY2HxanlvYVJ\nJEdcj1gpkCP33Ruhcz/Wrn6HIFgPdZAx1jqFqeGmUEIfY2xVJxpDYWwIbm7a\n+I1QZSDUC5tvlORLguPqllvimeYfNmJWoBe0HARZxQ/0qqvFOLSuv2wqLgZ+\ndTasSdYWmR5yqV8/oVEZLGmVjvetlNUOXRF7B8zonv3bBk1yQ4VbF/P6T4ms\nHN0Bin1IpWaLYiJZCpQ8+QM7VIhzSg43g771/nMn0pytd5BRpb4z41a/q58r\nmYbYxr6JHH95QYm17D+y/FHZujMC3I4kJiFgFe2JDV5kSlB2tvfSrFwQhlRC\nIcBentKdB2sK/4+C4YXp48Td9jbXbdVIVulwE2xdpvjpKcSjnkFS483ydNz1\nkiPvWn8rpU5hHd7wP5OOyFGFbXepjjDTkZcccNYWJl/WRe6UPirdu1BQS1Pq\nFtM0ysxikAN3Eo6mR2gXw5DA8g1ygSBg2e/MybvN0sY5y4X980M90ibFM/QE\nNaDSq6IaQ43idx7MCPDecfdWbmp6513FPTkJdeEbBRTqYfdrmLiNH5U5UJUB\nUr1H8dYjHX3KQxX9mgob7HkBIqpnIM6QtBsixBB1TxQdMpOUo/RVJABry+jZ\nOcVH\r\n=jypu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcg/427ThiQp8bt90I8WwoLNUTFgPzEonZ5MuJIhv+VAiBCZmftpyFuMcJYGDTQnTaYve03NtndwJdoUuF8HeDxag=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191217140954_1576591857169_0.44625969294776113"},"_hasShrinkwrap":false},"1.0.0-master.20191217160055":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191217160055","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-simplify-k8s-scheduler.20191217152516","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"f923921034679f4893dcc4a71cafa59a26703031","_id":"@atomist/demo-sdm@1.0.0-master.20191217160055","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-aHVEDnssE3MQJAeMyJHhpdN6oX/pFEBwcbmtqPtlWdSyMdKAcMVesc+pXSvSWpNgbhuaOt1MUnNCx0psGxxFIQ==","shasum":"75da0e9ed1d6a6de08ac98e79595135d50f6eb51","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191217160055.tgz","fileCount":22,"unpackedSize":162763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+Pv5CRA9TVsSAnZWagAAkMQP/RyWUqJyImU89IcfiqCy\nQ3MXTlClC+Qg+zpfqe88PU3SRVj3lFec6Hac3AbFsvb4YjBde6OOk6z9cf/n\nf7q7LzGilDgzON5QgrP7oPeyQ6VkgjYT1csxAWULqo2JdlUytNtKYQ3PyTn2\nXWwLDmFtQ+wWucOS8xrew6z9ubpRaF7OjQyfbxVTirQ+W0+UJ7YS5SBnuUO8\ndiCsOyL8j1YwNv0c/3ne1BTwAc+a5IYr5fQBQvFy82bDxwE2qoEPQ2pFoqal\ni+udzuTzEwTb/C4ZCw9FQZO71R9LfelXjbj1vpj4HnyLd6MmG3h1EYlt9jLE\nTuCxvHxaMeSbqXofZu9Nsl+sebs0/2VpidcH+2zgytJzbYhxVOQM9T2A3GPg\nCuB7yws3ZBu8wy21GwnnJLIdnNx0hXlZ99fPPTusAHuFLfQF6PHtKFoCQAqC\nk0HH9SUfrqEImngjpMvUPC+rLBlRoM7h1P6fIVvHjPmxXh7zK2FWPjoiPvus\nrF34Kt9goFx3oY2d26tWRl6vM6vXGkOdwM8h7zH7kaYK3A1XV7AJkd1ttzXt\nv5dQE0NrxRTtstFb7O7781sOGzsSgt4z2wxLntKnTv5vzeYzvq25pPS9msBp\n/lGLBaK1W+rREI0YTtttIYatqHK9UDfTKOaS3NOhPULDaIhsRF4H9ZLByrHO\nTYla\r\n=sYa3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKEWDEOVrhlHL0YFvOH0+zq3gibxbpJOa80lglc1YQIgIhAKNllSPCmkWSIWPVeALqClPSP/WIToPMCoAdrWrpUx20"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191217160055_1576598521009_0.4923245549170756"},"_hasShrinkwrap":false},"1.0.0-master.20191217161548":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191217161548","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-simplify-k8s-scheduler.20191217160904","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ef8515aa229d9743e28623e3308dd320db94e868","_id":"@atomist/demo-sdm@1.0.0-master.20191217161548","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-+NPzLQnr8QBarHxdQDFgYWExzaG5SNZYSeb+jz7NHLmYTgWIHVARFrOzodyQ6ytTm07B3DN3HdszDjdap2zAmA==","shasum":"85a487abe550482c6867748fd976a37917b971eb","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191217161548.tgz","fileCount":22,"unpackedSize":162762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+P95CRA9TVsSAnZWagAALDQP/AnyjC2xbkl4INlQcMk6\nwi5R81Mo3aTX6HhkPxiw+wNlEWeBeNrZnW/E1w6XHMheOfTaUSB3O391cryj\naBrpzqhZWG3big0XxDCD2xXfGOnE86zqCOTbxH6wmh35AbqThx8//OtqTPsH\nXILGmtv0lRuViQwSRIlD/LuBzs3m6+/9P60dmbD3wWHxf27WqUN6JZGgQFv/\nbKdOTvhh6kcD/Hv+SKqisQWCHN8GD66tsVRhqdqxQao5f4rfqgveGzUvcFUI\nr+Nw9CO2I4hUVAr086Kp5FEEcAZalz6SGep8Pfl5Tzdt5IbjnO34JE/biMJ9\nXxDyC/+PQL/xYWEm+byVrxqMDizCmw/N3XIkhn0nlmUoKBInJAk5pCtRE4ah\nN7Hc7ZVobiOpkZm50e3b8+0wGrUI1GnaGKag4153QVQNvYeCY6cpXBAl5EWo\nPFpc5HSIIXxdLoJXdGOzgYcSRqTD+DGevwCMV3V6st5g8QVIJ90ftGwDWP+N\npNl+FNh6q1cGJRfmQ4RJO/ayaVvcTVJIKRoiZxi2V3HGXqeDWTrgmY5jOLRf\np7HBxsZp5k8jUzE/V3M0j/hU5aiPpAl/zEp0EEFrNLtN56jkvoy745QFRlXv\naNb+X5uvwav0AhxdxjE0JrQAlcbC+ZnDpPF4RDcaYvaGpvIWyCMzf0OQSYRX\nP7Q/\r\n=oSOK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIActpr92DZLUAmflyx0Q4BPd5EAUTQMgXoi/lBpXgh/UAiEA3NmStnf6F5bPjSs/fRyKgVF61u7wBLH2wKfgK2yRDDc="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191217161548_1576599416944_0.7528945074572162"},"_hasShrinkwrap":false},"1.0.0-master.20191217163329":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191217163329","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-simplify-k8s-scheduler.20191217162734","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"62453a1677a124a54b21010edfd617a7f0a86a2d","_id":"@atomist/demo-sdm@1.0.0-master.20191217163329","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-XP23/hzzJXoQ9xz1SoXaWtwiH72KxaNj0BD+BKIOzcrIi6Z9BsmeWj1Rt535pBcgdbdwlJHdmbqfVVgYlSkmiQ==","shasum":"27db74b607ab886253a597a60330a32c9e7ba3ad","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191217163329.tgz","fileCount":22,"unpackedSize":162762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+QOeCRA9TVsSAnZWagAAk5YP/j1iMLH/45ztWYrPk65U\n6ZRUkGbmx9bnpaXIEL4FMyTOkv8Zd3h1h6UyZj7WQEcnQ7vbgrsnrhW5by0H\nx6UTUF/WdlX0sLP8Gko9XPoLjP3LiBTFZ9DytRHn6+XQ+km0Btc23ou8tdUW\np/x8TDGkYqOOn3EHhS4lzm9zQN2wuLZKBZoetB9If/1spcuWm7nDZdRzS8Os\ngtjU6yjd3htEX19Vv7sWa0nETnBiuT4FWEkTXaiOWaeNFV+Lumm1VyZFYeYs\nnwbDkDxBT4/KIUC28fpM4Bb2zOdu7OiTkpQmnBMYkI8Qdl8NpDfUifAKWqJZ\nTCRo1TmvsMjsd7OQosCrepweef+jkL7PwrK/QOckT6IqNBJ8rGdtrf82E27r\nwpAckZY5ML5SqQNSYbHFAovDYkXyVDZOEL7f/jMYu/mCdfemXNaj8UFLkVNK\naR2jglfwTJM1FXuTXEq2HR70WnyVZDZXWxgJnKfRpzSVoyuDqKpmRPqjfqQD\nLZIMLOsivDfbZsQQ3KP0n0rr1ag7cWNzH0OQ1EgSqhn92sBY6zuis7pBA6MB\naEYWOcXmWrqZAV9/jZcHSTpXDQZ5Wt3zL4VLnjOjiXKRNiEfCy3SfTgQQi4H\nxpzL4OUPo4y/meEwSOwn6QbrXlwoHVQfJx+MYC63f6q4TcLCsmwSsQtZiGG3\nLPKg\r\n=s1rE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMRuVLgnWBjNBYr0KD1FPp5DEpCq759jrX/OOlDlRrWwIhAM2+YgCiWVTdJjYwGCP58FJ5qNdi06rFslYwkS1/ShCl"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191217163329_1576600477732_0.496794587024477"},"_hasShrinkwrap":false},"1.0.0-k8s-scheduler.20191218195312":{"name":"@atomist/demo-sdm","version":"1.0.0-k8s-scheduler.20191218195312","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-simplify-k8s-scheduler.20191217162734","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"a4d555e7b1680c05d8117d259d30f2026fabdb8a","_id":"@atomist/demo-sdm@1.0.0-k8s-scheduler.20191218195312","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-J6kdOzg95NcLJrjv+A0Df+B+74TXleVBXzisdbbY5wjNh3XvYDBM1aVyL9fDiy6HMQFJ8bTLvJA3q7acOIW/zw==","shasum":"64104356d4b9659eed635e7125035a6f29d4c0ac","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-k8s-scheduler.20191218195312.tgz","fileCount":22,"unpackedSize":163997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+oPnCRA9TVsSAnZWagAAlvMQAJldS0ZBDtzRFp4uyEvz\nIRE7zK1mkXQ+BIR/Gz3j3jBneR4X208oijdJ4A/PTSycd/ZgF3PyRh4xky9u\nv3+MAYYAu+NJnC0R0ahW8mYRsk6FJS0v4ig3yS3obkdT3nlZq4XX5BRHHLEd\n3LZBoZRdIhqNu7AInEB+b2CurY1VviJqdg7VMI5IKUwV/HLa8hPXHOjcwymd\nh3MzZkwM93DGCLJgFEadBPz6BmCmIJwvL5eexnfvD8WOBOlz8ikj0Vy8f8Md\npN+R38u0Q3+UPqURPpTGw6e+SQjpunUwZQF8/UXeHLaRxFa9DK6kwxlb8ZoW\nzfpeeAJ83wYunx26WPCLFvqVDTrr29KyHN0F4TEhc0xs2HYLbFV9lA1rHFSI\nTO5zWKAtA9eLIJkGA1OOZ6Kf3HH9IXZCQ7fHcIwYg4qJBKURY4BJdc+dSgCj\nyUpGavNYSN1f62LM4xEllPa0wE3BWJ8cBmXT71gu40pVjNQ+VkcGoiKbK1XM\ng2DkCnsWP2IDUfrwGWEAMoNsvndojGU6uAZlywVloZ34s5vq93RPNQ9xj6+v\nCQzMdE5ElLJNPvXiQpmZZUsjtB2nsND8DJgOgCiZop7/i/EFDGzCgEtEkk2J\nIOtEu0zlApi9zs7Z+spNI3oT1Xd0kAqQ2Km2S9pyis3/UFED4lUa7l7qUvV5\nrRag\r\n=PRdg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICo5BkjqYpsZilyns+zWXmnU0QX0XS9y/9OLLn+y3qAMAiEA5ddOshRtxxuRMtevJAJVdGrlm+9obeTtDqhpVHtJ1DM="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-k8s-scheduler.20191218195312_1576698854905_0.6986191845936478"},"_hasShrinkwrap":false},"1.0.0-k8s-scheduler.20191218205057":{"name":"@atomist/demo-sdm","version":"1.0.0-k8s-scheduler.20191218205057","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20191213160252","@atomist/sdm":"^2.0.0-master.20191213214023","@atomist/sdm-core":"^2.0.0-simplify-k8s-scheduler.20191217162734","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"15b0f66eed123b6e33fc2e2cb46f351e19980347","_id":"@atomist/demo-sdm@1.0.0-k8s-scheduler.20191218205057","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-NZgSXLy+nyUTg0hFHzI1UfU24eDvHfptZNJJyeY1TjQ3UUQ6ntu79AubHu0z3L1nrq/+FWls9hVdNicG6RFUMQ==","shasum":"6e90f980d855b879fc122d7bae3c81ac744d3015","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-k8s-scheduler.20191218205057.tgz","fileCount":22,"unpackedSize":164008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+pGUCRA9TVsSAnZWagAAhuIQAKE/xq/VyoFYFxrwKR8G\n5BjVBh44f5ngFLQT/E1dp3/Qm49X2QHHDf+Jq3oH6Nuo9EwisfET7e37AE7f\n7ex4bNVyqfVrMI6RNCykPESIukh9mZxKW2osyrwhTDOG/eX9O7qskU83f72I\n75y45w8AXCEXk9Q0xFe2d6zW7SJ2CyOITVe2IY5FoV2cvueo+X52Ru56VVwK\nyvds7HHfVwOEIX3/fWTljP6jir7cYhU/DFssYf52ROBh107AuInQhKnNOCGH\nSzHo2LPTf5Je6jsq6F7MMr3weW8XPYP9F81fECckfwTt5GH21LIE+A6iY+ph\n1sKbrnXV2gL30zLiyy87Xjeetnk3GD+7We6grxv48AcFtCQ3w9nxTCmuvC3q\nBEpgSew2EUa2Wa5nfA4ZyB5cklr6/+TwmhTrygboJr7TI+HUhaQg/hVH3WVF\nXtRxCwavyyWukZyOq8pH2EXoXj+jLiYMRVqKfSoh3WdycF5qLWn8yNjZM0wg\nQ8aoktQ8ggCgfdoEfh0a1On8jF8Btvc7Js+ABDtOcQZEAfGuFvdE4b4H98A2\n0dGfJ7SPlPfoJ2hCDBjsqUV5tbehTby/Ux00RKBkfEgtHId9+ozWk6JXYJVP\nxwA1SerdbCIgjodws5K5BBMCuAblAD7bgzY810VThlX4rylEW/CZVps/a+Ze\nO0VY\r\n=reM/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrKX6jz7mG5BRZd69bDwZuQ3Ktfahk0ThI7xzDpGywfAIgPorUMWhzPXYB+Qi3xRMA99yRKZj9kLWMymjJUMznt/8="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-k8s-scheduler.20191218205057_1576702355542_0.7972750551256611"},"_hasShrinkwrap":false},"1.0.0-master.20191219074708":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20191219074708","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"2.0.0-master.20191213214023","@atomist/sdm-core":"2.0.0-simplify-k8s-scheduler.20191219073826","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"80bbb5c565ccd812907e612b87a12607ab5d288d","_id":"@atomist/demo-sdm@1.0.0-master.20191219074708","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-7YKGqOVerXvLP/NrrJQB2OQ1zC3q3fOsZtb0IjJ0J//mhUrYGGHtEWdFgIQf3dJlaQ3WOSq6QucZkAiuGXm75w==","shasum":"7dcd71e364474caef2ac641c1714975ceb9021f7","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20191219074708.tgz","fileCount":22,"unpackedSize":162760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+ytHCRA9TVsSAnZWagAANGAP/3INj2jIQQmIDC6HVxwp\nLlFms9xVxQVSf0dle05S4CwsfK+TvOBfko3GcGJiyftqZUMuBv2xX782ISLd\n9OXfocyTSgqwVoPLVwCo7qV87Zan81yppccCOwcIPm/8yOm9IUhIeuIhrt9K\nBw0rtKITP/cLnXIs+s1dQ++7YHFfOay1fdRUU3cTZsByxZcE3RR6uL6Xx7DW\nC6NQ/dukRL9xI99NgqrYNqt2mNrPwjqOXFcZ4W/Tfsa3QelX2Q2K7RGUj3Lc\nDCdnX8bY4tNXi3qcrVHzcY5tMVV0cM8GpNRu9Bjgp9zkYNCw+5q5bi/GdVIU\nASqtSIJqYxJ8WXzQ3hpRQaUI3FtCvyKkojr5TrPtz+FN3ukMyM4XTWX9udTd\nt74vVj4DMYNsmOcUJ/u8KoeG+Q/wwfuRL1RUqkdyxJEaDsJ39ujblCz4R5/J\nOmZatBNIbsXfOlCL0AfJ4oD/C8UhwqVZYXv6+UAJLWFlkb6/z97ycFVayHt+\nbRpiuVA/LYyT4LuBraBXNtDh33nHSSGerXkaL4uPjin3G9kcyk2ARmW1uQyX\np77r21TCyB4agbGnH0irA5Ex2rwBCyh3YTqY4VHnMeKNcJoIYFRGTD4kSPyl\nH2svChrVlKpBCEkxLomaLEwKEZICSCAD0+O3LiK50BxR+Iksip3IymodSzr9\nbHqB\r\n=b4PN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1eufPUDKyoqH7txRGo8+Ta8MZXjyd9i4uxVRguRdbLAiEAuLm9bLPrcMpDWC8dtWvzPsTVL7AGVcgeRJULrXjJkAA="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20191219074708_1576741703576_0.7552234820542238"},"_hasShrinkwrap":false},"1.0.0-k8s-scheduler.20191219075842":{"name":"@atomist/demo-sdm","version":"1.0.0-k8s-scheduler.20191219075842","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"2.0.0-master.20191213214023","@atomist/sdm-core":"2.0.0-simplify-k8s-scheduler.20191219073826","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"f0e4fe665226b6e99350bf4634ccb7dde1d4d64b","_id":"@atomist/demo-sdm@1.0.0-k8s-scheduler.20191219075842","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-5qoHuOyR+RZXFKl1qen8HXyZZTH2hz4TdqxD/AnJI7nvOHCL3Qsoz84Dpogo1jEtEcXrCJrJYLIJsUmbQrfKKg==","shasum":"2525ae1b465baed544e456fa14f50ee459c2eb56","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-k8s-scheduler.20191219075842.tgz","fileCount":22,"unpackedSize":164005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+y4vCRA9TVsSAnZWagAAkHIQAI6TNijLyDP0+sezvUrw\nLuL4PQu2X0VSan77xZ5WbR62+i3J2Hwc7kjltLPPum+/nmOTZyzv6ZqHtMx1\n67NfX+bF9TXgL6Srnfd1N1qwvH2692h7Q3Nje8nOv2eH6Mz0oWnQtWSmBMdk\n7Q+e0s8BCfCAu3BOwbmmYxHRFe47mn0J0O7Il1L/yTbTv/Jf9wa5fgm990o4\n7pFIIp8XxvOsP2ukYgHU3y1y9BUMQZTeGHbFkk2MwQSzSzbL1DvqN744OydJ\nQ0tSpJ5Z9leK4KbI4DyS0oXXGfOTKWa/HrUrQAfxMxwHEPaLP0GV3oY0eU1n\nTO22i+tgiUq3SZGSo11FWaGN5afZBsjJuW66NM/Al7PBLcW+FqipannhmgPO\nfTdjLv5Pda7cifOeGVhUNVwVZAMGi0q391k1omgK8dkPC1/7xPU6NtawKhgZ\nmd8uYICORSJjwkmfJimfzr0hnu0xsI3BChgkHsESXEHWfVri7XKPw5724f0k\nqOmNDI2VrztKDgyyRX9Z3M335vslJSRjnOrTW5QAwBFNuS8XdCPxMYyIQmoJ\ntb0kYv3NUtaoCiAVwZsI5oHbNU1/OnLkAvbTmDK0CaVMlmb+k3gbIbmGDcfO\npuCCwRbijthwHz66b6ntpI9A8rW+Zfv2tjK6jfVzYdWcAmCLK+XieMisXXEZ\nf5UZ\r\n=eQQZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwh95pI8/640Q7zKEh9FnkYXqmaVCMaqMHZPKVEUEHnAIgO9FKmJFXNDkNcw+GRBZVEherXapMBxUnpvlkbMAToCE="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-k8s-scheduler.20191219075842_1576742446709_0.04168967543481639"},"_hasShrinkwrap":false},"1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018":{"name":"@atomist/demo-sdm","version":"1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"2.0.0-master.20191213214023","@atomist/sdm-core":"2.0.0-simplify-k8s-scheduler.20191219073826","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"3b5d72b9375f476747224d7965b7feb719bfd46d","_id":"@atomist/demo-sdm@1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ny+gO5t3ld/Ket52qEENU8uZ+kaTO/UjnfaHge4Zvy1sYSgtdWylEViWyXunjKea77hRg5ZXck15vqu0JT0Hxg==","shasum":"5e0b332f2059200a080f1233b24fa01fdcf2eab6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018.tgz","fileCount":22,"unpackedSize":162789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRy3jCRA9TVsSAnZWagAAf98QAI+1NvPnKvBYB1lFnBLY\np+hio1x6eGlKFuCprBhepmivQIiMBqdsopjd/fEhnZ7qHN/UpjaqWhihN7yQ\nGXlUkenWABZZUJsmrdBMbUSKHQXWneYgsNCo4PTlfdE0l1p6psOaoVUlLg8N\nl2TXCEvCEW29ESCEcQaOqJwxoMbA4sSwlMzi/RKNAaV4GqltnDJKwMJzd/NT\n6MFfaZl/fh7SFMjW9+MXjFYZxxogsSaxEVhqi7rNo+BaldTwe7GNH4U8G80I\nmZYsqd9n631FiddQWDAtWvaTYMfqLExbNi6UHA2KYBueKL1NMaknmwm+DgZe\n3+wFLCFnKiHztMxrbykhL6EF7yR7mg3xfmuA9j0Had6U4V9KkDCibF68t35n\novrlV99zi+tx7Cj/ByE8XWzbvPK5OoQ6k34grffNBiMeMU7b1UnDUEMxYE4q\nt/CS+tJCFgsWmHD9W+Q3pdKKmhAtzsYeAHvow1AYnkNZKd1L0sVnP6myVnTP\nxRgCO4BhElUuM439yrv9vacUoXX8bKOWV7VMNiX+gqTJPem1PIQ4Y8uONgcp\nAQkYY5Ii6RSd3iDMLoeH9b0/H10Uhazs04Ui2BTMyH5agA1c6oMN+sPNmov/\nNFdDgRdVs+K8AdfjOLc8X0pmDrT/euCtD4/5sYQOu6hFRU0x70NLL9H03ngr\narzg\r\n=PNvs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMLQydfieec/a4B7m2NfzuyZ6x7RRJDvwJs+iBFnVtKAiBhcxUjKI/J4j+nqZvU6cWPELAiFObNZ96mbd31dI+68g=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018_1581723107320_0.8026568565362224"},"_hasShrinkwrap":false},"1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103":{"name":"@atomist/demo-sdm","version":"1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist, Inc."},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"2.0.0-master.20191213160252","@atomist/sdm":"2.0.0-master.20191213214023","@atomist/sdm-core":"2.0.0-simplify-k8s-scheduler.20191219073826","@atomist/sdm-pack-gcp":"0.1.0-master.20191206224938","@atomist/sdm-pack-k8s":"2.0.0-master.20191213151809","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\"","typedoc":"npm run doc"},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"99fd2bd601e3400e0b3fef241778f7d789437930","_id":"@atomist/demo-sdm@1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-065QlYaVNgsrzMUmOKpVPJYaYP/FaCT5WxcJ7GCeGvDOySIqn7G+H9DEUOOKfKH7CVRCGV43JCWPqqjV3Cin0A==","shasum":"1f9d2fa6266b2b7555c6e994810ee1a5a78afbb6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103.tgz","fileCount":22,"unpackedSize":162789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebbIwCRA9TVsSAnZWagAAgPAP+QCuw+V4LcyEZk5C0S/u\n7xagp9sRdGc5UZy6g4B0RyOUm9vc1ue2RiMio+ol6k4WL+avJV1kfMex2d4K\n6s6KsQlDfphf73tFcKT8okPDot9XLDRpT5l1ibGPP/z141tjTKWiTgEzsrPW\nntXAbw8UOd6jv4iLKWasqFHj/XAq2np4Tn5u0yCvX/F/lHUaeauIkMK87ll4\nCRfo2vAzpq3Czdil30x+jHbcfPUyBWn+RWD+XaFRcYz+/Au9Kc/5k8wzeV4e\nHNgi4O9G/qcQstQ8sdT2bAv21c/rlAib3fL5XIIL4y6Dh9vJdMIS/YxDayAe\ncoMfwz+KESxdi2zaKqQmymo8lw3KQr89JPZpJWFtUlrjy7aw2qWzBUXOhhl/\nmR8gZnkbhUqCWNvpJEi1oID5p3+IyPNTuNcX1WkDBu9JGZv2nx/OIjH7HOSN\nlvGPpBk4QMv3upgHRULJuLjLID3DKz67M9W1pWgwUAPPYikgvqkqjRGjaz6+\nDqVRv5hTwMYbqzg8vQYGbbxbQXJIxL1otQHYxsGt4myUWpbdPbECDdNy/+lE\nazWXqjC3a9kTYmLQt5EVkZ4GWr6lmAe6qJQaD1wxj6iTzZfyAPYFnjEVrcWZ\n7H2HMhGjfl3pJG+qyp7YjhC3CEjnjW6wEz+Jz7A5ZnuC9MKtP9iJ96bIEuG7\nwhAy\r\n=b78v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChvUGXCOJXjCNP3IV/q6fJ8tcvoHovzOGZH4ltOBUNigIgXqRWbTAqsj6v+RJDxY4xnMrQBJyDpqgIqrEB84WxtME="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103_1584247344521_0.6939533285488961"},"_hasShrinkwrap":false},"1.0.0-master.20200416204903":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200416204903","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"e8ab0e1387c73d031a7d52df84c32357b84cf5b3","_id":"@atomist/demo-sdm@1.0.0-master.20200416204903","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-KRXWntBM9dcTI3JyYITb6M4i+Sf1vU9PKtzhF1+F/3RW5YjvNruLUT5QsVZwOj4vQRoIOjRNM4hczjcUGwvj5w==","shasum":"5d86fd72eebc0ab57a8223a1cb39a8b40b652fa1","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200416204903.tgz","fileCount":22,"unpackedSize":168983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemMUFCRA9TVsSAnZWagAA7hIP/0MhR5C/fC454GlVPdE8\nSJuF2C9FslSC4ImBeOclTY85hmC5fQyXZm4NGI61mdzg+jKFhIYB06xzsEfy\nynCgoknr6hny9C36HhN1szt0vaLKSAKQDcQP7tiI1k9WnEhbqen2c0bD2Yy3\nLQDpPUhy6cpLAJ/TuA1Q+aZJT1F4eY4j247yijti+LVzCwtZg0BHMJ1zCIng\nVLJ7v70CLBrO29Jd/6jkMg0Gc3tzkIklfnLBcNGom9ZAjp3m73OIOTU7Ct6J\neBBAVifDCAA1wsYxL8rkwfA8DpIyKgQuq59dLF5XJNTj5ua6JAzcP9rg8wa3\ndzkuMgI8wsw6hHT4HEDM+YZlb/9uGeG33QMBuLkgCEPzPZ3EvaRpXnmp8F9d\nN0CPuyC50C65dJUPDc+4sLAx+93sG/rkNzsAHLBTsu00jyho/Bn8MB6om4mb\nxb+i/ULlznIa5RS5fjucP0y5bYmloqKJue9Zty4De9TJ/16r+OcfD5L0/qrR\nA/dT2Mb30mkPMgcdK3ua7kT8RLzqC+uEmGwqCbHiTuK8OGzw0NuOUj50NC8a\n84OG/nmZ8ddm0TJWCwrdtOu/ANwsrUC52Ad4pzFoJc5DtQQDtFI1jrFbV2/G\nG9BVVvMLbzTc/7sa23xuGDeNvRGh/q6TGyNkRDG2YeVus9XFq9rYPr/9YS6P\nXj+X\r\n=+6FT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMJwWo8NkCfno645nia8YiCEaUMSllzk6ZAscgF8PYxwIhAInqtmQYNmVwm4bzRV4DcYIQNS2EhVb2YPZehxh5zEBb"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200416204903_1587070212780_0.4041538111131069"},"_hasShrinkwrap":false},"1.0.0-master.20200416214306":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200416214306","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"90b40f9dcedb6f9862f556931c53c2e14a8b514b","_id":"@atomist/demo-sdm@1.0.0-master.20200416214306","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-ALCCuW/GOZoR6NJXbffVbwmm6uR/6jeh3NqrmFvLqNXVTekeJRZnAaYvsAiyWLTKlolO9sS5LF4NUijujf+cPg==","shasum":"4051eefc05c2d7ae24df5e83897f062c1e8494d6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200416214306.tgz","fileCount":22,"unpackedSize":168371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemNG0CRA9TVsSAnZWagAA/aQQAJ+Qgwh8pKFsnrDRkty9\nnYBeqX1+XJrkTYwEknPdNYD1VHGXT09funtLDboIQxsASDWCoGYGKqtkaFTR\nvz/qzHDWkSnX+/J6S6YMkeH1HohuEe7r0IF1sL9leJcsUMbvM9Ur3uwHoszO\nJDjsYOMER7sMZN03kdcoZivrbprPw+nrh2FeSyyYfS2UB3xT4FKl+T/Duby7\nroJ/ZA3UcR621ffHUzhVT9uCk724gWIjN38yEpNMCnmJvZk0tU+mnaRHeMq+\nj3Uc3us5jkxBqu9D7HZs5aQPi5DZgSIyb70wI84NZlZjcv5AwbGJ4XQbBldT\nMZbkwCjN1W6xgWZ/PRu1fv5cigZKD98ku9YpF2wk33Er2hZLJ+EyvXKUyXph\nCsHlgjtrDPbHLSBM7cOdvGuOHSGJTsuhkmOLKttxj8muhzF9bSDGo+LP+0lT\n+Rurj2eai6dyDcQw3uE6+OZhJBE45sQ1U1ewTh6c6a3CqC9IOZ9T4KPvsC3V\nBMmQ31EFZ5jU71KInsk52MELLYxgQSUGbr26AlYMS51gKEiURqxP9OH4WoJf\nI5EbIO7aBCOxCGZ5mfps9hrtkGuRiCarLz4adgfzvNewt3fmoQdWVWN4ZHob\nd1EzCpXg0qxCJKSKbHfFCKhKs0c8QH+O6xtOqE7KkJGYlzJe+qqrbx/Z00UZ\nyCI1\r\n=NDRu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwdh/s/k0f3FyvjAU5MaotgJ7WRugBI3Y2eZEk3t3e8AiEAk7LnttgK7Rhi+6HMFvYFZa11IydXLSfow4MMdhWK0Pw="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200416214306_1587073459953_0.8996382029146033"},"_hasShrinkwrap":false},"1.0.0-master.20200416220404":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200416220404","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"c6a41bb4401b35aaf6621b0600f5a2f082d9f93b","_id":"@atomist/demo-sdm@1.0.0-master.20200416220404","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-xDCD4fIArSZqYptzz64OA7qHdihVfUnhaNrkoPc+XFJ6epGin1FSZYhGViU6xMoEYJn5RqCN6/SHtn9a8akprA==","shasum":"e81c2e7379e775c39772dcdde9f6f41eed44bdc6","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200416220404.tgz","fileCount":22,"unpackedSize":168356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemNa3CRA9TVsSAnZWagAAlIYP/31rERcInHJ/AMxudQ8a\n+r/ZjItgjkZ4U5vpR1rqia9Bv6S1c5o1zIAEQJN6p9PwIKHUFBk5BYAGqay0\nT9ke/3qFyiYTSF3FnKg1ppjqx4gUl7mDjmmIUX6zOq74HGsuA3gfqvv1cw0/\nliY460d5h3I0qTrlye89ad6W9ZoDbb4AQWLVvP6Vm8+YmtIPtLTmcf4+w4s8\nVe/via1KCtT9wqQK+4o+aaWQ06bsxdQBvw7R5CfToI9emLTmZa7xFkU21Bno\n1boCq1G+Mh4lMvxKzifzCsgplJgwxTRbWQ7lHOaMjNkTlYYeA/02SbchQ24z\nxB3/Fd4PmBLRH42mVXL+B1SOZ45kcEHnR4LaFpNUsaSCA8eWhlo9uXQGLnfP\niVVavLY80u0AWT2cSFn3tM3Hey4cOzno5M0MMvfbiDdeuUT1fFuLbn5UOvMe\n4TAz+S2TmqQFJrpEEX5Hhc3l3Vf4lpk26yre9aEfA03Eux0+nKbtmg0kHqB2\nVYgd7Tx9Vjwi8edvEp8N5O9/OWFtvlpAc8k0PG+FRGGJtfxgzgoLE4TPTtlB\nqUH1mzp31x6MW8YQgyMgEalCRA2kPqGvbaDw2OorY46HZzrrTHZV++pWfbzm\nibpCOY4i74w3+Qdd069yGiw/+N+ierQSb2Pto1DV4K7uSs5tCDp1zYiDGiiw\nA5ZZ\r\n=8UMp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEUuMZJHFa2T8kvyxdlNaEMWEDrAYpX0J8rexqXsO23AIgTDD5ncc4t6gdYfICx5AX2UOEyvGlR8LJW7k5duvCZ74="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200416220404_1587074743349_0.5943268952517939"},"_hasShrinkwrap":false},"1.0.0-master.20200417122534":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200417122534","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"67bf5d822fecf912d8749bb76c6ba84e4715ebbf","_id":"@atomist/demo-sdm@1.0.0-master.20200417122534","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-XVMi2oF6X6bF92uy+Zfc2b0ZboJJKI4NjZqOFtkrlyrM32M7pSYN0AelYdn88kPRpq3RHTDrBPQyTVVd9P7KHw==","shasum":"041167493e29b6fbb6434cf3b7d14624fbb79454","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200417122534.tgz","fileCount":22,"unpackedSize":166723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemaCOCRA9TVsSAnZWagAAMloP/AikBOZbzsOl+a0LIw2r\nze3Ih79d088G2IpwH4HG+wAnh41hqllLx+Lp7cT+0eycc9RVffXNhe1jJRmQ\nYcW0vQnq5uMHnKZ7mx03dsL0srtvLbFHq8yu9IBr9kl6C8WFU/KQlNgzOsJe\nLHx7f7bOE2WgwPtK3nj6WMSbQZevlBGaENSusFkLMOPRvoeBK1+ULBIwtTB+\n3Ws6tx0RC5ZJESbZNtzmNqVOpJJSzxSEAbrgwn7LkFgH4UBOksn9hN7bA0nc\nn/m8uwI/NLxKMe0BbprL4+01U0mvtMk70idVL3xGqKFIHL5dGtEHB6x2TCki\nSQtK8yBbgRnpysjX48U9KmlWH5XiYd7Dv1COTuLAC3Jrbb+rhsRrZL1100W9\nvbt0NfVf0BHN+utZgSuHrpJk/9lee1x246q4KjZQ3ajk+eY2ikqTkzwaX2tb\nKtPWLzQnDYaSR7VCB4a0n3XULtoahbdFmh9XdUiHJvhcvHoLHeIl/DN/yRM/\n39rOfI2SPH4V3Gz9oh2Rn4c9TPluLZPmKRMd3dFONr7j3Q6I+YSX5U5RLs0j\n+thLSZAu0ANMW4OpJ4q9Vk5FIDVN9T8kQSdBMnEyQnRLQSRPfL9sNcXLfrGm\nhNUdO7xH0ofv96l7NhaZS/suogjmoPdKFPUawu+QHkJma0zJ+fILU5nt/UM1\n6pRz\r\n=/07r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAZhf8MshHaarkCbUH918nZonyeqN7o1WhLjZh9BdT8gIhAMXxbSGMgKbsh0HKaWljOdq42ALQMF4feHUdZoBAbsYo"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200417122534_1587126413975_0.18617111619754145"},"_hasShrinkwrap":false},"1.0.0-master.20200506122350":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200506122350","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"8f0a1e457b25e8be1ed783a5332fe6b9c115a5ad","_id":"@atomist/demo-sdm@1.0.0-master.20200506122350","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-+WTZsnfxDwvH9LoOj63tAJoDu8fO3o4kGkNA5mDYaNrqfuyxJEWAUCc6tX9I/sCFcgAJA80En5OOp0D1JqYJjw==","shasum":"2cdae3539caf04c44d31ca260f6cf51e38d2a0df","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200506122350.tgz","fileCount":22,"unpackedSize":166724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesqycCRA9TVsSAnZWagAAXdQP/3NCQDbtr8esyvg1Gxnq\nteEEZUiHCJQ+U55eJRFKKf6606IP1iRHboJyioi0dV/pNzo1gosKX+1GF2qh\nlhehvyY7NL5IRCun5Sr+WxKGKGKcBmRpyamRjcCyYL4x6xgoPr0hR6J2lW6T\nnQXVi488hmusJYDlO3TOnuCjd/ZHvn1/sLfX6Zi3l5n1GlLTxmorm6qD5BTq\nSaQ/e81lF31OZMPdSY8gT7lzXpW6uHTv6DKBbVdlsm8IaO42ylIhOKqLJ4Pt\nWjEs6CGiyZqmTKjMVxsWodNxL0vTXAI1UWJ0/ersjxCbCDxttnGE5Ahl40o6\n1V5G0uU6kHZ67sRnNmHqJmBwslAUihWJEzt88e6EsszXlOmWzcjdl1cHbupr\nkZYLL5Nz2ynB1lVvrf2waibCBL0I9umBSTTMKoxi82t+pUchw/6ZXVpfXGBA\nGv569sw6pMsNtOTUr3c/BFgpNzo3vIGW1wWZBzYIgYCQS+K908PrGYnysr79\ny+C5yz0qPvH2BTrEg+eGTfKiMrZC2nyqdhNFMaBBaFseKH7M/H+BAaq/GBk5\nSVwSCLE29jOALb1ZchJ+bVWcm36eEtoEVkRDFOAeabEyBh7tQdyVsHochCiv\nJmMIrlMt7YCXchzCFtL7jwa7X5GyLdFOJZ0HDm2hkr5JMG4ZPUySCiP55Mtg\nhV7s\r\n=N47V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeaOYFd5pX2Nzcj4oYlW5lGTqvCTlRILJnh4X7tKtMOQIgNfoYs4phnkZ1poakGXI2P6lvGQGh1VEjkuH3XNBCPbU="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200506122350_1588767900412_0.27172337074956077"},"_hasShrinkwrap":false},"1.0.0-master.20200506125001":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200506125001","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"efa47805714c39f21825522bb73787cf836b6030","_id":"@atomist/demo-sdm@1.0.0-master.20200506125001","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-RqFhJ6fwaJFfEmsI8Sorh0US7u1XnFTwCETnZC/wzEs2IHrL2T1ketyLeV7B8ZOl4gM7LJmPpJTCpETvvvW36Q==","shasum":"1746c4cbefe0f014bb2e90fb7c6b80fb57b80623","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200506125001.tgz","fileCount":22,"unpackedSize":167358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesrK8CRA9TVsSAnZWagAA7IoP/2aFJOQUv9VH44SRreEz\nCLkMi/UF8QiadWKVUrzy7KMkwG8YC+wIn6lVfeRAVkVkDU6vTx5r/ZkMwY3/\nYR1uWkMWVG0rtJi6jE6Oj7aqe2dOLE70eEO1Ee82eZUKTi6BHxK2N+4KgiRt\nZOsZsyeRVKl6P2O1WUV+cSMJxWENKYp/TXZUEymvAtxff/RiczHCAtN78Hb0\n24L2/QHVlqYWuoVNC4UsG4a/bCjPOlTUPGUmEKjK6ByBOh9QvSphwAspiZ5p\nwaQA5ssQEjeEqgOvbvYfLJihSbDLDF6PaNjLE+ijtOxZhEwVROdf4RuPql1K\n/YH6hdn3/pbZ/WUbF21AnJgq4UFhIdXAih7igdEZbNb4Vjsg0xBOYhaO+ivJ\nR2rtKy/zXq8Udb20Y3uArkxrG6tb2C2Td4gaNanVmzHdzwb7Ee3frqiAnnET\nXKxumNIK9yUBVUYhNTyFCpLndbw4SiJYCpaoIGR0AWSFnOO8j31ZiY2nSGpd\nqH42TMthubn53syRXffHZP0FycQm6acMmE11SiQfN8vgxpSbI7vLtZOUIMo7\n0odAGu5ZQVJdqQyNnEmKrGy6yp774Dggvz97NuGMl5/q/s9DvN5DgD/5uERM\n1vFzqCwEq33iFW8Pya1KfXrb9j5VI0FI1EwqI+gNfX1C3axhnryRgGB5rmKT\nDZKU\r\n=99Y+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ3fnq9M6iI79nJEbvudA3AraMjfemWmnfL1ZlFl7DeAIgdagBcyMIS3dBuDwkPYYtQbeBYR0C+fUhdGLy6HqgEps="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200506125001_1588769467997_0.33803325395194816"},"_hasShrinkwrap":false},"1.0.0-master.20200506133932":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200506133932","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"1002f7d4861eee1b23a4efc420ddb825ab48b4e5","_id":"@atomist/demo-sdm@1.0.0-master.20200506133932","_nodeVersion":"12.8.0","_npmVersion":"6.10.2","dist":{"integrity":"sha512-FDM9JR7TVXG1DuNAlWQiMBjRq9dTjo2XX6b/WP2enJPS4wMLK1MSMONNdWiWskl9MTYpXiHfvbeqikhBHpgQpQ==","shasum":"a3dfb6a84736d065b390e30675b58bca1beeffcc","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200506133932.tgz","fileCount":22,"unpackedSize":167362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesr5aCRA9TVsSAnZWagAASV4QAIUBZty8obp32jtuYlT4\nxZYY7EiF+yMjy00VIMTRW+6jdx43ozcMWM7znPmCTv4lTVw0dGCzoafPT9WQ\n01d4Ihm9IZyg5QCRq1gvlHJ6FYqWTIX6V+W0+PgKKKyUTSHGxntiGpnwYBSX\nvdp5e65O8gmYUHsiKrtp6SOdHrTDj6lyu3os5BQuqF2f7AFD6tjwbB7snwxJ\nqtnvUutc2VYg+iYyECZNFBkj7MzL/JHRGhAvhD9H13e2bjDVRRKUVWJCgd92\nKN676fbeEZoTsSirxVBGs/lfPQl02CtdqeXY9T+TTb+YNGIq/iDvzy6MVOIB\nGEEqw4T880rU1joDVReNdSRJ3NEBuuiezNJVRBk5OKke740NEVW31aFnB34Z\nNSurXp8uiYxXoyvf3k2ISgxVXJyGRR63AxH0BcBVcZ+n7l+zwwMBpvftPIJP\ndGHuYRahr4Uzm9vtbnaBjYUPmbfB5uXOlVJhKn4Hswhw4o2RpSPOJZScOWLl\nB917+fJLRHyRQV2QvgcDgN5DKXUAqKICYVX0gdpNCt5MTwQbMb8xephqCzej\nxTryqz3ENwwst2q8o2aKVqSafAc2AlP9BYI61DW0dYVECce8lhbWT6YyiP38\nylBZ40FpA+4C4DSNYOiiFG1MdATUkUg2QzJriwPl9Rq/6G4gDvVDXvhfwgjf\nys6m\r\n=t2fm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQMiHEjUInjyd/+WmI8MwwhlfT7vN1sqqSwIml928KCAIhAMF5pwz0/2JSnR/RQts75xF8ijGi2o5EEkaOks42AAhB"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200506133932_1588772442122_0.4206684349652714"},"_hasShrinkwrap":false},"1.0.0-master.20200724213128":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200724213128","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"ef1e36176c8c499a63c1f629cf38793d6bdb4543","_id":"@atomist/demo-sdm@1.0.0-master.20200724213128","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-VITWdbEu+Hg2xqZ5q2w7oS14iJfx5O/kuc59sdxc8eQNGyasoOKZp+NHpw5I2AhXJdDKuUFALP9BvVE6cvO3Ng==","shasum":"ba14ff475919d02f3aac7527ec5ecb13b4d63a20","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200724213128.tgz","fileCount":22,"unpackedSize":167330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfG1OGCRA9TVsSAnZWagAAPnEP/0qRS4XdKR7DfmtoRkWY\nVXhUgCaWDabF1t3XpXH9GZ35EUaT58vdSkunHhoLbfj4igAZ2ghmVgM+2HLn\nNYhPMk0Jqqnwc+pVzPWql9UObRoTSgGoi1KlFEKkPxDkMsuGKbgH7n2k/hdd\nwiKyynpkl8eRZtPD3PwnehZYQ4Q3C57P1wB4Vaiicx91A+1bwdzNbMZU6zjZ\null14sPdiAiBTUBlPPMUdjpov+44IkT/IKkK4FtgDR+No4PPPmwG4mu/Qcx8\n3l5EoKuWl/fCAsdyGo9EnS56SwRYAH3zW/xRlnmQvAkVBKi/HBskmdsw47QP\nFsyfPwDmVCYD+Fx1iUiJ7gHiVUqopRlx+X+bH1hDkk9wriSnTmMUxRzRJSlE\nciRQFfSTn740+vSgb64YXu5HwZpJ7Y6vRU6HvOL24Rl0RM9LFx+lxjAN0Ek3\nRT5sD74CnMpUQv5n5Yg0zkUdtp/JLcSQQZyNPc2IC5JNrgUsxu9evrejiWjr\nkxIEdx1p4n0TYhJyGvWkA8dQFeNUIzt5l6gp2b3Hr4EIogNLJIuhpxaflr1r\n+Awje0SFAL2Dr1Sht8sXSKntCT7KhA1ZMNUqObO0z8uBKeQwxLnpaJQ/1W+p\nfyMIlwFlPefgkA5pEYu2xDmMqb+MxFd4cDnybzaARikeI7GcE1nsU+9Nuze2\npsjh\r\n=9W4K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyvN7QyKEzs2QWKtzQXw7/ECSzLfpI7zydyRVGxYsXEwIhAKKaweq8gqvdfH+zA2UdjpyJYWXsSgIdo2Ms+iPVV/L3"}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200724213128_1595626373538_0.4593453320025269"},"_hasShrinkwrap":false},"1.0.0-master.20200818211626":{"name":"@atomist/demo-sdm","version":"1.0.0-master.20200818211626","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.0.0-master.20200311165330","@atomist/sdm":"^2.0.0-master.20200330164246","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.15"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^6.2.2","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"dffebbb3e15285386b43319e688a7bea4d15aabd","_id":"@atomist/demo-sdm@1.0.0-master.20200818211626","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-sODuh8Sb2zwgPscPjBIza/lgkkwwE/aT+0/gFIYpfOa0DjVq9pZ9gLEb6xjKxUv4mjPKiZU5HqhhH2WKQI2UNg==","shasum":"36b74d9c8247430b1f025cee4e545d1e3f1b7f16","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-master.20200818211626.tgz","fileCount":22,"unpackedSize":165646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPEYMCRA9TVsSAnZWagAACswP/3BqcSSR9nH53GK4+3Xl\n+Ak9Qoq+xITQfwpG02Qdbb1zJqMUw8v8CzSZId9ibnytGIfECD0lGuFa+9Ac\ndvVp0qlhOZcTimS53m8a86lKrmzASfMLkPwB1DXZChKoko5QrjAOCVe3SZes\ndAhIVJnJJxl1KZSs/xS6ymRI6FBa479ZgSRUMJXM8RR/K3WsZfEcJhJmL2bJ\nWCww5w5EbdBMU4GCmhfbpHAEhwI+qoDwOVHKfejbJzs66NclyqLRhWvhyrs7\n84YWSZCClKPBpmu3ELGYxGned0pMlVnfwuw8roBQosw7Qvyive0Aj6E6ovsb\ntj8Ok2gbnEgYosjhX9ywOQLPNoKk8XYfzwLUUauH20JvfMVdch0uT6pkrUSZ\nLNETmYE8bzTLJXS6BCEj1TCcWYUlG1qMZoajeZ7cV91+kQVHdkXOdrs5n0pE\n928Qw1s9Ry3AKRFn9tmlbPId9lP2JYRAhTd9zSKVTWNjfcLsLd9hrYGMXWUV\nVo8NP2Mg8xKARSxWZN1MhbxrrZRb2j3TQoIx9ZkGbmW9NtI69X8lHUps/SKd\nx/EK1Lg4VkCbyHPEOxgXCz+nLkRCkPtZgRoyHNac90wpSUMfb6ktKdgsnrtA\nn1w3bdxnplagahJbDHUvQn1zLo5e9v/HA34vY/WSefZH+70mmDwhdpDkp9lM\n1EqF\r\n=26WV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBxQ8Y0OGNWBeJZK0eTAEjZexn5Nv2YIJYoG2hzecA6AiAQytmMTVj4T1d0MyhG2Y7gWFoiLvdqnldjQJUxWR1kXQ=="}]},"maintainers":[{"name":"atomist","email":"npm@atomist.com"}],"_npmUser":{"name":"atomist","email":"npm@atomist.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-master.20200818211626_1597785611573_0.5704557013861449"},"_hasShrinkwrap":false},"1.0.0-goal-signing-demo.20210316231645":{"name":"@atomist/demo-sdm","version":"1.0.0-goal-signing-demo.20210316231645","description":"Atomist SDM to build and deploy demo projects","author":{"name":"Atomist","email":"support@atomist.com","url":"https://atomist.com/"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/atomist-seeds/demo-sdm.git"},"keywords":["atomist","automation","demo","github","kubernetes","sdm"],"homepage":"https://github.com/atomist-seeds/demo-sdm#readme","bugs":{"url":"https://github.com/atomist-seeds/demo-sdm/issues"},"dependencies":{"@atomist/automation-client":"^2.1.0","@atomist/sdm":"^2.1.3","@atomist/slack-messages":"^1.1.1","@types/lodash":"^4.14.136","@types/node":"^12.6.2","lodash":"^4.17.20"},"devDependencies":{"@types/mocha":"^5.2.7","@types/power-assert":"^1.5.0","espower-typescript":"^9.0.2","mocha":"^8.1.3","npm-run-all":"^4.1.5","power-assert":"^1.6.1","rimraf":"^3.0.0","supervisor":"^0.12.0","ts-node":"^8.5.4","tslint":"^5.20.1","typedoc":"^0.15.5","typescript":"^3.7.3"},"directories":{"test":"test"},"scripts":{"autotest":"supervisor --watch index.ts,lib,test --extensions ts --no-restart-on exit --quiet --exec npm -- test","build":"run-s clean compile test lint doc","clean":"run-p clean:compile clean:test clean:doc clean:run","clean:compile":"rimraf git-info.json \"*.{d.ts,js{,.map}}\" \"{commands,goals,lib,test}/**/*.{d.ts,js{,.map}}\" lib/typings/types.ts","clean:dist":"run-s clean clean:npm","clean:doc":"rimraf doc","clean:npm":"rimraf node_modules","clean:run":"rimraf *-v8.log profile.txt log","clean:test":"rimraf .nyc_output coverage","compile":"run-s git:info gql:gen compile:ts","compile:ts":"tsc --project .","doc":"typedoc --mode modules --excludeExternals --ignoreCompilerErrors --exclude \"**/*.d.ts\" --out doc index.ts","git:info":"atm-git-info","gql:gen":"atm-gql-gen","lint":"tslint --config tslint.json --format verbose --project .","lint:fix":"npm run lint -- --fix","start":"atm-start","test":"mocha --require espower-typescript/guess \"test/**/*.test.ts\"","test:one":"mocha --require espower-typescript/guess \"test/**/${TEST:-*.test.ts}\""},"engines":{"node":">=8.2.0","npm":">=5.0.0"},"readme":"<p align=\"center\">\n  <img src=\"https://images.atomist.com/sdm/SDM-Logo-Dark.png\">\n</p>\n\n# @atomist/demo-sdm\n\n[![npm version](https://img.shields.io/npm/v/@atomist/demo-sdm.svg)](https://www.npmjs.com/package/@atomist/demo-sdm)\n\nAtomist software delivery machine for demo projects.\n\nSoftware delivery machines enable you to control your delivery process\nin code.  Think of it as an API for your software delivery.  See the\n[Atomist documentation][atomist-doc] for more information on the\nconcept of a software delivery machine and how to create and develop\nan SDM.\n\n[atomist-doc]: https://docs.atomist.com/ (Atomist Documentation)\n\n## Generating a Key Pair\n\n```shell\n$ openssl genrsa -des3 -out private.pem 2048\n$ openssl rsa -in private.pem -outform PEM -pubout -out public.pem\n```\n\n## Demos\n\n### GeneratorCommand: Project Creation from seed\n\nTo create a project from seed use `create spring` in a DM with the atomist bot. Go through the\ncreation and click the button to create a linked channel.\n\nNotice that repo gets tagged automatically by the SDM.\n\n### CodeTransform: Add Dockerfile\n\nWhen joining the newly created and linked channel, you'll see a button called `Add Dockerfile`.\n\nClicking this button with run a `CodeTransform` and push to a new branch. When the build on this branch\nsucceeds, a PR will be created. Once the goal set finishes successfully, the PR will get merged automatically.\n\nThis is a build-aware CodeTransform with an auto-merge PR.\n\n### CodeInspection: Import java.io.File\n\nEdit any Java source in your repo and add an import for `import java.io.File;`. This will be flagged in the\nCloud Native code inspection. Notice the newly created issue for this violation.\n\nOnce you remove the import again, the created issue gets closed and the body updated.\n\n### Autofix: Add @Autowired to a constructor\n\nEdit the Application class and add the `@ComponentScan` annotation to the class. Don't forget to also add the import\nto `import org.springframework.context.annotation.ComponentScan;`\n\nThe autofix will remove the unnecessary annotation.\n\n### Deployment: Deploy to k8\n\nOnce the Dockerfile PR is merged into master, the app will get deployed to our demo cluster. It will go straight to\n`testing` namespace. Click the link next to the goal to navigate to the running app.\n\nDeployment to production can get triggered by starting the `deploy to production` goal.\n\nOn successful deploy to production, the version in the `pom.xml` will get incremented too.\n\n### Env-based Issue Labels\n\nMake sure to deploy your service at least once to the env, before running this demo.\n\nCreate a new issue in the your repo; make a commit referencing the issue with `fixes #1` in your commit message.\n\nLet the build complete and see the app getting deployed to the `testing` namespace. Once it is running, a new label\n`env:gke-int-demo:testing` should be added to your issue.\n\n## Getting started\n\nSee the [Developer Quick Start][atomist-quick] to jump straight to\ncreating an SDM.\n\n[atomist-quick]: https://docs.atomist.com/quick-start/ (Atomist - Developer Quick Start)\n\n## Contributing\n\nContributions to this project from community members are encouraged\nand appreciated. Please review the [Contributing\nGuidelines](CONTRIBUTING.md) for more information. Also see the\n[Development](#development) section in this document.\n\n## Code of conduct\n\nThis project is governed by the [Code of\nConduct](CODE_OF_CONDUCT.md). You are expected to act in accordance\nwith this code by participating. Please report any unacceptable\nbehavior to code-of-conduct@atomist.com.\n\n## Documentation\n\nPlease see [docs.atomist.com][atomist-doc] for\n[developer][atomist-doc-sdm] documentation.\n\n[atomist-doc-sdm]: https://docs.atomist.com/developer/sdm/ (Atomist Documentation - SDM Developer)\n\n## Connect\n\nFollow [@atomist][atomist-twitter] and [The Composition][atomist-blog]\nblog related to SDM.\n\n[atomist-twitter]: https://twitter.com/atomist (Atomist on Twitter)\n[atomist-blog]: https://the-composition.com/ (The Composition - The Official Atomist Blog)\n\n## Support\n\nGeneral support questions should be discussed in the `#support`\nchannel in the [Atomist community Slack workspace][slack].\n\nIf you find a problem, please create an [issue][].\n\n[issue]: https://github.com/atomist-seeds/empty-sdm/issues\n\n## Development\n\nYou will need to install [Node.js][node] to build and test this\nproject.\n\n[node]: https://nodejs.org/ (Node.js)\n\n### Build and test\n\nInstall dependencies.\n\n```\n$ npm install\n```\n\nUse the `build` package script to compile, test, lint, and build the\ndocumentation.\n\n```\n$ npm run build\n```\n\n### Release\n\nReleases are handled via the [Atomist SDM][atomist-sdm].  Just press\nthe 'Approve' button in the Atomist dashboard or Slack.\n\n[atomist-sdm]: https://github.com/atomist/atomist-sdm (Atomist Software Delivery Machine)\n\n---\n\nCreated by [Atomist][atomist].\nNeed Help?  [Join our Slack workspace][slack].\n\n[atomist]: https://atomist.com/ (Atomist - How Teams Deliver Software)\n[slack]: https://join.atomist.com/ (Atomist Community Slack)\n","readmeFilename":"README.md","gitHead":"972a263442be6c4566edc49bf6d7c28fe97f9b9b","_id":"@atomist/demo-sdm@1.0.0-goal-signing-demo.20210316231645","_nodeVersion":"13.7.0","_npmVersion":"6.13.6","dist":{"integrity":"sha512-yBOJ5WiezOw46o2HP417dW735JsGqlCCYZwHdw53Sx/vgYKcFJF2/E+8fVGfbevsi7H7MzQZtnIhoTh2sve+AQ==","shasum":"3c7b78c064adeb6d29cfcf59f40d4f51fc5147b0","tarball":"https://registry.npmjs.org/@atomist/demo-sdm/-/demo-sdm-1.0.0-goal-signing-demo.20210316231645.tgz","fileCount":24,"unpackedSize":178688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUTy0CRA9TVsSAnZWagAA3GYP/2twDiF9QvFtKvXc3vzM\n8DkXkOHI9ufio9xQNGM2L0Qv49bFTxMROv9gkyyvFM3NSXsxBa765NijWl/A\nC/nGjDRUWDqzZRIIgwXdQZCNngm6rptiW0skSjuj4UJ+I2EtUf+0aR/sGIoV\nplM7ZY+65CI2kiz/HUp3pun3nosL8bwkiET06+z4C6pliHzJUnvnOU3Va7j2\nbtZ7nUQBljcYWVvevWeM+HC6RvCesm1SP7kJIfozQZf8QTzC1v+sm4RntEaK\ngNdEpgmVH3j/orVr87zVHB2/DddOYapxQKBSTPDHpDNDW8WyOmSKc7RtDAPV\nJMAYkQP0rg9pQ8EuW/mNSJ1ms7iR447A7Ql0ouCCzwSF8zKSYGBGUaMyivqD\nwbbrG/oZrSkPT/FhTwy8ouoa7HaTi2u5NDULpqkFcLaWqvdOP6IhQuXCY5oO\ncQaHulmuecFSZLYnIC6FkI+QxknJy8O60VqUDV08kbKcwdSpCwFz93803zSw\n42lmwUxzIuPBvUJ4eJ5//ymIf7ZRIm4dGj8efPMkttJsBrVbgv2owGc2ZOcT\nbV2oLgCgNnfjQUQnt00iW0uLJ7KQNbpCwas/qUDxfdvRnumjb9LwHRqLhsOx\nnWSK/d52mnlzxwI/KL0GCLl6dLnJF8ZYaYqJ2HtF2XXJb9FMB2stJVIzrtgy\nd9tA\r\n=U23x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWLDjLzrvmtj1AyX+gXxIkzvl9aVZYaFcOznRbF+KpLAiAUvU5KUQ6XsGDdLA2XaNCqX1ZaqjB7kf2ZR2W5LzHCSA=="}]},"_npmUser":{"name":"atomist-bot","email":"npm@atomist.com"},"maintainers":[{"name":"atomist-bot","email":"npm@atomist.com"},{"name":"ddatomist","email":"david@atomist.com"},{"name":"cdupuis","email":"cd@atomist.com"},{"name":"slimslenderslacks","email":"slimslenderslacks@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/demo-sdm_1.0.0-goal-signing-demo.20210316231645_1615936691651_0.2854240154245118"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-27T00:33:56.670Z","0.1.0-20180527003106":"2018-05-27T00:33:57.973Z","modified":"2023-02-23T17:58:56.682Z","0.1.0-20180527032353":"2018-05-27T03:26:21.064Z","0.2.9-github-action.20181104114153":"2018-11-04T11:43:12.284Z","0.2.9-github-action.20181104162057":"2018-11-04T16:22:41.974Z","0.2.9-master.20181104163010":"2018-11-04T16:32:59.641Z","0.2.9-master.20181104162824":"2018-11-04T16:34:34.216Z","0.2.9-github-action.20181104163859":"2018-11-04T16:41:04.834Z","0.2.9-master.20181104164656":"2018-11-04T16:49:37.521Z","0.2.9-master.20181104173458":"2018-11-04T17:37:49.698Z","0.2.9-master.20181104175929":"2018-11-04T18:02:16.644Z","0.2.9-master.20181104180836":"2018-11-04T18:11:20.666Z","0.2.9-master.20181104182934":"2018-11-04T18:32:24.602Z","0.2.9-master.20181105080435":"2018-11-05T08:07:23.537Z","0.2.9-master.20181105092929":"2018-11-05T09:32:24.496Z","0.2.9":"2018-11-05T12:31:31.116Z","1.0.0-master.20181105151035":"2018-11-05T15:13:36.770Z","1.0.0-master.20181105154426":"2018-11-05T15:47:17.312Z","1.0.1-master.20181109234337":"2018-11-09T23:50:46.010Z","1.0.1-master.20181110000030":"2018-11-10T00:03:42.846Z","1.0.1-master.20181110005541":"2018-11-10T00:58:34.798Z","1.0.1-master.20181110135525":"2018-11-10T13:58:16.094Z","1.0.1-msteams.20181113220339":"2018-11-13T22:05:46.864Z","1.0.1-pulumi.20181114005910":"2018-11-14T01:00:51.075Z","1.0.1-pulumi.20181114201615":"2018-11-14T20:17:49.437Z","1.0.1-master.20181119072759":"2018-11-19T07:35:04.931Z","1.0.1-master.20181129153120":"2018-11-29T15:38:03.609Z","1.0.1-master.20181129155846":"2018-11-29T16:10:11.647Z","1.0.1-phase.20181213032552":"2018-12-13T03:27:20.465Z","1.0.1-phase.20181213042636":"2018-12-13T04:28:15.786Z","1.0.1-atomist-update-branch-master-1545211451451.20181219092532":"2018-12-19T09:27:19.269Z","1.0.1-master.20181219093758":"2018-12-19T09:41:53.029Z","1.0.1-master.20181219100706":"2018-12-19T10:15:03.409Z","1.0.1-master.20190111150905":"2019-01-11T15:17:20.736Z","1.0.1-master.20190111154212":"2019-01-11T15:48:55.048Z","1.0.1-master.20190111165959":"2019-01-11T17:05:12.594Z","1.0.1-master.20190111172450":"2019-01-11T17:55:59.703Z","1.0.1-master.20190112212511":"2019-01-12T21:30:54.705Z","1.0.1-master.20190112220511":"2019-01-12T22:09:07.892Z","1.0.1-master.20190112223731":"2019-01-12T22:42:11.595Z","1.0.1-master.20190112225522":"2019-01-12T22:59:33.339Z","1.0.1-master.20190113101627":"2019-01-13T10:21:37.218Z","1.0.1-master.20190116162207":"2019-01-16T16:28:37.876Z","1.0.1-master.20190116164641":"2019-01-16T16:52:06.343Z","1.0.1-master.20190117105421":"2019-01-17T10:58:37.000Z","1.0.0-master.20190215080022":"2019-02-15T14:01:38.894Z","1.0.0-master.20190215083129":"2019-02-15T14:33:04.595Z","1.0.0-master.20190215153851":"2019-02-15T15:41:13.316Z","1.0.0-master.20190215172544":"2019-02-15T17:27:56.124Z","1.0.0-master.20190215173823":"2019-02-15T17:40:25.181Z","1.0.0-master.20190215192856":"2019-02-15T19:31:10.819Z","1.0.0-master.20190304143254":"2019-03-04T14:35:28.639Z","1.0.0-master.20190304153045":"2019-03-04T15:33:15.956Z","1.0.0-master.20190304212614":"2019-03-04T21:28:52.070Z","1.0.0-atomist-update-latest-20190324164250.20190324164414":"2019-03-24T16:46:08.574Z","1.0.0-master.20190324165204":"2019-03-24T16:54:12.687Z","1.0.0-master.20190324174350":"2019-03-24T17:46:49.475Z","1.0.0-master.20190501095939":"2019-05-01T10:01:38.177Z","1.0.0-master.20190501101337":"2019-05-01T10:15:22.843Z","1.0.0-master.20190501102722":"2019-05-01T10:28:44.706Z","1.0.0-master.20190501103024":"2019-05-01T10:31:47.211Z","1.0.0-master.20190624165206":"2019-06-24T16:54:09.241Z","1.0.0-config-data.20190625175449":"2019-06-25T17:57:27.755Z","1.0.0-config-data.20190625180548":"2019-06-25T18:07:59.187Z","1.0.0-config-data.20190625182654":"2019-06-25T18:28:13.362Z","1.0.0-config-data.20190625204313":"2019-06-25T20:46:34.945Z","1.0.0-config-data.20190625205846":"2019-06-25T21:00:17.218Z","1.0.0-config-data-2.20190703131523":"2019-07-03T13:17:18.324Z","1.0.0-config-data-2.20190703161313":"2019-07-03T16:15:27.593Z","1.0.0-config-data-2.20190704154948":"2019-07-04T15:53:29.112Z","1.0.0-config-data-2.20190705073652":"2019-07-05T07:38:20.521Z","1.0.0-config-data-2.20190708133217":"2019-07-08T13:33:38.396Z","1.0.0-master.20190710082037":"2019-07-10T08:22:11.375Z","1.0.0-config-data-2.20190710082143":"2019-07-10T08:23:44.203Z","1.0.0-master.20190710202036":"2019-07-10T20:22:44.560Z","1.0.0-master.20191028104408":"2019-10-28T10:45:41.812Z","1.0.0-master.20191028104935":"2019-10-28T10:51:08.605Z","1.0.0-master.20191028110422":"2019-10-28T11:06:27.246Z","1.0.0-master.20191028110743":"2019-10-28T11:09:38.272Z","1.0.0-master.20191028111902":"2019-10-28T11:20:18.250Z","1.0.0-master.20191028114017":"2019-10-28T11:41:33.988Z","1.0.0-master.20191028125729":"2019-10-28T12:59:04.416Z","1.0.0-master.20191028135922":"2019-10-28T14:00:43.964Z","1.0.0-master.20191028145825":"2019-10-28T14:59:50.337Z","1.0.0-master.20191028153127":"2019-10-28T15:33:01.734Z","1.0.0-master.20191028154722":"2019-10-28T15:48:38.413Z","1.0.0-master.20191028172019":"2019-10-28T17:23:48.952Z","1.0.0-master.20191028221613":"2019-10-28T22:19:24.495Z","1.0.0-master.20191029005859":"2019-10-29T01:00:43.060Z","1.0.0-master.20191029140456":"2019-10-29T14:06:22.001Z","1.0.0-master.20191029141611":"2019-10-29T14:17:56.653Z","1.0.0-master.20191029142034":"2019-10-29T14:21:57.255Z","1.0.0-master.20191029142502":"2019-10-29T14:27:38.939Z","1.0.0-master.20191122163825":"2019-11-22T16:39:47.827Z","1.0.0-master.20191125193159":"2019-11-25T19:34:12.002Z","1.0.0-master.20191209163202":"2019-12-09T16:33:38.866Z","1.0.0-gvisor.20191209225751":"2019-12-09T23:00:21.854Z","1.0.0-gvisor.20191209230249":"2019-12-09T23:05:46.996Z","1.0.0-gvisor.20191211014623":"2019-12-11T01:47:47.645Z","1.0.0-gvisor.20191211181654":"2019-12-11T18:19:10.619Z","1.0.0-master.20191211182035":"2019-12-11T18:22:40.580Z","1.0.0-master.20191211200748":"2019-12-11T20:09:10.598Z","1.0.0-master.20191211202100":"2019-12-11T20:22:18.502Z","1.0.0-master.20191211204121":"2019-12-11T20:42:41.509Z","1.0.0-master.20191211225539":"2019-12-11T22:57:26.867Z","1.0.0-master.20191212133056":"2019-12-12T13:32:20.864Z","1.0.0-master.20191213153006":"2019-12-13T15:31:21.966Z","1.0.0-master.20191213185700":"2019-12-13T18:58:53.217Z","1.0.0-master.20191216211453":"2019-12-16T21:17:20.234Z","1.0.0-master.20191217140954":"2019-12-17T14:10:57.282Z","1.0.0-master.20191217160055":"2019-12-17T16:02:01.124Z","1.0.0-master.20191217161548":"2019-12-17T16:16:57.096Z","1.0.0-master.20191217163329":"2019-12-17T16:34:37.901Z","1.0.0-k8s-scheduler.20191218195312":"2019-12-18T19:54:15.108Z","1.0.0-k8s-scheduler.20191218205057":"2019-12-18T20:52:35.653Z","1.0.0-master.20191219074708":"2019-12-19T07:48:23.711Z","1.0.0-k8s-scheduler.20191219075842":"2019-12-19T08:00:46.886Z","1.0.0-dependabot.npm-and-yarn.yarn-1.22.0.20200214233018":"2020-02-14T23:31:47.458Z","1.0.0-dependabot.npm-and-yarn.acorn-5.7.4.20200315044103":"2020-03-15T04:42:24.670Z","1.0.0-master.20200416204903":"2020-04-16T20:50:12.988Z","1.0.0-master.20200416214306":"2020-04-16T21:44:20.201Z","1.0.0-master.20200416220404":"2020-04-16T22:05:43.495Z","1.0.0-master.20200417122534":"2020-04-17T12:26:54.146Z","1.0.0-master.20200506122350":"2020-05-06T12:25:00.530Z","1.0.0-master.20200506125001":"2020-05-06T12:51:08.113Z","1.0.0-master.20200506133932":"2020-05-06T13:40:42.290Z","1.0.0-master.20200724213128":"2020-07-24T21:32:53.677Z","1.0.0-master.20200818211626":"2020-08-18T21:20:11.716Z","1.0.0-goal-signing-demo.20210316231645":"2021-03-16T23:18:11.842Z"},"maintainers":[{"email":"neil.prosser+npmjs@gmail.com","name":"neilprosser"},{"email":"npm@atomist.com","name":"atomist-bot"},{"email":"cd@atomist.com","name":"cdupuis"},{"email":"slimslenderslacks@gmail.com","name":"slimslenderslacks"}],"description":"an Atomist SDM to deliver automation client projects","homepage":"https://github.com/atomist/demo-sdm#readme","keywords":["atomist","automation","github","kubernetes","sdm"],"repository":{"type":"git","url":"git+https://github.com/atomist/demo-sdm.git"},"author":{"name":"Atomist, Inc."},"bugs":{"url":"https://github.com/atomist/demo-sdm/issues"},"license":"Apache-2.0","readme":"","readmeFilename":""}