Software applications are often accessible to multiple parties. For example, a database application may be hosted at a database server that is accessible to multiple database client machines. Typically, an integrated development environment (IDE) used to define a software application provides preconfigured and immutable deployment options. However, the preconfigured deployment options may not be well-suited to all software deployment scenarios.
A framework for configurable software deployment is disclosed. The framework may enable users to define new deployment configurations and to edit existing deployment configurations. Each deployment configuration may include a sequence of installation actions (e.g., to install a software package) and a sequence of retraction actions (e.g., to “roll back” or uninstall the software package). The framework may also enable users to reorder the sequences of install actions and retraction actions for individual deployment configurations. For example, the framework may provide graphical user interfaces (GUIs) to create, define, select, and reorder deployment configurations and sequences of actions.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
In a particular embodiment, a computer-implemented method includes, at a first computing device, identifying a deployment configuration associated with a software package that is deployable to a second computing device. The method also includes defining a first sequence of deployment actions selected from a list of deployment actions associated with the identified deployment configuration. The first sequence of deployment actions can be executed to install the software package at the second computing device (e.g., upon receiving a selection of an “install” option associated with the deployment configuration). A second sequence of deployment actions (which may or may not include overlapping deployment actions with the first sequence) may be defined and executed to retract the software package from the second computing device (e.g., upon receiving a selection of a “retract” option associated with the deployment configuration). The second computing device may be remotely located from the first computing device (e.g., a web server) or may be co-located, such as a network-accessible portion of the first computing device (e.g., a locally-hosted web site).
In another particular embodiment, a computer-readable medium includes instructions, that when executed by a computer, cause the computer to receive a selection of a deployment configuration associated with a software package that is deployable to a second computing device. The deployment configuration includes a set of actions. A first subset of the set of actions is associated with an install operation that installs the software package at the second computing device and a second subset of the set of actions is associated with a retract operation that retracts the software package from the second computing device. The instructions also cause the computer to receive a selection either the install operation or the retract operation. The instructions further cause the computer to execute the first subset of actions when the install operation is selected and to execute the second subset of actions when the retract operation is selected.
In another particular embodiment, a computer-readable medium includes instructions, that when executed by a computer, cause the computer to display a first graphical user interface (GUI) useable to select an active deployment configuration from a list of available deployment configurations associated with a software package that is deployable to a second computing device. The instructions also cause the computer to display a second GUI useable to add a new deployment configuration to the list of available deployment configurations. The second GUI includes a first GUI control to define a first sequence of deployment actions to install the software package at the second computing device and a second GUI control to define a second sequence of deployment actions to retract the software package from the second computing device.
The first computing device 110 includes deployment configuration logic 111 to generate deployment configuration GUIs 112 that are useable to create, edit, and identify one or more deployment configurations 113 associated with the software package 115. In a particular embodiment, the software package 115 may include one or more software components (e.g., files or classes), as illustrated by the software components 116. Each of the deployment configurations 113 may include a sequence of install actions and a sequence of retract actions. For example, the deployment configurations 113 may include a clean deployment configuration or an upgrade deployment configuration. A clean deployment may involve deleting a previous version of the software package followed by reinstalling the software package. An upgrade deployment may include transmitting only changed software components of the software package to the second computing device 150. The deployment configurations 113 may include a default deployment configuration, pre-defined deployment configurations, and user-defined deployment configurations.
The deployment configurations 113 may be created, selected, and defined via the deployment configuration GUIs 112 based on user input. For example, the deployment configuration GUIs 112 may be used to define a first sequence of deployment actions that are executable to install the software package 115 at the second computing device 150. The first sequence of deployment actions may be selected from a list of available deployment actions. One or more actions in the list of available deployment actions may be a user-defined action. Similarly, the deployment configuration GUIs 112 may be used to define a second sequence of deployment actions that are executable to retract the software package 115 from the second computing device 150. In a particular embodiment, the deployment configuration GUIs 112 are further useable to reorder the install sequence of steps and the retract sequence of steps associated with each of the deployment configurations 113. The deployment configuration logic 111, the deployment configuration GUIs 112, and the deployment configurations 113 may be located at an integrated development environment (IDE) at the first computing device 110 that is useable to create and edit source code corresponding to the software package 115. Deployment configurations and deployment configuration GUIs are further described and illustrated with reference to
In operation, the one or more deployment configurations 113 for the software package 115 may be created and edited using the deployment configuration GUIs 112. When an install operation associated with one of the deployment configurations 113 is selected, the first computing device 110 may transmit the software package 115 and actions 114 to the second computing device 150 (e.g., via a network 140). In a particular embodiment, the actions 114 instruct the second computing device 150 how to install the software package 115 such that the software package 115 and software components 116 are accessible and executable via the second computing device 150. For example, a third computing device 130 and other computing devices 120 may execute the software components 116 via a connection to the second computing device 150. When a retract operation associated with one of the deployment configurations 113 is selected, the first computing device 110 may transmit the actions 114 to the second computing device 150, where the actions 114 instruct the second computing device 150 how to retract (e.g., uninstall) the software package 115. In a particular embodiment, the actions 114 (e.g., installation or retraction actions) are software classes implementing one or more action interfaces. For example, each of the actions 114 may be software classes that implement a common “DeploymentAction” interface. The actions 114 may specify an installation location (e.g., folder or directory at the second computing device 150) and may include other commands executable by the second computing device 150.
It will be appreciated that the system 100 of
The web server 210 may include deployment configuration logic 211 to generate deployment configuration GUIs 212 that are useable to create, edit, and identify one or more deployment configurations associated with the software package 215. The deployment configuration logic 211, deployment configuration GUIs 212, deployment configurations 213, actions 214, software package 215, and software components 216 may be the same as the deployment configuration logic 111, the deployment configuration GUIs 112, the deployment configurations 113, the actions 114, the software package 115, and the software components 116 of
The web site 250 may be accessible to one or more other computing devices 230. For example, the web site 250 may provide shared access to shared documents, shared calendars, shared hyperlinks, shared lists, shared folders, shared files, shared contacts, shared tasks, and shared applications (e.g., an application that includes the software components 216 of the software package 215). In a particular embodiment, the web site 250 is a Sharepoint® web site. Sharepoint® is a registered trademark of Microsoft Corporation, located at One Microsoft Way, Redmond, Wash. 98052.
In operation, the one or more deployment configurations 213 may be created and edited using the deployment configuration GUIs 212. When an install operation associated with one of the deployment configurations 213 is selected, the software package 115 may be installed at the web site 250, as specified by the actions 214, such that the software package 215 becomes accessible to and executable by the other computing devices 230. When a retract operation associated with one of the deployment configurations 113 is selected, the software package 215 may be retracted from the web site 250, as specified by the actions 114.
It will be appreciated that the system 200 of
The GUI 300 may include a GUI element to identify an active deployment configuration 310. For example, in the particular embodiment illustrated in
The GUI 300 may also include a list 320 of available deployment configurations. For example, the available deployment configurations may include the default deployment configuration 321, a clean deployment configuration 322, and an upgrade deployment configuration 323. One or more of the deployment configurations may be user-defined. For example, the upgrade deployment configuration 323 may be user defined. The GUI 300 may further include one or more GUI buttons. For example, the GUI 300 may include a new button 330 to create a new deployment configuration and add the new deployment configuration to the list 320, an edit button 340 to edit an existing deployment configuration from the list 320, a view button 350 to view installation and retraction steps for an existing deployment configuration from the list 320, and a delete button 360 to delete an existing deployment configuration from the list 320.
It will be appreciated that the GUI 300 of
The GUI 400 may include text boxes useable by a user to provide a name 401 and a description 402 of the deployment configuration. The GUI 400 may also include a list of available installation actions 410. For example, in the particular embodiment illustrated in
The run pre-deployment command action may be configured to execute a pre-deployment command (e.g., an operating system command or a shell script) before any other installation actions are executed. The run post-deployment command action may be configured to execute a post-deployment command (e.g., an operating system command or a shell script) after all other installation actions are executed. The recycle application pool action may be configured to stop execution of worker threads (e.g., threads associated with a previously deployed software package). The add solution action may be configured to copy a software package to an installation location (e.g., a web site). The upgrade solution action may be configured to update a software package to a current version (e.g., by overwriting old software components of the software package with updated software components). The activate features action may be configured to activate one or more features of a software package. The retract solution action may be configured to deactivate the one or more features of the software package and to delete the software package from the installation location.
The GUI 400 may further include a list of selected installation actions 420. For example, the selected installation actions 420 for the upgrade deployment configuration may include the upgrade solution action. The GUI 400 may be operable to add and remove installation actions to and from the selected installation actions 420 (e.g., via a first add/remove control 430). The GUI 400 may also be operable to reorder the selected installation actions 420 (e.g., via a first reorder control 440).
The GUI 400 may include a list of available retraction actions 450. In a particular embodiment, the list of available retraction actions 450 is the same as the list of available installation actions 410. For example, the list of available retraction actions 450 and the list of available installation actions 410 may be based on a common list of available actions. One or more of the available retraction actions 450 may be user-defined.
The GUI may also include a list of selected retraction actions 460. For example, the selected retraction actions 460 for the upgrade deployment configuration may include the recycle application pool action and the retract solution action. The GUI 400 may be operable to add and remove retraction actions to and from the selected retraction actions 460 (e.g., via a second add/remove control 470). The GUI 400 may also be operable to reorder the selected retraction actions 460 (e.g., via a second reorder control 480).
The GUI 500 may include text boxes to edit a name 501 and a description 502 of the deployment configuration. The GUI 400 may also include a list of available installation actions 510, a list of available retraction actions 550, selected installation actions 520, and selected retraction actions 560. For example, the selected installation actions 520 for the clean deployment configuration may include the recycle application pool action, the retract solution action, the add solution action, and the activate features action. The selected retraction actions 560 may include the recycle application pool action and the retract solution action.
The GUI 500 may be operable to add and remove installation actions to and from the selected installation actions 520 (e.g., via a first add/remove control 530) and to reorder the selected installation actions 520 (e.g., via a first reorder control 540). The GUI 500 may also be operable to add and remove retraction actions to and from the selected retraction actions 560 (e.g., via a second add/remove control 570) and to reorder the selected retraction actions 560 (e.g., via a second reorder control 580).
It will be appreciated that the GUIs 400, 500 of
The method 600 includes, at a first computing device, identifying a deployment configuration associated with a software package that is deployable to a second computing device, at 602. In a particular embodiment, the second computing device is a remote web server hosting a web site that provides access to shared documents, shared calendars, shared hyperlinks, shared lists, shared folders, shared files, shared contacts, and shared tasks. For example, in
The method 600 also includes installing the software package, at 604-606, or retracting the software package, at 610-614. The installation of the software package may include defining a first sequence of deployment actions that are associated with the identified deployment configuration and that are executable to install the software package at the second computing device, at 604. For example, a sequence of install actions may be defined using the deployment configuration GUIs 112 of
Installing the software package may also include receiving a selection of an installation operation associated with the deployment configuration, at 606, and executing the first sequence of deployment actions to install the software package at the second computing device, at 608. For example, in
Retracting the software package may include defining a second sequence of deployment actions that are associated with the identified deployment configuration and that are executable to retract the software package from the second computing device, at 610. For example, a sequence of retract actions may be defined using the deployment configuration GUIs 112 of
Retracting the software package may also include receiving a selection of a retraction operation associated with the deployment configuration, at 612, and executing the second sequence of deployment actions to retract the software package from the second computing device, at 614. For example, in
The method 700 includes, at a first computing device, receiving a selection of a deployment configuration associated with a software package that is deployable to a second computing device, at 702. The deployment configuration includes a set of actions. A first subset of actions is associated with an install operation that installs the software package at the second computing device and a second subset of actions is associated with a retract operation that retracts the software package from the second computing device. For example, in
The method 700 also includes receiving a selection of the install operation or the retract operation, at 704. For example, in
The method 700 further includes determining whether the install or retract operation was selected, at 706. When the install operation is selected, the method 700 includes executing the first subset of actions, at 708. For example, in
The method 800 includes, at a computing device, displaying a first GUI useable to select an active deployment configuration from a list of available deployment configurations associated with a software package that is deployable to a second computing device, at 802. For example, in
The method 800 also includes displaying a second GUI usable to add a new deployment configuration to the list of available deployment configurations, at 804. For example, in
Displaying the second GUI includes displaying a first GUI element to define a first sequence of deployment actions to install the software package at the second computing device, where the first GUI element is useable to reorder the first sequence of deployment actions, at 806. For example, the list of available installation actions 410, the selected installation actions 420, the first add/remove control 430, and the first reorder control 440 of
Displaying the second GUI also includes displaying a second GUI element to define a second sequence of deployment actions to retract the software package from the second computing device, where the second GUI element is useable to reorder the second sequence of deployment actions, at 808. For example, the list of available retraction actions 450, the selected retraction actions 460, the second add/remove control 470, and the second reorder control 480 of
The computing device 910 includes at least one processor 920 and a system memory 930. Depending on the configuration and type of computing device, the system memory 930 may be volatile (such as random access memory or “RAM”), non-volatile (such as read-only memory or “ROM,” flash memory, and similar memory devices that maintain stored data even when power is not provided), or some combination of the two. The system memory 930 typically includes an operating system 932, one or more application platforms 934, one or more applications, and program data 938. The system memory 930 may also include deployment configuration logic 937. In an illustrative embodiment, the deployment configuration logic 937 is the deployment configuration logic 111 of
The computing device 910 may also have additional features or functionality. For example, the computing device 910 may also include removable and/or non-removable additional data storage devices such as magnetic disks, optical disks, tape, and standard-sized or flash memory cards. Such additional storage is illustrated in
The computing device 910 may also have input device(s) 960, such as a keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 970, such as a display, speakers, printer, etc. may also be included. In an illustrative embodiment, the input device(s) 960 and the output device(s) 970 may enable interaction with deployment configuration GUIs such as one or more of the deployment configuration GUIs 112 of
The computing device 910 also contains one or more communication connections 980 that allow the computing device 910 to communicate with other computing devices 990 over a wired or a wireless network. In an illustrative embodiment, the other computing devices 990 may include the computing devices 120, 130, or 150 of
It will be appreciated that not all of the components or devices illustrated in
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
Those of skill would further appreciate that the various illustrative logical blocks, configurations, modules, and process steps or instructions described in connection with the embodiments disclosed herein may be implemented as electronic hardware or computer software. Various illustrative components, blocks, configurations, modules, or steps have been described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The steps of a method described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in computer readable media, such as random access memory (RAM), flash memory, read only memory (ROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to a processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor or the processor and the storage medium may reside as discrete components in a computing device or computer system.
Although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments.
The Abstract of the Disclosure is provided with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments.
The previous description of the embodiments is provided to enable a person skilled in the art to make or use the embodiments. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the scope of the disclosure. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope possible consistent with the principles and novel features as defined by the following claims.