2020-03-29 16:36:54 -04:00
CAS Overlay Template [![Build Status ](https://travis-ci.org/apereo/cas-overlay-template.svg?branch=master )](https://travis-ci.org/apereo/cas-overlay-template)
=======================
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
Generic CAS WAR overlay to exercise the latest versions of CAS. This overlay could be freely used as a starting template for local CAS war overlays.
2019-10-31 21:43:47 -04:00
# Versions
2020-03-29 16:36:54 -04:00
- CAS `6.1.x`
- JDK `11`
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
# Overview
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
To build the project, use:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
```bash
# Use --refresh-dependencies to force-update SNAPSHOT versions
./gradlew[.bat] clean build
```
2019-10-31 21:43:47 -04:00
To see what commands are available to the build script, run:
```bash
2020-03-29 16:36:54 -04:00
./gradlew[.bat] tasks
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
To launch into the CAS command-line shell:
2019-10-31 21:43:47 -04:00
```bash
2020-03-29 16:36:54 -04:00
./gradlew[.bat] downloadShell runShell
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
To fetch and overlay a CAS resource or view, use:
2019-10-31 21:43:47 -04:00
```bash
2020-03-29 16:36:54 -04:00
./gradlew[.bat] getResource -PresourceName=[resource-name]
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
To list all available CAS views and templates:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
```bash
./gradlew[.bat] listTemplateViews
```
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
To unzip and explode the CAS web application file and the internal resources jar:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
```bash
./gradlew[.bat] explodeWar
```
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
# Configuration
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
- The `etc` directory contains the configuration files and directories that need to be copied to `/etc/cas/config` .
2019-10-31 21:43:47 -04:00
```bash
2020-03-29 16:36:54 -04:00
./gradlew[.bat] copyCasConfiguration
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
- The specifics of the build are controlled using the `gradle.properties` file.
## Adding Modules
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
CAS modules may be specified under the `dependencies` block of the [Gradle build script ](build.gradle ):
```gradle
dependencies {
compile "org.apereo.cas:cas-server-some-module:${project.casVersion}"
...
}
```
To collect the list of all project modules and dependencies:
2019-10-31 21:43:47 -04:00
```bash
2020-03-29 16:36:54 -04:00
./gradlew[.bat] allDependencies
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
### Clear Gradle Cache
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
If you need to, on Linux/Unix systems, you can delete all the existing artifacts (artifacts and metadata) Gradle has downloaded using:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
```bash
# Only do this when absolutely necessary
rm -rf $HOME/.gradle/caches/
```
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
Same strategy applies to Windows too, provided you switch `$HOME` to its equivalent in the above command.
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
# Deployment
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
- Create a keystore file `thekeystore` under `/etc/cas` . Use the password `changeit` for both the keystore and the key/certificate entries. This can either be done using the JDK's `keytool` utility or via the following command:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
```bash
./gradlew[.bat] createKeystore
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
- Ensure the keystore is loaded up with keys and certificates of the server.
On a successful deployment via the following methods, CAS will be available at:
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
* `https://cas.server.name:8443/cas`
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
## Executable WAR
Run the CAS web application as an executable WAR:
```bash
./gradlew[.bat] run
2019-10-31 21:43:47 -04:00
```
2020-03-29 16:36:54 -04:00
Debug the CAS web application as an executable WAR:
```bash
./gradlew[.bat] debug
```
Run the CAS web application as a *standalone* executable WAR:
```bash
./gradlew[.bat] clean executable
2019-10-31 21:43:47 -04:00
```
## External
2020-03-29 16:36:54 -04:00
Deploy the binary web application file `cas.war` after a successful build to a servlet container of choice.
## Docker
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
The following strategies outline how to build and deploy CAS Docker images.
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
### Jib
2019-10-31 21:43:47 -04:00
2020-03-29 16:36:54 -04:00
The overlay embraces the [Jib Gradle Plugin ](https://github.com/GoogleContainerTools/jib ) to provide easy-to-use out-of-the-box tooling for building CAS docker images. Jib is an open-source Java containerizer from Google that lets Java developers build containers using the tools they know. It is a container image builder that handles all the steps of packaging your application into a container image. It does not require you to write a Dockerfile or have Docker installed, and it is directly integrated into the overlay.
2019-10-31 21:43:47 -04:00
```bash
2020-03-29 16:36:54 -04:00
./gradlew build jibDockerBuild
2019-12-13 01:02:21 -05:00
```
2020-03-29 16:36:54 -04:00
### Dockerfile
You can also use the native Docker tooling and the provided `Dockerfile` to build and run CAS.
2019-12-13 01:02:21 -05:00
2020-03-29 16:36:54 -04:00
```bash
chmod +x *.sh
./docker-build.sh
./docker-run.sh
```