Jenkins Job: Build and Deploy App locally - ShoppinPal/gcp-scripts GitHub Wiki
Configure build
Create a Jenkins Job
- Create a new job. The link to get started looks something like:
https://<jenkins-server>/view/All/newJob - Type:
free style - Check
This build is parameterizedGive default values for all parameters, otherwise build triggered via git will fail. - Add
String Parameter - Name:
VM_EXTERNAL_IP - Default Value:
<jenkins-server>* ex:jenkins-staging.shoppinpal.com - Add
File Parameter - File location:
<File Location>* ex:server/boot/seed.json - Description:
<description> - Add
String Parameter - Name:
IW_STOCK_ORDER_WORKER_NAME - Default Value:
<default_IW_STOCK_ORDER_WORKER_NAME> - Add
String Parameter - Name:
IW_OAUTH_TOKEN - Default Value:
<default_IW_OAUTH_TOKEN > - Add
String Parameter - Name:
IW_URL - Default Value:
<default_ IW_URL> - Add
String Parameter - Name:
VEND_CLIENT_ID - Default Value:
<default_VEND_CLIENT_ID> - Add
String Parameter - Name:
VEND_CLIENT_SECRET - Default Value:
<default_VEND_CLIENT_SECRET> - In
Source Code ManagementchooseGit - Repository URL:
https://github.com/ShoppinPal/warehouse - Branch:
develop - Repository Browser select
AUTO - In
Build TriggerscheckBuild when a change is pushed to GitHub - In
BuildAdd Build StepExecute Shelland give following commands as build steps - @faisalrabbani - TODO: Is there a way to save the super long
echostring as an environment variable and then spit it out like so:echo -e $STAGING_CONFIGin the build? - @faisalrabbani - TODO: Is there some way to setup variable in Jenkins so that only the admin you created them can see the values but other jenkins users can still use them in their builds?
```
sanity check VM_EXTERNAL_IP by spitting it out in the logs
echo $VM_EXTERNAL_IP
add a configuration file which should never be checked in to source
rather it should be controlled by the build process, like we do here
echo '{ "restApiRoot": "/api", "host": "0.0.0.0", "port": 3000, "aclErrorStatus": 403, "remoting": { "json": { "limit": "50mb" } }, "site": { "baseUrl":"https://'"${VM_EXTERNAL_IP}"'", "proxyUrl": "" }, "logging": { "console": true, "file": false }, "prestashop":{ "apiKey":"" }, "vend":{ "auth_endpoint":"https://secure.vendhq.com/connect", "token_service":".vendhq.com/api/1.0/token", "client_id":"'"${VEND_CLIENT_ID}"'", "client_secret":"'"${VEND_CLIENT_SECRET}"'" }, "ironWorkersUrl":"'"${IW_URL}"'", "ironWorkersOauthToken":"'"${IW_OAUTH_TOKEN}"'", "stockOrderWorker":"'"${IW_STOCK_ORDER_WORKER_NAME}"'" }' > server/config.staging.json
sanity check configuration by spitting it out in the logs
cat server/config.staging.json
install dependencies
npm install npm install grunt-cli npm install bower node_modules/bower/bin/bower install
use the "grunt" tool to perform a build that prepares the bits,
that may be deployed to a "staging" environment
node_modules/grunt-cli/bin/grunt deploy:staging ```
-
Add
Post-build ActionsasSend build artifacts over ssh -
Select
localhostas ssh server -
Provide the following
Exec Commandsand leave rest of the fields empty:
rm -r /apps/warehouse cp -r /var/lib/jenkins/workspace/warehouse /apps cp server/boot/seed.json /apps/warehouse/server/boot/ cd /apps/warehouse if forever list | grep '/apps/warehouse/server/server.js' ; then echo 'stopping /apps/warehouse/server/server.js' forever stop /apps/warehouse/server/server.js fi if forever list | grep 'server/server.js' ; then echo 'stopping server/server.js' forever stop server/server.js
fi NODE_ENV=staging DEBUG=shoppinpal:,loopback:boot,boot:create-model-instances,boot:create-role-resolver,common:models:* forever start server/server.js ```
- Save Job