# cas-overlay-template
**Repository Path**: CheonSeongIm/cas-overlay-template
## Basic Information
- **Project Name**: cas-overlay-template
- **Description**: Apereo CAS WAR Overlay template
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-02
- **Last Updated**: 2021-09-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# IMPORTANT NOTE
******************************************************
This repository is always automatically generated from the CAS Initializr. To learn more, please visit the [CAS documentation](https://apereo.github.io/cas).
******************************************************
Apereo CAS WAR Overlay Template
=====================================
WAR Overlay Type: `cas-overlay`
# Versions
- CAS Server `6.5.0-SNAPSHOT`
- JDK `11`
# Build
To build the project, use:
```bash
# Use --refresh-dependencies to force-update SNAPSHOT versions
./gradlew[.bat] clean build
```
To see what commands/tasks are available to the build script, run:
```bash
./gradlew[.bat] tasks
```
If you need to, on Linux/Unix systems, you can delete all the existing artifacts
(artifacts and metadata) Gradle has downloaded using:
```bash
# Only do this when absolutely necessary
rm -rf $HOME/.gradle/caches/
```
Same strategy applies to Windows too, provided you switch `$HOME` to its equivalent in the above command.
# Keystore
For the server to run successfully, you might need to create a keystore file.
This can either be done using the JDK's `keytool` utility or via the following command:
```bash
./gradlew[.bat] createKeystore
```
Use the password `changeit` for both the keystore and the key/certificate entries.
Ensure the keystore is loaded up with keys and certificates of the server.
## Extension Modules
Extension modules may be specified under the `dependencies` block of the [Gradle build script](build.gradle):
```gradle
dependencies {
implementation "org.apereo.cas:cas-server-some-module"
...
}
```
To collect the list of all project modules and dependencies in the overlay:
```bash
./gradlew[.bat] dependencies
```
To see a full list of all project dependencies that are available for configuration and use:
```bash
curl https://localhost:8080/dependencies
```
Or:
```bash
curl https://localhost:8080/actuator/info
```
# Deployment
On a successful deployment via the following methods, the server will be available at:
* `https://localhost:8443/cas`
## Executable WAR
Run the server web application as an executable WAR.
```bash
java -jar build/libs/cas.war
```
Or via:
```bash
./gradlew[.bat] run
```
Debug the CAS web application as an executable WAR:
```bash
./gradlew[.bat] debug
```
Or via:
```bash
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=y -jar build/libs/cas.war
```
Run the CAS web application as a *standalone* executable WAR:
```bash
./gradlew[.bat] clean executable
```
## External
Deploy the binary web application file in `build/libs` after a successful build to a servlet container of choice.
# Docker
The following strategies outline how to build and deploy CAS Docker images.
## Jib
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.
```bash
./gradlew build jibDockerBuild
```
## Dockerfile
You can also use the native Docker tooling and the provided `Dockerfile` to build and run.
```bash
chmod +x *.sh
./docker-build.sh
./docker-run.sh
```
For convenience, an additional `docker-compose.yml` is also provided to orchestrate the build:
```bash
docker-compose build
```
# CAS Command-line Shell
To launch into the CAS command-line shell:
```bash
./gradlew[.bat] downloadShell runShell
```
# Retrieve Overlay Resources
To fetch and overlay a CAS resource or view, use:
```bash
./gradlew[.bat] getResource -PresourceName=[resource-name]
```
# Create User Interface Themes Structure
You can use the overlay to construct the correct directory structure for custom user interface themes:
```bash
./gradlew[.bat] createTheme -Ptheme=redbeard
```
The generated directory structure should match the following:
```
├── redbeard.properties
├── static
│ └── themes
│ └── redbeard
│ ├── css
│ │ └── cas.css
│ └── js
│ └── cas.js
└── templates
└── redbeard
└── fragments
```
HTML templates and fragments can be moved into the above directory structure,
and the theme may be assigned to applications for use.
# List Overlay Resources
To list all available CAS views and templates:
```bash
./gradlew[.bat] listTemplateViews
```
To unzip and explode the CAS web application file and the internal resources jar:
```bash
./gradlew[.bat] explodeWar
```
# Configuration
- The `etc` directory contains the configuration files and directories that need to be copied to `/etc/cas/config`.
```bash
./gradlew[.bat] copyCasConfiguration
```
- The specifics of the build are controlled using the `gradle.properties` file.
## Configuration Metadata
Configuration metadata allows you to export collection of CAS properties as a report into a file
that can later be examined. You will find a full list of CAS settings along with notes, types, default and accepted values:
```bash
./gradlew exportConfigMetadata
```