
bear.1.0.3.source-code.todo.txt Maven / Gradle / Ivy
The newest version!
top priority:
- (ok) remotely install java environment with a single command
-- (ok) bear --create my --template java.basic|nodejs.express| --hosts=vm01,vm02,vm03 --user user --password password --oracleUser us --oraclePassword pa
-- (ok) bear my.setup
- (ok) download jdk with a SimpleBrowser
- (ok) Update README.md
- (ok) Play issue
- (ok) Redo quick start guide
- (ok) Deploy chutils
- (ok) Install to maven central
- Create articles
-- (ok) Habrahabr.ru
-- "Setting up a Tomcat/Play Framework cluster in 5 minutes"
-- Other sites for articles
-- Stackoverflow.com
-- after getting 30-50 stars, google adword requests and answer questions at SO
- (ok) Idea Guide
- (ok) ok/nok reporting is broken, rollback must mean that task failed
- (ok) bug: when launching Drywall UI, project is not set
- (ok) retest running Drywall in UI
- (ok) Doc: bear configuration and workspace
-- (ok) How to setup variables
-- (ok) How to work with contexts
-- (ok) Where the logs are stored
- (ok) Deployment Management Guide
- (ok) Parallel execution examples tutorial
- (ok) use-ui don't work
- password works only from the annotations
### Road Map for Release 1.0a2 (+ Ubuntu Server, localhost, Cloud)
| Step | State |
| ------------------------------------------------- |:--------------:|
| Support localhost | |
| Support JavaScript, sample project | |
| Support Ruby, RoR demo, sample project | |
| Support Python & sample project & demo | |
| Deployments to Heroku, AWS, GCE, Azure, Rackspace | |
| Run via a Maven Plugin | |
| Support JDK 6 for CLI, JDK 7 for GUI | |
| Documentation
- (ok) set interactiveRun for interpreted commands only
- (ok) fix fx-properties template
- (ok) recheck demos with CentOS
- (ok) Ubuntu
- (ok) Refactor
- (ok) recheck demos
- (ok) Integration tests
- (ok) put logs into separate files for sessions
- (ok) create project a from template
- (ok) quick setup task recipe (i.e. [new empty bear script], :run (rename :ref) {task: 'tasks.setup'} at the moment its _.runner.run(_.getGlobal().tasks.setup, )
- (ok) ui: quick start
- (ok) start nodeJs independently of the deploy
-- (ok) choose project
-- (ok) choose methods on the project object
-- (ok) run commands to interpret
-- (ok) clean & clear phases and commands
-- (ok) project & run script button are dummy: everything happens on the "server"
-- (ok) logo
-- (ok) auto-scroll to the bottom, make scrollbars visible
-- (ok) project.runUI
-- (ok) weird white space at the bottom
-- (ok) remove/check group divider
-- (ok) send to a single shell
-- (ok) ls -ltra produces 4 captions
- (ok) ui: performance problem
- (ok) ui: turn off firefox in the profile
- (ok) add environment: production, dev, test
- (schedule to v1.1) ui: problems getting list of loaded plugins
- (schedule to v1.1) test that debug is understandable
-- (schedule to v1.2) sometimes there is duplicate output (when doing `ls -w 1 -a `)
- (Bear 2) - integration: run as shell scripts: #!bear --project-dir= my.deploy
- Bear distributed workers - Akka? ((schedule to v2.0))
- (ok) smoke tests:
-- (ok) releases plugin test (dump files)
-- (ok) test params passing
-- (ok) test phases syncing
-- (ok) test roles and hosts
- (ok) service interface: check live status on hosts
- read repos from pom.xml
- (ok) Ubuntu!
- (ok) run all demos with Bear
- (ok) refactor: remove addRaw
- (schedule to v1.1) release bear with bear (this should be an exciting feature!)
- release to git
- (ok) add default methods for projects: start, stop, rollbackTo
- add uninstall for project and for server
- (schedule to v1.1) find the top Capistrano/Puppet questions on SO, create a demo with answers
- (ok) releases simple demo, create dumps demo (http://habrahabr.ru/post/206898/#comment_7127738)
- (later) bear --install maven -Vmaven.version=3.1.1,bear.host=vm04
- (later) --create del-me --from-template mini
- Bear Installer ideas:
-- Maven archetype: Idea project, bear.xml, bear plugin to quickly run from console.
-- Installation:
--- bear-ui - opens the last project
--- bear-ui drywall - opens the drywall project
--- bear --create drywall - creates a new project named drywall, pom.xml, generates drywall.iml
--- bear --command=ls drywall - runs command, prints text
--- (?) bear --unpack-demos
--- (ok) bear drywall.deploy
--- bear drywall.deploy -Dlog.level=WARN
- Distributed File Task - (later or a demo)
- configure via -D
- refactorings
-- (ok) chain operations: $.sys.rm(dir1, dir2).sudo().noForce().run()
-- move input from callable into the task
-- Generics (later)
-- SELF generics for: CommandLineResult, CommandLine (?)
- test deployments after refactorings
- list vars, alias vars, categorize vars (via Annotations?)
- email plugin
- sms plugin?
- password management (can't always store a password in a local file)
- don't print fx to console!
- refactor: for plugins installations there is no spec/unclear for when to use asInstalledDependency,
getInstall or setInstaller
- (ok) download maven dependencies & add to a classpath when running baseCL -> MavenCL -> ProjectCL
- (later) parse generated pom.xml for deps
- (later) print which parties failed
- add pulse meters for services
- builder must be a field to be able to switch a command
- cover contexts with unit tests, rewrite and add feature: atomically memoize in global, calculate in $
- update git plugin for the release
- ssh tests for servers to test connectivity and response
-- django demo: https://github.com/omab/python-social-auth
-- RoR: https://github.com/binarylogic/authlogic/tree/master, https://github.com/technoweenie/restful-authentication/tree/master,
- refactor to be used with simplest builders
- :run {"task":"tasks.setup"}
- too many inputs for setting vars (how should I set a var in Groovy/ GroovyScript/bear, what is the file I am in?)
- polish code
- quick start:
-- check how to open a new sample project with idea when creating installation
-- connectivity test
-- test different auth methods
- create unit tests coverage plan
- ui: check if it's easy to send prompt - ok
- nice grid textual/ui representation!:
12345678
pwd | . ......
tasks.deploy | . X.. ..
db.migration | . X
Node.js:
- tons of examples: https://github.com/petersirka/partial.js
- how to deploy: http://stackoverflow.com/questions/4681067/how-to-deploy-a-node-js-application
- ui: stage/roles/hosts selection
- ui: preload stages, hosts and roles
- on release_roles :all do
- TaskDef should hold a Type. So we could reference it as a phase
- (4) save logs from hosts to separate folders (log4j2?)
- :use shell groovy {"scope": "global", "name": "mongoTest"} -> will be translated into OnceRunCallable
- :set hosts=local
- monitor (external) changes to settings file
- mongo plugin
- ruby plugin
- ui: (ok, 1) order messages by timestamp (need to properly merge them on the client)
- ui: (ok, 2) transform \n to
's
- ui: (ok, 3) color highlighting for unix terminals
- ui: (4) mysql shell mode
- ui: (5) mongo shell mode (core)
- ui: (ok, 6) style console messages
- ui: notify about errors in logs
- look on how Jenkins uses ssh
- ui: green button usability - click edit, edit, if modified at least once, ask 'load?'
- ui: modified tabs (add *) on new messages arrival
- ui: draggable tabs, save tab layout
- ui: general compare sessions dialog (via class='session', phaseId='*')
- variable annotations (aliases, visibility level)
- support :set groovy[Shell].sendToHosts=true
- ui: scroll to the bottom of the scrollable area on the new text
- (ok) ui: auto-size shell panel
- ui: help like with (search for 'ace/ext/keybinding_menu' in project)
- ui: better formatting for diff (i.e. \n after div)
- ui: add global root task somewhere, add global timer
- ui: code completion for :set
- (ok) ui: nicer button placement for scripts, use the space
- reproduce and fix useless installations (timeout? stream is closed before it's fully read? cat texty)
- test error messages by setting incorrect rights at each step
- (ok) test revert to previous when deploy fails
- stop when errors
- think of unit testing
- test rollback
- maven installation (via dependencies:get)
- (declined) JRuby console
- make settings file more readable
utils:
- (ok) remote WAR deploy
- (ok) sql dumps
general testing:
- test failure reporting on timeouts
- test on a vm cluster (gets a lot more errors there)
features:
- there can be a single stream copier for the whole upp
- global task: concise API
- download plugin (wget, viaLocalCache option)
- tomcat plugin: configurable rights as of a service
- validate variables ("required" variables)
- variables registry (to list, to validate)
- list available variables
- fix weird error messages when errors occur
- make DynVars similar to JavaFX properties
- validation step: validation [ validate(closure) ]
- monit plugin: http://clock.co.uk/tech-blogs/deploying-nodejs-apps
- maven plugin
- verify vcs installation via plugin verification
- test: vars from console
- configure variables from ENV
- dependencies
- verify installation by checking version installed
- interactive mode
- local console
- (ok) proguard
- basic operations should be available from console (revert, show revision, show log)
- events, listeners & notifications
- rewrite deployments in static groovy/java 8
- check live status
Bear Script:
Settings.java:
- Defines stages
- Configures plugins
- Sets roles for servers and tasks
- Sets common vars
- support different auth types
- refactor remote console
- add bash prompt?
os plugin:
- check dep is installed
- configure installation list
- check/add/remove users
- ideas for distributed plugin
-- just put it's Task into $ at phase 1
-- build your project as Maven artifact and deploy it to a remote repo
-- `mvn install` on remotes
-- run code with classpath for this artifact
## History
- (ok) ui: run a command in on a single host from shell
- (ok) ui: check how vcs plugins work through ui
- (ok) ui: cancel command
- (ok) make sure any plugin can be run in a distributed fashion
- (ok) add phases for scripts (futures, waitAny, waitNone, waitAll) - exec code in a barrier
(ok) waitNone - default
(ok) waitAll - awaitAdvanceInterruptibly(arrive | arriveAndAwaitAdvance)
(ok) wait(condition($s))
(ok) waitAny
(ok) onAdvance - arrived barrier
- (ok) script reference - inlines a groovy script
- (ok) no need for deployment strategies
- (ok) ui: embed noty - add message for POM generation and, run finish and errors during run
- (ok) ui: better history - use command names, avoid duplicates, sort by timestamp, clear history, trash for items.
- (ok) commenting option for the directives: //!:
- (ok) ui: adapt this theme: https://github.com/onokumus/Bootstrap-Admin-Template
- (ok) noty for notices
-- (ok) mongo plugin
- (ok) bug: sendAllFinishedResults sends result only for the whole run
- (ok) upstart plugin (& fix play app)
- (ok) ReleaseManager + unit tests, embed release manager into deployment builder
-- (ok) get the last 1 and lastX commit messages for each of the releases
-- (ok) feature: rollback to a label or to a path
-- (ok) each release contains release.json with: date, branch, revision, lastX commit messages
-- (ok) deployment builder -> release manager -> creates a new pending release, builds the app, db migration
-- (ok) when done, builder -> play plugin -> stops the service, builder -> updates the label, then builder -> play -> starts
-- (ok) if it fails to start, then play plugin rolls back the label, deletes pending label and starts the old version, reverts migration
(ok) the rollback must be done in deployment builder:
(ok) failIfAnyFails()
(ok) ifRollback()
(ok) .beforeLabelSwitch(callable)
(ok) .afterLabelSwitch(callable)
- (ok) CLI decoupling:
-- (ok) Entry point is interpret(environment, properties, settings, script) in FXConf.java:308
-- (ok) CLI is like FX version with different appenders
-- (ok) single task execution model - app runs a task and finishes
- (ok) refactor BearScript and message sending (extract an interface from BearFX)
-- (ok) separate bearscript from execution
-- (ok) builders may provide settings and scripts
-- (ok) run a simple captures test with builders
-- (ok) mock server replies (inject mocked sys)
- (ok) FileWatcher
- (ok) better rm
-- (ok) create tasks with lambdas
-- (ok) return ticket (phase) on adding a taskdef
-- (ok)secure social demo for 3 hosts/single mysql
-- (ok) node.js demo: https://github.com/jedireza/drywall, https://github.com/jaredhanson/passport, https://github.com/madhums/node-express-mongoose-demo
-- (ok) grails demo
-- (ok) reference phases from scripts
-- (ok) deploy mysql & test
-- (ok) deploy mongodb & test
-- (ok) run via scripts
- (ok) possible memory issue: after running two scripts memory jumps to 1.5GB
- (ok) jdk plugin
- (ok) grails plugin
- (ok) tomcat plugin
- (ok) upstart plugin
- (ok) play plugin
- (ok) set variables from the command line
- (ok) console: saving/loading user input - only in the very beginning
- (ok) add running from scripts
- (ok) ui: pending timer (http://jsfiddle.net/ganarajpr/LQGE2/)
- (ok) ui: add status counters notices
- (ok) ui: add current task notices
- (ok) ui: test multi servers
- (ok) ui: scrollable
- (ok) ui: console commands (split this task into sub-tasks, implement via doc)
- (ok) ui: local shell tab
- (ok) ui: groovy shell mode
- (ok) ui: code completion for groovy plugin
- (ok) ui: think of localhost vs local
- (ok) ui: toggle modes: ssh task, groovy remote, groovy local
- (ok) ui: save snippets, refresh snippets from disk, save-and-build-on-run
- (ok) ui: edit & reload settings - in groovy, open to edit in a window,
settings are active for a project, so need to be displayed in status,
-- (ok) as a button opening the editor
- (ok) pwd not printed (session not created)
- (ok)
x2 bug
- (ok) reload button for scripts, Ctrl-S inside mini-script editor
- (ok) refactor building - settings can be in
- (ok) general Bear script
- (declined) :use settings
- (declined) consider using only the groovy plugin - no, sometimes we just want to do ls, :set commands are shell-agnostic. plus there can be python or ruby
- (ok) ui: embed code completion
- (ok) ui: command summary to the local shell tab (divide into groups)
- (ok) ui: sent commands should be printed as well
- (ok) ui: command history on the right: short summary (first line), clicking
- (ok) ui: change scripts to snippets
- (declined) ui: download & install idea (core)
- (ok) ui: generate pom (core) & (declined) open in idea (core)
- (ok) ui: fix copy-paste
- (ok) ui: command history in the chosen combo (500 last commands)
- (ok) DI for scripts and plugins
- (ok) rollback command
-- (ok) reuse setup task validation
-- (ok) dependencies
- (ok) GitHub support
- (ok) replace Functions with VarFunctions
- (ok, 2) send messages from plugins via uiLogger (sends to 'ui'), logger (sends to console)
- (ok, 3) ui: logback messages (output to file, a window to view, monitor errors and display red exclamation mark when there are)
- (ok, 5) print '$host: capture shell' feature
- bug: 4 releases instead of 5
- custom setup?
© 2015 - 2025 Weber Informatics LLC | Privacy Policy