strider-cd / strider Goto Github PK
View Code? Open in Web Editor NEWOpen Source Continuous Integration & Deployment Server
Home Page: http://strider-cd.github.io/
Open Source Continuous Integration & Deployment Server
Home Page: http://strider-cd.github.io/
If there is a repo in your cache which no longer exists on github (e.g. has been moved), Strider will still let you configure it but then will error out later.
I have created a small Express app based on Node-Stride, then added to the webhooks list on the repo's config page, but looks like Strider didn't fire any post request on test/deploy.
Just shows an empty table. Invites are stored and emailed correctly though, so this is a front-end/template issue.
This should verify that MongoDB connection is up. Can be used by e.g. Pingdom alerts.
Hi there, running into a weird problem. I just installed Strider on Heroku following the instructions you include in the readme. I had to change a few things (see my modified Strider package.json below), but it's more or less the stock setup.
The issue is the hiredis NPM package during npm install
. This builds fine locally and on other CI solutions like CircleCI. For some reason, Strider tries to build this package with node-waf instead of node-gyp. I can't figure out why.
To reproduce this, I forked your sample strider-nodejs-redis-test project. I ran it against my install of Strider, and the test passed.
Then, I modified the package.json to simply include hiredis. The test failed as npm install
failed.
The output of the build attempt is below. The fork of the repo is here.
Let me know if I can provide any more information. I looked at this for a little while, but couldn't piece it together. further in the logs, it does seem to report that the correct node.js and npm are installed.
Thanks,
Sujal
[STRIDER] Starting git clone of repo at [email protected]:fanzter/strider-nodejs-redis-test.git
[STRIDER] Git clone complete
npm WARN package.json [email protected] No README.md file found!
npm http GET https://registry.npmjs.org/redis
npm http GET https://registry.npmjs.org/hiredis
npm http GET https://registry.npmjs.org/mocha
npm http GET https://registry.npmjs.org/should
npm http 304 https://registry.npmjs.org/hiredis
npm WARN package.json [email protected] No README.md file found!
npm http 304 https://registry.npmjs.org/mocha
npm http 304 https://registry.npmjs.org/redis
npm http 304 https://registry.npmjs.org/should
> [email protected] preinstall /app/node_modules/strider-simple-worker/_work/strider-nodejs-redis-test/node_modules/hiredis
> make || gmake
cd deps/hiredis && make static
make[1]: Entering directory `/app/node_modules/strider-simple-worker/_work/strider-nodejs-redis-test/node_modules/hiredis/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/growl
npm http GET https://registry.npmjs.org/jade/0.26.3
npm http GET https://registry.npmjs.org/diff/1.0.2
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
npm http GET https://registry.npmjs.org/ms/0.3.0
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb hiredis.c
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/diff/1.0.2
npm http 304 https://registry.npmjs.org/jade/0.26.3
npm http 304 https://registry.npmjs.org/growl
npm http 304 https://registry.npmjs.org/debug
npm WARN package.json [email protected] No README.md file found!
npm http 304 https://registry.npmjs.org/ms/0.3.0
npm http 304 https://registry.npmjs.org/mkdirp/0.3.3
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb sds.c
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb async.c
npm http GET https://registry.npmjs.org/mkdirp/0.3.0
npm http 304 https://registry.npmjs.org/mkdirp/0.3.0
ar rcs libhiredis.a net.o hiredis.o sds.o async.o
make[1]: Leaving directory `/app/node_modules/strider-simple-worker/_work/strider-nodejs-redis-test/node_modules/hiredis/deps/hiredis'
node-waf configure build
make: node-waf: Command not found
make: *** [all] Error 127
sh: gmake: not found
npm ERR! [email protected] preinstall: `make || gmake`
npm ERR! `sh "-c" "make || gmake"` failed with 127
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the hiredis package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! make || gmake
npm ERR! You can get their info via:
npm ERR! npm owner ls hiredis
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 2.6.32-347-ec2
npm ERR! command "/app/bin/node" "/app/node_modules/strider-simple-worker/node_modules/npm/bin/npm-cli.js" "install"
npm ERR! cwd /app/node_modules/strider-simple-worker/_work/strider-nodejs-redis-test
npm ERR! node -v v0.8.12
npm ERR! npm -v 1.1.65
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /app/node_modules/strider-simple-worker/_work/strider-nodejs-redis-test/npm-debug.log
npm ERR! not ok code 0
[STRIDER] Prepare failed; exit code: 1
Error message:
22 Mar 17:40:13 - info: received a correctly signed webhook for repo https://github.com/myorg/myrepo on master branch - starting task on user [email protected]'s behalf
/home/strider/strider/node_modules/mongoose/lib/utils.js:413
throw err;
^
TypeError: Cannot read property 'ssh_url' of undefined
at exports.webhook_secret (/home/strider/strider/routes/index.js:255:39)
at exports.verify_webhook_req_secret (/home/strider/strider/lib/github.js:669:16)
at model.UserSchema.methods.get_repo_config (/home/strider/strider/lib/models.js:169:12)
at Promise.exports.verify_webhook_req_secret (/home/strider/strider/lib/github.js:668:12)
at Promise.onResolve (/home/strider/strider/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8)
at Promise.EventEmitter.emit (events.js:96:17)
at Promise.emit (/home/strider/strider/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38)
at Promise.fulfill (/home/strider/strider/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20)
at /home/strider/strider/node_modules/mongoose/lib/query.js:1791:13
at model.Document.init (/home/strider/strider/node_modules/mongoose/lib/document.js:241:11)
This is related to the removeConfig branch being merged. I have a fix in the works.
Setting the build pack to http://github.com/Strider-CD/heroku-buildpack-nodejs.git seems to have an issue were Heroku will reject the push.
Using: https://github.com/heroku/heroku-buildpack-nodejs.git seems to solve the issue
Preface: this is an unashamed feature request. Feel free to disregard.
It would be beyond awesome if I could add other git hosts (for example, gitlab or bitbucket.) Is this on the roadmap?
The VCBuild.exe is called, but it's trying to load node.lib at the wrong path
LINK : fatal error LNK1181: cannot open input file 'C:\Users\Webdev\.node-gyp\0.10.0\\node.lib'
the correct path is 'C:\Users\Webdev\.node-gyp\0.10.0\\Release\\node.lib'
(or depending on the OS version, 'C:\Users\Webdev\.node-gyp\0.10.0\\x64\\node.lib'
, 'C:\Users\Webdev\.node-gyp\0.10.0\\ia32\\node.lib'
)
This is related to #28 and #18. We want to enable people to make packages which depend on Strider and whatever other extensions or services they like - in addition to making it run standalone.
Ideally, you'd be able to do something like:
var strider = require('strider')
// Optionally pass in config object and a httpServer instance
var server = strider(config, server)
server.start()
Currently at Express 2.x. If it is a good idea, we should upgrade to latest version. Migration doesn't look too bad: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
Found by @peterbraden
Clicking the 'Test webhook' button after manual configuration results in this heroku log:
2012-11-06T11:13:26+00:00 app[web.1]: 6 Nov 11:13:26 - info: received a correctly signed webhook for repo https://github.com/** on master branch - starting task on user **'s behalf
2012-11-06T11:13:26+00:00 app[web.1]:
2012-11-06T11:13:26+00:00 app[web.1]: /app/node_modules/mongoose/lib/utils.js:413
2012-11-06T11:13:26+00:00 app[web.1]: throw err;
2012-11-06T11:13:26+00:00 app[web.1]: ^
2012-11-06T11:13:26+00:00 app[web.1]: TypeError: Cannot read property 'undefined' of undefined
2012-11-06T11:13:26+00:00 app[web.1]: at exports.webhook_secret (/app/routes/index.js:252:54)
2012-11-06T11:13:26+00:00 app[web.1]: at exports.verify_webhook_req_secret (/app/github.js:669:16)
2012-11-06T11:13:26+00:00 app[web.1]: at model.UserSchema.methods.get_repo_config (/app/models.js:169:12)
2012-11-06T11:13:26+00:00 app[web.1]: at Promise.exports.verify_webhook_req_secret (/app/github.js:668:12)
2012-11-06T11:13:26+00:00 app[web.1]: at Promise.addBack (/app/node_modules/mongoose/lib/promise.js:128:8)
2012-11-06T11:13:26+00:00 app[web.1]: at Promise.EventEmitter.emit (events.js:93:17)
2012-11-06T11:13:26+00:00 app[web.1]: at Promise.emit (/app/node_modules/mongoose/lib/promise.js:66:38)
2012-11-06T11:13:26+00:00 app[web.1]: at Promise.complete (/app/node_modules/mongoose/lib/promise.js:77:20)
2012-11-06T11:13:26+00:00 app[web.1]: at Query.findOne (/app/node_modules/mongoose/lib/query.js:1533:15)
2012-11-06T11:13:26+00:00 app[web.1]: at model.Document.init (/app/node_modules/mongoose/lib/document.js:229:11)
2012-11-06T11:13:26+00:00 heroku[router]: Error H13 (Connection closed without response) -> POST strider-topicus.herokuapp.com/webhook/c4ec126114d63d346a08a221430bbdc53564c7203368cf23a251f193eaf92c0f dyno=web.1 queue= wait= service= status=503 bytes=
2012-11-06T11:13:27+00:00 heroku[web.1]: Process exited with status 1
2012-11-06T11:13:27+00:00 heroku[web.1]: State changed from up to crashed
I believe that this regular expression
var ghRegexp1 = /(?:https_://)_github.com/(\w+)/(\w+)/?/;
in
https://github.com/Strider-CD/strider/blob/master/public/javascripts/manual_setup.js#L75
should be changed to
var ghRegexp1 = /(?:https_://)_github.com/(\S+)/(\S+)/?/;
so it can handle non-alphanumeric characters in the local path. Ex: https://github.com/user-name/my-project
It would be good to have support for MySQL.
After authed with github, I only see my own public repos. Is there a settings to turn on to get private repo and organization's repo?
Config should allow arbitrary mail transport settings as supported by nodemailer.
After following all the required steps I can login on strider on heroku. When clicking connect to Github I get the Github auth page, after clicking Allow i get:
Express
500 Error: Step getCode of github
is promising: code ; however, the step returns nothing. Fix the step by returning the expected values OR by returning a Promise that promises said values.
at Object.Step.exec (/app/node_modules/everyauth/lib/step.js:69:11)
at RouteTriggeredSequence.materializedMethods.start (/app/node_modules/everyauth/lib/stepSequence.js:39:39)
at RouteTriggeredSequence.routeHandler (/app/node_modules/everyauth/lib/routeTriggeredSequence.js:16:13)
at nextMiddleware (/app/node_modules/connect/lib/middleware/router.js:175:25)
at param (/app/node_modules/connect/lib/middleware/router.js:183:17)
at pass (/app/node_modules/connect/lib/middleware/router.js:191:11)
at Object.router (/app/node_modules/connect/lib/middleware/router.js:197:7)
at next (/app/node_modules/connect/lib/http.js:204:15)
at Promise.everyauth.middleware.connect.router.modules (/app/node_modules/everyauth/index.js:43:11)
at Promise.addBack (/app/node_modules/mongoose/lib/promise.js:128:8)
I configured few node.js project to run tests.
After pressing button "Test" I can see "Sending start message..." message but after refreshing the page the job is gone.
How can I identify what is the problem? How to see logs or monitor job?
To the extent that it is possible, configuration should be stored in a MongoDB document with fallback to config.js
and everypaas
values.
There isn't any documentation on this right now.
Job queues exist on the backend, but the UI doesn't make it clear that this is what is happening.
In other words, you can kick off multiple jobs in the UI and the backend will queue them internally. But the front-end doesn't communicate this is what is happening properly.
Hopefully Strider will "just work" under node 0.10.
It is bad to have config.js be tracked in VCS. Solution is I think:
Strider has a lightweight extension (aka plugin) system which makes it fun and easy to extend and customize.
Indeed, much of Strider is actually implemented as extensions (strider-simple-worker, strider-python, strider-sauce, gostrider etc)
Strider extensions are just NPM packages with a tiny bit of extra meta-data.
We should document this so people know about it and can get started developing and publishing extensions!
Strider runs great on dotCloud (free & paid), and the polyglot environment & vertical scaling they support is nice. We should document how to deploy there.
After filling out the details and following the steps as described, i click the 'Continue' button.
This results in a heroku error log:
2012-11-06T11:16:30+00:00 app[web.1]: 6 Nov 11:16:30 - info: org: topicusonderwijs - name: proudcrowd
2012-11-06T11:16:30+00:00 app[web.1]: 6 Nov 11:16:30 - debug: generate_keypair() command: ssh-keygen args: -t,dsa,-N,,-C,[email protected],-f,/tmp/_topicusonderwijs_proudcrowd
2012-11-06T11:16:30+00:00 app[web.1]: t\"repo\": \"proudcrowd\"\n}"
2012-11-06T11:16:30+00:00 app[web.1]: 6 Nov 11:16:30 - debug: post_manual_setup() - output: "{\n\t\"webhook\": \"https://strider-topicus.herokuapp.com//webhook/c4ec126114d6asd346asd8aasd1430bbdc53564c7203368cf23a251f193eaf92c0f\",\n\t\"deploy_key_title\": \"StriderDeployKey - https://strider-topicus.herokuapp.com/ - [email protected]\",\n\t\"deploy_public_key\": \"ssh-dss ************key was here**********\\n\",\n\t\"org\": \"topicusonderwijs\",\n\
2012-11-06T11:16:35+00:00 app[web.1]: 6 Nov 11:16:35 - error: TypeError: Cannot read property 'undefined' of undefined
2012-11-06T11:16:35+00:00 app[web.1]: at exports.jobs_start (/app/routes/api/jobs.js:70:63)
2012-11-06T11:16:35+00:00 app[web.1]: at model.UserSchema.methods.get_repo_config (/app/models.js:169:12)
2012-11-06T11:16:35+00:00 app[web.1]: at exports.jobs_start (/app/routes/api/jobs.js:65:12)
2012-11-06T11:16:35+00:00 app[web.1]: at callbacks (/app/node_modules/express/lib/router/index.js:272:11)
2012-11-06T11:16:35+00:00 app[web.1]: at require_auth (/app/middleware.js:6:9)
2012-11-06T11:16:35+00:00 app[web.1]: at callbacks (/app/node_modules/express/lib/router/index.js:272:11)
2012-11-06T11:16:35+00:00 app[web.1]: at param (/app/node_modules/express/lib/router/index.js:246:11)
2012-11-06T11:16:35+00:00 app[web.1]: at pass (/app/node_modules/express/lib/router/index.js:253:5)
2012-11-06T11:16:35+00:00 app[web.1]: at Object.middleware [as handle] (/app/node_modules/express/lib/router/index.js:45:10)
2012-11-06T11:16:35+00:00 app[web.1]: at Router._dispatch (/app/node_modules/express/lib/router/index.js:280:5)
The test completed successfully and it said email was sent, but I never received an email. Checked my spam folder. From my ~/.bashrc:
export SMTP_HOST="smtp.gmail.com"
export SMTP_PORT="465"
export SMTP_USER="[email protected]"
export SMTP_PASS="mypassword"
On my local, auth with github redirected to
http://localhost:3000/auth/github/callback?code=926656513c756bf10338
with the below error.
On heroku, the auth just redirect back to /login, seems like it failed somewhere in passport.
Express
500 TypeError: Cannot read property 'name' of undefined
at ghUserLink (./lib/auth.js:39:34)
at Strategy.setupGithubAuth [as _verify] (./lib/auth.js:63:7)
at OAuth2Strategy.authenticate.params.response_type (./node_modules/passport-github/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:141:20)
at Strategy.userProfile (./node_modules/passport-github/lib/passport-github/strategy.js:95:7)
at passBackControl (./node_modules/passport-github/node_modules/passport-oauth/node_modules/oauth/lib/oauth2.js:107:9)
at IncomingMessage.exports.OAuth2._executeRequest.request.on.callbackCalled (./node_modules/passport-github/node_modules/passport-oauth/node_modules/oauth/lib/oauth2.js:124:7)
at IncomingMessage.EventEmitter.emit (events.js:126:20)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at CleartextStream.socketOnData [as ondata] (http.js:1430:20)
Has some issues due to old npm version it depends on I think.
Just a heads up. These tests can be found in https://github.com/Strider-CD/strider/blob/passportAuth/test/functional/test.js
I wonder how one can hook in build script before the tests are run. The docs state that strider clones the repo and then calls "npm test".
I've got the following template dir structure
|-bin
|-design
|-docs
|-src
|---public
|-----css
|-----img
|-----js
|---routes
Before I deploy to Heroku I want to run a build script for backend and front end code and copy the optimised files into bin and then deploy bin directory to Heroku.
Thanks for any help,
Patrick
Each pane in the project config loads data from its own AJAX API endpoint. This results in the page taking a number of seconds to fully load.
@peterbraden has an idea to consolidate initial payload into the HTML response. This means AJAX calls should be unnecessary and latency will be much lower to render page.
Not sure why but I would guess something to do with static file middleware.
Being able to specify where to load Strider extensions from on the filesystem. This is handy especially in cases where you are building a custom Strider through having your app depend on it.
For example, you can create your app, add Strider as a dependency, then set "start" script to "./node_modules/strider/bin/strider -m ./node_modules".
At the moment the registerBlock stuff has to be sync because that's the way swig does it. This isn't ideal, as it means you can't do any data level stuff in the blocks.
Ideally we can make it async - here are some thoughts:
Currently: Swig Custom tag uses actual swig context
. Because of the way swig works (generating code that appends to a string on compile
) it isn't possible to make the function async.
Pluses: Fairly Simple.
Instead of using consolidate.swig as the express engine, write our own. It would behave similarly, but on render it would:
Missing template I think.
Jade is non-standard and poses a barrier to people contributing, as does the mishmash of backbone, apres and handrolled JS.
Suggestions for better solutions welcome.
Currently, plugins can add routes, static content, template blocks etc. However, they don't have any way to hook into the socket.io subsystem.
Access to the main socket.io object would make it easy for plugins to do server-push.
This is due to no github_metadata
property being populated in the user object when Github not linked.
See: https://github.com/Strider-CD/strider/blob/master/routes/api/jobs.js#L70
How can I setup the first admin user on heroku? The readme file only shows how to adduser on local mongodb.
This would be nice for some people's workflows. Related issue: Ability to select which branch(es) trigger test/deploy runs.
Currently search is case-sensitive.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.