This repository contains the infrastructure and application code for the PACSCL/Penn Libraries Finding Aids discovery site.
Development is done in a Docker-based environment managed by Taskfile. This README covers setup and deployment details for development, staging, and production.
For Rails app-specific documentation, see rails_app/README.md.
The development environment uses Taskfile and Docker. Running task up creates a Docker container that executes Ansible provisioning tasks.
-
Install Task (
go-task):- Linux: Follow the Task installation instructions for your package manager.
- macOS:
brew install go-task
-
Install Docker:
- macOS: Install Docker Desktop.
You should also request access to the Penn Libraries Docker Team license via IT Helpdesk for full functionality. - Linux: Install Docker Engine.
- macOS: Install Docker Desktop.
-
Change to the
.devdirectory:cd .dev -
Start the environment:
task up
On first run, Task will fetch remote taskfiles and prompt for confirmation (
Y).During startup, you may be prompted for:
- your local machine password (to update
/etc/hosts) - your LDAP credentials (to retrieve secrets from HashiCorp Vault)
- your local machine password (to update
-
After provisioning finishes, verify the app is running at:
https://findingaids-dev.library.upenn.edu/
When the environment is running, switch Docker context to the app environment:
task docker:context:use:appAfter switching, local Docker commands (for example, docker ps) operate against the development environment.
When finished, switch back to your default context:
task docker:context:use:defaultOnce your environment is set up:
-
Switch Docker context (see Docker context):
task docker:context:use:app
-
Open a shell in the app container:
docker exec -it fad_finding_aid_discovery.1.{container-id} sh
For Rails application details (tests, harvesting tasks, style guide, and general app development), see rails_app/README.md.
Solr runs in SolrCloud mode, using Apache ZooKeeper for centralized cluster management.
ZooNavigator is used to manage ZooKeeper in deployed environments.
Access Solr Admin at:
http://findingaids-dev.library.upenn.int/solr/#/
GitLab deploys to staging and production under specific conditions.
- GitLab deploys to staging whenever new code is merged into
main. - Staging URL: https://findingaids-staging.library.upenn.edu/
- Direct pushes to
mainare not allowed; changes must be merged via merge request.
Production deployments are triggered by creating a Git tag that matches Semantic Versioning (for example, v1.0.0).
Create production tags by creating a new GitLab Release:
- Go to Create Release
- Create the next semantic version tag in sequence.
- Associate a milestone (if applicable).
- Set the release title to match the tag.
- Click Create Release.
Production URL: https://findingaids.library.upenn.edu/
Harvesting jobs are scheduled with sidekiq-cron:
- Production: Monday, Wednesday, Friday at 5:00 AM
- Staging: Monday, Wednesday, Friday at 1:00 AM
Schedule configuration lives in rails_app/config/schedule.yml.