Skip to content

genexuslabs/deployment-targets

Repository files navigation

Build

GeneXus Deployment Targets

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

Beta Services

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.

Installation

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:

  1. Clone of the repository
  2. 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]

Create your own Deployment 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.

  1. Create a folder under src where you want to add your files.

  2. 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)
  1. 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.

  2. 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).