In order to use Azure DevOps solution building features, your GeneXus Knowledge Base can be exported as .NET source code.
Once the sources are generated, you may synchronize your project with Azure Repos using the Synchronize to Git task.
The following pipeline job has to be added to your pipeline definition:
- job: GenerateSources
steps:
- script: >
$(MSBUILD) "$(BL_PATH)\deploy.msbuild" /t:CreateDeploy /p:KBPath="$(KB_PATH)"
/p:KBEnvironment="$(KBENVIRONMENT)" /p:DeploymentUnit="$(DEPLOYMENT_UNIT)"
/p:ProjectName="$(DEPLOY_NAME)" /p:TargetId="AZURE_SERVERLESS"
/p:ObjectNames="DeploymentUnitCategory:$(DEPLOYMENT_UNIT)"
/p:DEPLOY_TARGETS="$(BL_PATH)\DeploymentTargets\AzureServerless\azureserverless.targets"
/p:DeployFullPath="$(KB_PATH)\NetModel\Deploy\AZURE_SERVERLESS\$(DEPLOYMENT_UNIT)\$(DEPLOY_NAME)"
/p:WebSourcePath="$(KB_PATH)\NetModel\web" /p:GX_PROGRAM_DIR="$(BL_PATH)" /p:INCLUDE_GAM="False"
/p:INCLUDE_GXFLOW_BACKOFFICE="False" /p:DEPLOY_TYPE="SOURCES"
/p:APPLICATION_KEY="$(APPLICATION_KEY)" /p:TimeStamp="$(DEPLOY_NAME)"
name: CreateSources
- script: >
$(MSBUILD) /ToolsVersion:4.0 "$(KB_PATH)\NetModel\web\$(DEPLOY_NAME).gxdproj" /t:CreatePackage
/p:GX_PROGRAM_DIR="$(BL_PATH)" /p:AZURE_PUBLISH_SETTINGS="$(PUBLISH_SETTINGS)"
/p:APPLICATION_KEY="$(APPLICATION_KEY)" /p:DEPLOY_TYPE="SOURCES" /p:TimeStamp="$(DEPLOY_NAME)"
/p:INCLUDE_GAM="False" /p:INCLUDE_GXFLOW_BACKOFFICE="False"
name: PackageSources
- script: >
$(MSBUILD) "$(BL_PATH)\CreateCloudPackage.msbuild" /p:TargetId="AZURE_SERVERLESS"
/p:CreatePackageScript="createpackage.msbuild" /p:CreatePackageTarget="CreatePackage"
/p:DeployFullPath="$(KB_PATH)\NetModel\Deploy\AZURE_SERVERLESS\$(DEPLOYMENT_UNIT)\$(DEPLOY_NAME)"
/p:WebSourcePath="$(KB_PATH)\NetModel\web" /p:ProjectName="$(DEPLOY_NAME)"
/p:DeploymentUnit="$(DEPLOYMENT_UNIT)" /p:GX_PROGRAM_DIR="$(BL_PATH)"
/p:APPLICATION_KEY="$(APPLICATION_KEY)" /p:INCLUDE_GAM="False"
/p:INCLUDE_GXFLOW_BACKOFFICE="False" /p:APP_UPDATE="NONE" /p:ENABLE_KBN="False" /p:TARGET_JRE="9"
/p:PACKAGE_FORMAT="Automatic" /p:DEPLOY_TYPE="SOURCES" /p:TimeStamp="$(DEPLOY_NAME)"
/p:DeploySource="$(KB_PATH)\NetModel\Deploy\AZURE_SERVERLESS\$(DEPLOY_NAME).zip"
/t:CreatePackage
name: AdditionalResources
It is recommended that you set up your pipeline dependency to the Build step. Additionally, you may add an unconditional job trigger.
That can be accomplished by adding the following snippet to your job:
dependsOn: BuildKnowledgeBase
condition: or(succeeded(), eq(${{parameters.forceSources}}, True))
Parameter definition can be added as a root tag anywhere in your pipeline, as follows:
parameters:
- name: forceSources
displayName: Force Generate Sources
type: boolean
default: false
values:
- true
- false
There are no specific variable definitions required for the task. See GeneXus Server Azure Configuration for the generic variables required.
Package Type property