serverless/docs/guides/cicd/custom-scripts.md
AJ Stuyvenberg d7b6fb748e
Squashed docs update guides (#8495)
* docs: Update docs for dashboard providers

* docs: Update note on migration

Co-authored-by: Maciej Skierkowski <maciej@skierkowski.com>
2020-11-10 13:57:22 -08:00

109 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
title: Serverless Dashboard - CI/CD Custom Scripts
menuText: Custom Scripts
menuOrder: 3
layout: Doc
-->
<!-- DOCS-SITE-LINK:START automatically generated -->
### [Read this on the main serverless docs site](https://serverless.com/framework/docs/guides/cicd/custom-scripts/)
<!-- DOCS-SITE-LINK:END -->
# Custom scripts
Serverless Framework Pro runs three primary operations on your repository when you have CI/CD configured: (1) install NPM packages via `npm install`, (2) run tests, if present, with `npm test`, and (3) deploy your service using `sls deploy`. You can run custom scripts before or after each of these steps if you need to customize the pipeline further.
To run custom scripts before & after NPM install and running tests, use the lifecycle hooks built into `scripts` of your `package.json` file. The `preinstall`, `postinstall`, `pretest`, and `posttest`, scripts are run automatically at each of these steps.
To run custom scripts before or after deployment, you can use the [serverless-plugin-scripts](https://github.com/mvila/serverless-plugin-scripts) plugin to run the scripts at various points of the `serverless deploy` lifecycle, including before deployment and on finalize.
**Before npm install**
To run a script before `npm install`, set the script in `preinstall` in your `package.json`.
```json
{
"name": "demo-serverless",
"version": "1.0.0",
"scripts": {
"preinstall": "<your script>"
}
}
```
**After npm install**
To run a script after `npm install`, set the script in `postinstall` in your `package.json`.
```json
{
"name": "demo-serverless",
"version": "1.0.0",
"scripts": {
"postinstall": "<your script>"
}
}
```
**Before npm test**
To run a script before `npm test`, set the script in `pretest` in your `package.json`.
```json
{
"name": "demo-serverless",
"version": "1.0.0",
"scripts": {
"pretest": "<your script>"
}
}
```
**After npm test**
To run a script after `npm test`, set the script in `posttest` in your `package.json`.
```json
{
"name": "demo-serverless",
"version": "1.0.0",
"scripts": {
"posttest": "<your script>"
}
}
```
**Before serverless deploy**
To run a script before `serverless deploy` starts the deployment add this to your `serverless.yml`.
```yaml
plugins:
- serverless-plugin-scripts
custom:
scripts:
hooks:
before:deploy:deploy': <your script>
```
**After serverless deploy**
To run a script after `serverless deploy` completes a deployment add this to your `serverless.yml`.
```yaml
plugins:
- serverless-plugin-scripts
custom:
scripts:
hooks:
deploy:finalize: <your script>
```
## Additional lifecycle hooks
NPM provide additional lifecycle hooks you can run as well, additional documentation can be found here, [https://docs.npmjs.com/misc/scripts](https://docs.npmjs.com/misc/scripts).
Serverless Framework provides additional lifecycle hooks as “serverless deploy” is running, you can find more information about additional hooks in the [serverless-plugin-scripts](https://github.com/mvila/serverless-plugin-scripts) docs.