This repository holds the scripts needed to deploy a GeneXus generated application to different Cloud Providers and/or infrastructure.
For more information about GeneXus's Deploy engine go to Application Deployment tool.
The following is the list of supported services:
Folder | Service |
---|---|
AWSElasticBeanstalk | Amazon Elastic Beanstalk |
AWSLambda | Amazon Lambda |
AWSServerless | Amazon Serverless |
Azure | Microsoft Azure Web Apps |
AzureFunctions | Azure Functions |
AzureServerless | [Azure Servless] |
Docker | Docker (& Kubernetes) |
GoogleAppEngine | Google App Engine |
HCP | SAP Cloud Platform (Neo) |
IBMCF | IBM Cloud Foundry |
Local | Local zip/war |
LocalSources | Local source files (Java only) |
SAPCloudFoundry | SAP Cloud Platform (Cloud Foundry) |
StaticFrontEnd | AWS S3 & Azure Object Storage |
This is the list of services we are working on:
Folder | Service |
---|---|
AWSECS | Amazon Elastic Container Service |
Note: you can try this services through the GeneXus Beta Testing program.
As of GeneXus 16 Upgrade 11, this repository is the source for GeneXus and the Deployment Targets it supports. The content of this repository is distributed with different GeneXus upgrades, you can find those scripts in a GeneXus installation inside the DeploymentTargets directory.
If you found some new services that are not available in your current GeneXus installation, you can execute the following steps to integrate them to your installation:
- Clone of the repository
- Execute the
deploy.bat
included given the GeneXus installation path as an argument. You can optionally update one single Target adding the name of the folder as second argument
Note: these steps could be necessary if you update GeneXus afterwards.
git clone https://github.com/genexuslabs/deployment-targets.git .
.\deploy.bat "C:\Program Files\GeneXus" [Target]
We're open for Pull Requests, so if you need a new target or want to contribute with one, you are welcome to fork this repository and help us improve our product.
Deployment Targets are based on MSBuild. Anyone can create their own Deployment Target, and here's what you need to know.
-
Create a folder under src where you want to add your files.
-
Create the definition file, which must be called
Definition.target
. This is is an XML file with the following tags
Tag | Description |
---|---|
ID | Unique identifier for the Deployment Target |
Name | Name that will appear in the GeneXus IDE |
Description | Meaningfull description (can also be a key to a resx file) |
DeployMSBuild | MSBuild script that will be executed |
DeployMSBuildTarget | Target to be called in the mentioned above MSBuild script |
ResolverFactory | Dll file that will hold the resolvers for properties' default or visibility attributes. |
Languages | List of supported languages and their assigned application server |
PropertiesDefinitions | Name of the file where the properties are defined (if any) |
-
Create the properties definition file (when needed). This is also an xml file that will hold the definition for the properties you Deployment Target might need. You may want to take a look at the provided Properties.xml files in this repository.
-
Create the MSBuild script. This is the file that will do the actual deploy. The task you defined above will be called, along with every property defined by GeneXus plus your custom-defined properties. The most important property you'll receive is
$(DeploySource)
which will hold the path to the generated zip or war file, depending on the generator. That's the file you will want to upload to your target. Another usefull property is$(GX_PROGRAM_DIR)
which will contain the path to the installation of GeneXus. This is usefull in case you want to import in your script some targets provided by GeneXus (like the MSBuild Community targets).