All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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