This Docker image for BitBucket Pipelines allows users to build Servoy WAR files, using options from Servoy's bundled WAR export. In order to use this Action, you will need an All Products Pack API key from Servoy Components.
See the LICENSE for more information on the dual licensing for commercial projects.
To view a full example project, including the workflow file, please see our examples repo.
image: atlassian/default-image:3
options:
size: 2x
definitions:
services:
docker:
memory: 7168
steps:
- step: &war-build
name: WAR Build
script:
- pipe: docker://itechpros/servoy-war-builder:0.4.8
variables:
SERVOY_VERSION: 2023.03.2.3844
API_KEY: ${SERVOY_COMPONENTS_API_KEY}
SOLUTION_NAME: MySolution
DEFAULT_ADMIN_USER: ${SERVOY_DEFAULT_ADMIN_USER}
DEFAULT_ADMIN_PASSWORD: ${SERVOY_DEFAULT_ADMIN_PASSWORD}
PROPERTIES_FILE: prop_files/servoy.build.properties
pipelines:
default:
- step: *war-build
You will need to follow the setup instructions for this integration.
image: atlassian/default-image:3
options:
size: 2x
definitions:
services:
docker:
memory: 7168
steps:
- step: &war-build
name: WAR Build
script:
- pipe: docker://itechpros/servoy-war-builder:0.4.8
variables:
SERVOY_VERSION: 2023.03.2.3844
API_KEY: ${SERVOY_COMPONENTS_API_KEY}
SOLUTION_NAME: MySolution
DEFAULT_ADMIN_USER: ${SERVOY_DEFAULT_ADMIN_USER}
DEFAULT_ADMIN_PASSWORD: ${SERVOY_DEFAULT_ADMIN_PASSWORD}
PROPERTIES_FILE: prop_files/servoy.build.properties
- pipe: atlassian/bitbucket-upload-file:0.1.2
variables:
BITBUCKET_USERNAME: $BITBUCKET_USERNAME
BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
FILENAME: "MySolution.war"
pipelines:
default:
- step: *war-build
You will need to follow the setup instructions for this integration.
image: atlassian/default-image:3
options:
size: 2x
definitions:
services:
docker:
memory: 7168
steps:
- step: &war-build
name: WAR Build
script:
- pipe: docker://itechpros/servoy-war-builder:0.4.8
variables:
SERVOY_VERSION: 2023.03.2.3844
API_KEY: ${SERVOY_COMPONENTS_API_KEY}
SOLUTION_NAME: MySolution
DEFAULT_ADMIN_USER: ${SERVOY_DEFAULT_ADMIN_USER}
DEFAULT_ADMIN_PASSWORD: ${SERVOY_DEFAULT_ADMIN_PASSWORD}
PROPERTIES_FILE: prop_files/servoy.build.properties
- pipe: atlassian/aws-s3-deploy:0.3.8
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION: 'us-east-1'
S3_BUCKET: 'bbci-example-s3-deploy'
LOCAL_PATH: 'MySolution.war'
ACL: 'public-read'
pipelines:
default:
- step: *war-build
You will need to follow the setup instructions for this integration.
image: atlassian/default-image:3
options:
size: 2x
definitions:
services:
docker:
memory: 7168
steps:
- step: &war-build
name: WAR Build
script:
- pipe: docker://itechpros/servoy-war-builder:0.4.8
variables:
SERVOY_VERSION: 2023.03.2.3844
API_KEY: ${SERVOY_COMPONENTS_API_KEY}
SOLUTION_NAME: MySolution
DEFAULT_ADMIN_USER: ${SERVOY_DEFAULT_ADMIN_USER}
DEFAULT_ADMIN_PASSWORD: ${SERVOY_DEFAULT_ADMIN_PASSWORD}
PROPERTIES_FILE: prop_files/servoy.build.properties
- pipe: microsoft/azure-cli-run:1.0.0
variables:
AZURE_APP_ID: $AZURE_APP_ID
AZURE_PASSWORD: $AZURE_PASSWORD
AZURE_TENANT_ID: $AZURE_TENANT_ID
CLI_COMMAND: 'az storage blob upload --file MySolution.war --container-name $containerName --account-name $storageAccount --auth-mode login'
pipelines:
default:
- step: *war-build
image: atlassian/default-image:3
options:
size: 2x
definitions:
services:
docker:
memory: 7168
steps:
- step: &war-build
name: WAR Build
script:
- pipe: docker://itechpros/servoy-war-builder:0.4.8
variables:
SERVOY_VERSION: 2023.03.2.3844
API_KEY: ${SERVOY_COMPONENTS_API_KEY}
SOLUTION_NAME: MySolution
DEFAULT_ADMIN_USER: ${SERVOY_DEFAULT_ADMIN_USER}
DEFAULT_ADMIN_PASSWORD: ${SERVOY_DEFAULT_ADMIN_PASSWORD}
PROPERTIES_FILE: prop_files/servoy.build.properties
- pipe: atlassian/sftp-deploy:0.8.0
variables:
USER: ${FTP_USER}
PASSWORD: ${FTP_PASSWORD}
SERVER: ${FTP_SERVER}
REMOTE_PATH: '/my/remote/path'
LOCAL_PATH: 'MySolution.war'
EXTRA_ARGS: '-o VerifyHostKeyDNS=yes -o StrictHostKeyChecking=no'
pipelines:
default:
- step: *war-build
Coming soon!
-s
-defaultAdminUser
-defaultAdminPassword
-p
variables:
# ...
PROPERTIES_FILE: servoy.war.properties # Use the servoy.war.properties file in the root directory of the repository
PROPERTIES_FILE: mydir/servoy.war.properties # Use the servoy.war.properties file in the "mydir" directory of the repository
-ie
variables:
# ...
IGNORE_BUILD_ERRORS: true # Ignore build errors
IGNORE_BUILD_ERRORS: false # Don't ignore build errors (default)
-sb
variables:
# ...
SKIP_BUILD: true # Don't generate build markers.
SKIP_BUILD: false # Generate build markers (default)
-dbi
variables:
# ...
DBI: true # Export based on DBI files
DBI: false # Don't export based on DBI files (default)
properties-file
.-pfw
variables:
# ...
PROPERTIES_FILE_WAR: servoy.war.properties # Use the servoy.war.properties file in the root directory of the repository
PROPERTIES_FILE_WAR: mydir/servoy.war.properties # Use the servoy.war.properties file in the "mydir" directory of the repository
-b
variables:
# ...
BEANS: bean1.jar bean2.zip # Include bean1.jar and bean2.zip in the export
BEANS: <none> # Don't include any beans in the export
-excludeBeans
variables:
# ...
EXCLUDE_BEANS: bean1.jar bean2.zip # Don't include bean1.jar and bean2.zip in the export
-l
variables:
# ...
LAFS: laf1 laf2 # Include laf1 and laf2 in the export
LAFS: <none> # Don't include any lafs in the export
-excludeLafs
variables:
# ...
EXCLUDE_LAFS: laf1 laf2 # Exclude laf1 and laf2 from the export
-d
variables:
# ...
DRIVERS: driver1.jar driver2.jar # Include driver1.jar and driver2.jar in the export
DRIVERS: <none> # Don't include any drivers in the export
-excludeDrivers
variables:
# ...
EXCLUDE_DRIVERS: driver1.jar driver2.jar # Exclude driver1.jar and driver2.jar from the export
-pi
variables:
# ...
PLUGINS: plugin1.jar plugin2.jar # Include plugin1.jar and plugin2.jar in the export
PLUGINS: <none> # Don't include any plugins in the export
-excludePlugins
variables:
# ...
EXCLUDE_PLUGINS: plugin1.jar plugin2.jar # Don't include plugin1.jar and plugin2.jar in the export
-crefs
variables:
# ...
COMPONENTS: component1 component2 # Include component1 and component2 in the export
COMPONENTS: all # Include all components in the export (default)
-excludeComponentPkgs
variables:
# ...
EXCLUDE_COMPONENTS: component1 component2 # Exclude component1 and component2 from the export
-srefs
variables:
# ...
SERVICES: service1 service2 # Include service1 and service2 in the export
SERVICES: all # Include all services in the export (default)
-excludeServicePkgs
variables:
# ...
EXCLUDE_SERVICES: service1 service2 # Exclude service1 and service2 from the export
-nas
variables:
# ...
ADDITIONAL_SOLUTIONS: mod_batch_processor mod_rest_api # Includes solutions "mod_batch_exporter" and "mod_rest_api" in the export, even if the primary solution doesn't include them as dependencies
-md
variables:
# ...
EXPORT_METADATA: true # Include metadata in the export
EXPORT_METADATA: false # Don't include metadata in the export (default)
-checkmd
variables:
# ...
CHECK_METADATA: true # Verify metadata
CHECK_METADATA: false # Don't verify metadata (default)
-sd
variables:
# ...
SAMPLE_DATA: true # Export sample data
SAMPLE_DATA: false # Don't export sample data (default)
-sdcount
variables:
# ...
SAMPLE_DATA_ROW_COUNT: 50 # Include 50 rows of sample data per table in the export
-i18n
variables:
# ...
I18N: true # Include i18n data in the export
I18N: false # Don't include i18n data in the export (default)
-users
variables:
# ...
USERS: true # Include users in the export
USERS: false # Don't include users in the export
-tables
variables:
# ...
TABLES: true # Include table information from referenced servers in the export
TABLES: false # Don't include table information from referenced servers in the export (default)
-warFileName
variables:
# ...
WAR_FILE_NAME: MyFile.war # Exports the WAR file to MyFile.war, instead of <primary solution name>.war
-overwriteGroups
variables:
# ...
OVERWRITE_GROUPS: true # Overwrites groups
OVERWRITE_GROUPS: false # Doesn't overwrite groups (default)
-allowSQLKeywords
variables:
# ...
ALLOW_SQL_KEYWORDS: true # Allows table/column names that are reserved SQL keywords
ALLOW_SQL_KEYWORDS: false # Doesn't allow table/column names that are reserved SQL keywords (default)
-stopOnDataModelChanges
variables:
# ...
STOP_ON_DATA_MODEL_CHANGES: true # Stops the import if it results in a data model change
STOP_ON_DATA_MODEL_CHANGES: false # Don't stop the import if it results in a data model change (default)
-allowDataModelChanges
variables:
# ...
ALLOW_DATA_MODEL_CHANGES: server1 server2 # Allow data model changes only on the server1 and server2 database servers
ALLOW_DATA_MODEL_CHANGES: all # Allow data model changes on all servers
-skipDatabaseViewsUpdate
variables:
# ...
SKIP_DATABASE_VIEWS_UPDATE: true # Skips updating database views
SKIP_DATABASE_VIEWS_UPDATE: false # Doesn't skip updating database views (default)
-overrideSequenceTypes
variables:
OVERRIDE_SEQUENCE_TYPES: true # Overrides the sequence types in the Servoy repository database with the sequence types in the export
OVERRIDE_SEQUENCE_TYPES: false # Doesn't override the sequence types in the Servoy repository database (default)
-overrideDefaultValues
variables:
# ...
OVERRIDE_DEFAULT_VALUES: true # Overrides the column default values in the Servoy repository database with the default values in the export
OVERRIDE_DEFAULT_VALUES: false # Doesn't override the default values in the Servoy repository database (default)
-insertNewI18NKeysOnly
variables:
# ...
INSERT_NEW_I18N_KEYS_ONLY: true # Only inserts new (doesn't update existing) i18n keys
INSERT_NEW_I18N_KEYS_ONLY: false # i18n keys are inserted and updated based on the export (default)
-importUserPolicy
variables:
# ...
IMPORT_USER_POLICY: 0 # Don't import any users
IMPORT_USER_POLICY: 1 # Create users & update groups (don't update existing users) (default)
IMPORT_USER_POLICY: 2 # Overwrite users based on the export
-addUsersToAdminGroup
variables:
# ...
ADD_USERS_TO_ADMIN_GROUP: true # Adds users to admin group
ADD_USERS_TO_ADMIN_GROUP: false # Doesn't add users to admin group (default)
-updateSequences
variables:
# ...
UPDATE_SEQUENCES: true # Updates Servoy sequences when the WAR is imported
UPDATE_SEQUENCES: false # Doesn't update Servoy sequences when the WAR is imported (default)
-upgradeRepository
variables:
# ...
UPGRADE_REPOSITORY: true # Upgrades the Servoy repository (if needed)
UPGRADE_REPOSITORY: false # Doesn't upgrade the Servoy repository (default)
-contextFileName
variables:
# ...
CONTEXT_FILE_NAME: context.xml # Use the context.xml file in the root directory of the repository
CONTEXT_FILE_NAME: mydir/context.xml # Use the context.xml file in the "mydir" directory of the repository
-useAsRealAdminUser
variables:
# ...
USE_AS_REAL_ADMIN_USER: true # The default admin user will be treated as a normal admin user in the solutions
USE_AS_REAL_ADMIN_USER: false # THe default admin user will not be treated as a normal admin user in the solutions (default)
-doNotOverwriteDBServerProperties
variables:
# ...
DO_NOT_OVERWRITE_DB_SERVER_PROPERTIES: true # Doesn't overwrite DB server properties on import
DO_NOT_OVERWRITE_DB_SERVER_PROPERTIES: false # Allows DB server properties to be overwritten (default)
-overwriteAllProperties
variables:
# ...
OVERWRITE_ALL_PROPERTIES: Overwrite all Servoy server properties based on the properties file included in this import
OVERWRITE_ALL_PROPERTIES: Don't overwrite any Servoy server properties (default)
-log4jConfigurationFile
variables:
# ...
LOG4J_CONFIGURATION_FILE: log4j.xml # Use the log4j.xml file in the root directory of the repository
LOG4J_CONFIGURATION_FILE: mydir/log4j.xml # Use the log4j.xml file in the "mydir" directory of the repository
-webXmlFileName
variables:
# ...
WEB_XML_FILE_NAME: web.xml # Use the web.xml file in the root directory of the repository
WEB_XML_FILE_NAME: mydir/web.xml # Use the web.xml file in the "mydir" directory of the repository
-ng2
variables:
# ...
NG2: true # Export NG2 resources
NG2: false # Don't export NG2 resources
NG2: sourcemaps # Export sourcemaps along with NG2 resources
-ng1
variables:
# ...
NG1: true # Export NG1 resources
NG1: false # Don't export NG1 resources (default)
variables:
# ...
LICENSES: "Servoy Components" ${{ secrets.SERVOY_LICENSE}} SERVER # Use a single license in the export
LICENSES: | # Use multiple licenses in the export
"Servoy Components" ${{ secrets.SERVOY_COMPONENTS_LICENSE }} SERVER
"My Other Company" ${{ secrets.MY_OTHER_COMPANY_LICENSE }} 1000
variables:
# ...
EXTRAS_FOLDER: ServoyDeveloperExtras # Use the plugins, drivers, etc. in ServoyDeveloperExtras/application_server in our export
variables:
# ...
TIMEOUT: 600000 # 10 minute timeout
TIMEOUT: 1800000 # 30 minute timeout
TIMEOUT: 3600000 # 1 hour timeout
Examples:variables:
# ...
POST_WAR_EXTRAS_FOLDER: PostWarExtras # Include the files & folders in PostWarExtras/ in our WAR
variables:
# ...
BUILD_MAX_MEMORY: 2048m # Limit the WAR builds to 2 GB of memory
BUILD_MAX_MEMORY: 4096m # Limit the WAR builds to 4 GB of memory
Supported Servoy Versions
Major Servoy Version Servoy Version Minimum Pipe Version Servoy 6 6.1.0.1418
6.1.1.1420
6.1.2.1421
6.1.3.1424
6.1.4.1429
6.1.5.1433
6.1.6.1439
Servoy 7
7.2.0.2013
7.3.0.2018
7.3.1.2022
7.4.0.2026
7.4.1.2028
7.4.2.2033
7.4.3.2036
7.4.4.2039
7.4.5.2041
7.4.6.2043
7.4.7.2045
7.4.8.2046
7.4.9.2047
7.4.10.2049
Servoy 8
8.0.0.3020
8.1.0.3027
8.1.1.3029
8.1.2.3031
8.1.3.3033
8.1.4.3035
8.2.0.3103
8.2.1.3105
8.2.2.3107
8.2.3.3109
8.3.1.3205
8.3.2.3207
8.3.3.3209
8.4.0.3402
Servoy 2019
2019.03.3412
2019.06.1.3503
2019.06.2.3504
2019.09.3522
2019.12.3542
2019.12.1.3543
Servoy 2020 2020.03.3562
2020.03.1.3563
2020.03.2.3564
2020.03.3.3565
2020.06.3582
2020.06.1.3583
2020.09.3602
2020.12.3622
2020.12.1.3623
Servoy 2021 2021.03.3642
2021.03.1.3643
2021.03.2.3644
2021.03.3.3645
2021.06.3683
2021.09.3703
2021.12.3722
2021.12.1.3723
2021.12.2.3724
Servoy 2022
2022.03.3742
2022.03.1.3743
2022.03.2.3744
2022.03.3.3745
2022.03.4.3746
2022.03.5.3747
2022.03.6.3748
0.4.1
2022.03.7.3749
0.4.1
2022.03.8.3750
0.4.1
2022.03.9.3751
0.4.3
2022.03.10.3752 0.4.7
2022.06.3782
2022.09.3803
2022.09.1.3804
2022.09.2.3805
2022.12.0.3823
2022.12.1.3824
Servoy 2023
2023.03.3842
2023.03.1.3843
2023.03.2.3844
2023.03.3.3845
2023.03.4.3846
0.4.1
2023.03.5.3847
0.4.1
2023.03.6.3848
0.4.1
2023.03.7.3849
0.4.4
2023.03.8.3850
0.4.7
2023.03.9.3851 0.4.11
2023.06.3883
2023.09.3902
2023.09.1.3903
0.2.0
2023.12.3922
0.4.0
2023.12.1.3923
0.4.0
2023.12.2.3924
0.4.0 Servoy 2024
2024.03.3943
0.4.1
2024.03.1.3944
0.4.4
2024.03.2.3945
0.4.5
2024.03.3.3946
0.4.8
2024.03.4.3947 0.4.11
2024.06.3982
0.4.6
2024.06.1.3983
0.4.9
2024.09.4002
0.4.10