Pipeline stage to test that AM's FBC (file-based config) can be upgraded (and then used with AM successfully) after every commit. This stage will fail if required openam-config-upgrader rules are missing from fbc/master.groovy.
Deployments of (file-based) AM require an upgrade mechanism. The openam-config-upgrader (released within the AM.zip) can upgrade the FBC configuration files. To ensure that the upgrader rules are kept up to date the fbc-config-upgrader-tests stage has been added to the postCommit pipeline. The premise is that a known baseline FBC can be upgraded, using the tool and rules, and then used to successfully start up the latest version of AM. The rules should be idempotent; so running multiple times will produce the same end result.
See for the implementation.
Test failure is an indication to the code committer that a new file based configuration upgrade rule is required on master. (There is a dependency on completion of )
Slides for the DoD can be found here https://docs.google.com/presentation/d/19MMpHbkOKKWNqcYMzJdmeI8C3dMgPu3FYZ-8iUDMCCY/edit#slide=id.p
The test has its own deployer UpgradedFBCAmDeployer which can be called by the Tests' CLI. The AM-7.0.0 baseline configuration is in the OpenAM git repository along with scripts to generate a new configuration if/when required. At the time of writing there is one upgrade rule to set the configuration version.
N.B. the setup requires an external datastore i.e. not embedded datastore
[core] defaultenv = fbc [env.fbc] am_full_url = http://am.localtest.me:8080/openam amadmin_pwd = password am_root_dn = dc=openam,dc=forgerock,dc=org
Test specific data is handled by the .temper/config file.
$ temper functional-tests --deploy OpenAM-7.0.0-SNAPSHOT.war --hostname am.localtest.me --verbose --groups and\(and\(or\(idrepo,smoke\),not\(ssoadm\)\), not\(mock-server\)\) --file-based-upgrade
$ pwd /Users/user/git-repo/openam/jenkins-scripts/docker/centos7 $ OPENAM_VERSION=7.0.0-SNAPSHOT COMMAND="functional-tests --groups and\(and\(or\(idrepo,smoke\),not\(ssoadm\)\), not\(mock-server\)\)" docker-compose -f docker-compose.yml -f docker-compose.overrides.fbc-upgrade.yml up
Test specific data is handled by .yml and .temperconfig files.
CI Build Configuration optional-stages=fbc-config-upgrader-tests
Because this test implementation relies on a static known FBC the setup can be quite brittle. The baseline FBC does make use of some placeholders however there are a some significant hard coded values. Please refer to baseline configuration generation scripts and resources for its definitive status. The significant values are:
|Significant hard coded values ^|