Transcript execution

LDS Account Integration
Disclaimer
• This is a training NOT a presentation.
– Be prepared to learn and participate in labs
• Please ask questions
• Prerequisites:
– Java Knowledge
– Basic understanding of LDAP
History
• In the beginning Maven and CruiseControl
– Produced an .ear
• Automated config and deploy Bundles
– Produced a .zip with an .ear/.war and env config
– DB Migrator produced a migration .zip
• Anthill Pro replaces CruiseControl
– Introduced secondary process execution
What is LDS Account?
• LDS Account is meant to be the single source for
user authentication and basic user information
• LDS Account is implemented with LDAP
• LDS Account is an application for maintaining
user attributes
LDS Account
"LDS Account is a single user name and password
for any person who interacts with online LDS
Church resources. LDS Account is the primary
account authentication credentials for most
Church sites and applications. It reduces
development costs that would be incurred as the
user interfaces change, or as upgrades to security
and the registration process are required. Unlike
previous authentication systems, LDS Account is
a branded single sign-on solution that is centrally
managed at ldsaccount.lds.org."
LDS Account (cont.)
"LDS Account has become the key to accessing all
the resources the Church has to offer, such as
family history tools, ward and stake websites,
employment resources, and more. ... The idea is
to have only one username and password that
you can use with all password-protected
websites the Church has."
User Details
• LDS Account also provides user information
– User details
– User details can be exposed through LDAP attributes,
or WAM headers, or SAML attributes
LDS Account integration in the Stack
• Consists of two main parts
– Authentication
– User information (details)
LDS Account User Details Integration
• The LDS Account module acts as a Java model for
LDS Account information
• LdsAccountDetails.java is the abstraction layer
for LDS Account user details integration
• Factories generate LdsAccountDetails object for
each user
– Factories handle the different formats in which the
raw user details attributes are provide to the
application
• LDAP attributes, WAM headers, SAML, …
Lab 1
Get acquainted with LDS Account integration points
Maven Lifecycles
• Maven uses lifecycles to orchestrate goals
• Phases represent steps in a lifecycle
Default
process-resources
compile
test-compile
Site
site
site-deploy
test
package
Clean
integration-test
install
pre-clean
deploy
clean
Executing a Lifecycle
• Lifecycles are executed by calling a phase
• Phase identifies where in lifecycle to stop
Default
Site
• Examples:
process-resources
site
– mvn test
site-deploy
– mvn install
Clean
– mvn clean install
pre-clean
– mvn site-deploy clean
clean
– mvn clean compile package install clean
compile
test-compile
test
package
integration-test
install
deploy
Phases in Lifecycle
• Phases in a lifecycle are mapped to plugin goals
– Dictated by default, packaging type, and pom config
Site
Default
Phases
Phases
War
process-resources
compile
compiler:compile
test-compile
compiler:testCompile
test
surefire:test
package
war:war
integration-test
install
install:install
deploy
deploy:deploy
Default
site
site:site
site-deploy
site:deploy
Clean
Phases
Default
pre-clean
clean
clean:clean
Example Binding in Pom Config
<project>
…
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<goals><goal>enforce</goal></goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
ALM the Lifecycle for Deployments
• Default Lifecycle builds
and managing artifacts
• What might a lifecycle
for application
deployment look like?
– Migrate database
– Deploy app
– Test deployed app
ALM Lifecycle
Phases
alm-bundle Bindings
alm-db
stack-db:migrate
alm-deploy
stack-tcat:deploy
alm-test
stack-test:functional-test
alm-promote
• Quiz:
– clean install
– alm-promote
– clean install alm-promote
Packaging the ALM Module
• ALM Module creates a
.zip containing:
– The project
– All Dependencies
– settings.xml file
• Zip can be rerun
• Same artifacts
ALM Execution Configuration
• Maven profiles represent environments
• Profiles allow custom environment configuration
– Choose deploy type/server
– Execute different tests
• Maven properties provide configuration
–
–
–
–
–
Deploy Username/Password
Skip test run
Skip DB migration
Defaults in profile->properties
Can be customized on command line “-Dsome=value”
How to execute a post build promotion?
1.
2.
3.
4.
Download alm zip file for project
Execute: mvn -s settings.xml alm-promote
Optionally add appropriate ‘-D’ parameters
Specify env using a maven profile (e.g. -P stage)
Lab 1
https://tech.lds.org/wiki/Using_the_ALM_Module
#Lab_1
Customizing ALM Execution
How to Customize ALM Promotion
• Maven Plugins (Preferred)
– Simplify common complex processes
– Cross Platform
• Java Platform Scripts (OK)
– Ant, Groovy, BeanShell, Java, etc.
– Fully customizable
– Cross Platform
• Shell Scripts (Worst Case)
– Executed using maven-exec-plugin
– Not Cross Platform
Maven Plugin Options
• Stack Tomcat Plugin
– Local and SSH Tomcat deploys
•
•
•
•
•
•
•
Stack Tcat Plugin
Stack DB Migrator Plugin
Stack Test Runner
Stack Was Deploy Plugin
Maven Deploy
Maven Wagon
Maven SCM Plugin
Java Platform Scripts
• Write custom scripts executed in Java
– Cross Platform
– More difficult to maintain
– Common scripts will be candidates for plugins
• Maven Ant and Antrun Plugins
– Very simple to execute ant scripts
• Gmaven Plugin
• Maven Exec Plugin
Shell Scripts
• Custom shell scripts packaged with alm bundle
– Executed with maven-exec-plugin
– Can come in handy
– Not cross platform
Lab 2
https://tech.lds.org/wiki/Using_the_ALM_Module
#Lab_2
Executing ALM Promotion in Anthill Pro
Executing through Anthill Pro
• Anthill represents an excellent engine for
executing ALM Modules
– Securely store build artifacts
– Can securely handle passwords
– Easily add parameters to a maven build
– Can track state of builds
– Can record and store results from multiple test runs
Roles of new Build System
Project Team (Developers)
• Developer ALM pom.xml for
project
– Functional Tests?
– DB Migration?
– Test Groups? (smoke, full, etc)
• Identify the Environments to
enable
• Test on local box
• Identify Anthill configurable
properties
– Skip Plugins?
– Usernames and passwords?
Build Team
• Add Project to Anthill
• Take configurable properties
from team add them to UI.
• Enable specified
environments
Java Stack Team
• Help developer ALM
Module
Demo ALM Module and Anthill Pro
Conclusion
•
•
•
•
ALM Module provides promotion orchestration
Puts more control in hands of project team
Build process now separate from promotion
Anthill pro is an excellent promotion engine
• We hope to see more automated promotions in
the future!!!