Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8391bd6
remove dev/prod profiles
joecorall Dec 7, 2025
d13473e
Add secrets to multiple services in docker-compose
joecorall Dec 11, 2025
7b97b19
http
joecorall Dec 17, 2025
e809582
Default to http
joecorall Dec 18, 2025
f4c45c3
Use smart port allocation
joecorall Dec 18, 2025
0393652
prepare for template repo
joecorall Dec 18, 2025
6b0b76f
fix GHA
joecorall Dec 18, 2025
a64a3ab
default to main starter site
joecorall Dec 18, 2025
7376462
Do not require fetching islandora-starter-site
joecorall Dec 19, 2025
ef92250
Add some helpers to understand bad config values
joecorall Dec 19, 2025
0b34f95
update sample override
joecorall Dec 23, 2025
94b7eac
Update init command to update proper permissions after a git clone
joecorall Dec 23, 2025
552811e
Merge README template into README.md
joecorall Dec 23, 2025
04d5223
generate certs, too, on init
joecorall Dec 28, 2025
f842c20
Better reverse proxy support
joecorall Dec 28, 2025
1771013
do not open the URL when SSH'd into a machine
joecorall Jan 7, 2026
1d72434
Fix ACME https
joecorall Jan 7, 2026
30d9f63
Remove unnecessary secrets from alpaca service
joecorall Jan 8, 2026
eeb78e6
Put default_settings.txt back
joecorall Jan 8, 2026
efdf135
better https support
joecorall Jan 8, 2026
6991b27
Call init when necessary
joecorall Jan 8, 2026
5389a7f
fix make traefik-https-letsencrypt
joecorall Jan 8, 2026
0270603
Put static conf in command
joecorall Jan 8, 2026
99d8b5d
Do not expose services in prod environments
joecorall Jan 8, 2026
1fd188f
cleanup
joecorall Jan 8, 2026
123ed55
fix traefik character encoding
joecorall Jan 9, 2026
1500e75
reduce output on make up
joecorall Jan 9, 2026
421580e
fix traefik routing on fcrepo
joecorall Jan 9, 2026
ee84111
fix make clean
joecorall Jan 9, 2026
08b1a5e
Add custom makefile support
joecorall Jan 9, 2026
51bd108
Move chmod from make init to make build
joecorall Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 0 additions & 21 deletions .gitattributes

This file was deleted.

53 changes: 53 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "Setup ISLE Composite"
description: "Sets up the ISLE environment"
inputs:
buildkit-tag:
description: "islandora-devops/isle-buildkit docker tag to pull"
default: "main"
starter-site-owner:
description: "islandora-starter-site github owner"
default: "Islandora-Devops"
starter-site-ref:
description: "islandora-starter-site ref to checkout"
default: "heads/main"
runs:
using: "composite"
steps:
- name: Validate Inputs
shell: bash
run: |
REGEX_DOCKER="^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127}$"
REGEX_GITHUB_OWNER="^[a-zA-Z0-9]([a-zA-Z0-9-]{0,37}[a-zA-Z0-9])?$"
REGEX_GIT_REF="^([a-zA-Z0-9._\/-]+)$"
validate() {
local name=$1
local value=$2
local regex=$3
if [[ ! $value =~ $regex ]]; then
echo "::error::Invalid input for $name: '$value'. Potential shell injection or malformed string."
exit 1
fi
}

validate "buildkit-tag" "${{ inputs.buildkit-tag }}" "$REGEX_DOCKER"
validate "starter-site-owner" "${{ inputs.starter-site-owner }}" "$REGEX_GITHUB_OWNER"
validate "starter-site-ref" "${{ inputs.starter-site-ref }}" "$REGEX_GIT_REF"

- name: setup git identity
shell: bash
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"

- name: Start islandora-starter-site
shell: bash
env:
ISLANDORA_TAG: ${{ inputs.buildkit-tag }}
TERM: xterm-256color
run: make up

- name: make sure traefik is serving traffic
shell: bash
run: ./scripts/ping.sh
env:
TERM: xterm-256color
33 changes: 15 additions & 18 deletions .github/workflows/integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,42 +27,39 @@ jobs:
matrix:
os: [ubuntu-22.04, ubuntu-24.04]
env:
ISLANDORA_TAG: "${{ github.event.inputs.buildkit-tag || 'main' }}"
ISLE_SITE_TEMPLATE_REF: "${{ github.ref_name }}"
ISLANDORA_STARTER_OWNER: "${{ github.event.inputs.starter-site-owner || 'islandora-devops' }}"
ISLANDORA_STARTER_REF: "${{ github.event.inputs.starter-site-ref || 'heads/main' }}"
TERM: xterm-256color
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5

- run: shellcheck tests/*.sh

- name: setup git identity
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actons"
- name: Setup ISLE
uses: ./.github/actions/setup
with:
buildkit-tag: "${{ github.event.inputs.buildkit-tag || 'main' }}"
starter-site-owner: "${{ github.event.inputs.starter-site-owner || 'islandora-devops' }}"
starter-site-ref: "${{ github.event.inputs.starter-site-ref || 'heads/main' }}"

- name: Install mkcert
run: |-
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert

- name: Start islandora-starter-site
run: ./tests/init-template-starter.sh
- run: make traefik-https-mkcert down-traefik up ping

- run: make traefik-http down-traefik up ping

- name: Collect logs for each service
if: ${{ always() }}
if: ${{ failure() }}
run: |
mkdir -p logs
services=$(docker compose --profile dev config --services)
services=$(docker compose config --services 2>/dev/null)
for service in $services; do
docker compose --profile dev logs $service > "logs/${service}.log"
docker compose logs $service 2>/dev/null > "logs/${service}.log"
done
docker compose --profile dev exec mariadb-dev mysqldump drupal_default > logs/drupal_default.sql
docker compose exec mariadb mysqldump drupal_default 2>/dev/null > logs/drupal_default.sql

- name: Upload logs as artifacts
if: ${{ always() }}
if: ${{ failure() }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: docker-logs-${{ matrix.os }}
Expand All @@ -79,4 +76,4 @@ jobs:

- name: cleanup
if: ${{ always() }}
run: docker compose --profile dev down
run: make down
36 changes: 2 additions & 34 deletions .github/workflows/lint-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,13 @@ name: lint-test
on: [push]
jobs:
lint:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5

- run: shellcheck *.sh
- run: shellcheck **/*.sh

- uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5 # v3.3.0
with:
dockerfile: drupal/Dockerfile
verbose: true

test:
needs: [lint]
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5

- name: install mkcert (ubuntu or macos)
shell: bash
run: |-
ARCH="linux/amd64"
if [ "${{ matrix.os }}" = "macos-latest" ]; then
ARCH="darwin/arm64"
elif [ "${{ matrix.os }}" = "macos-13" ]; then
ARCH="darwin/amd64"
fi

curl -JLO "https://dl.filippo.io/mkcert/latest?for=$ARCH"
chmod +x mkcert-v*
cp mkcert-v* /usr/local/bin/mkcert
cp sample.env .env

- name: generate-certs
shell: bash
run: ./generate-certs.sh

- name: generate-secrets
shell: bash
run: ./generate-secrets.sh
20 changes: 20 additions & 0 deletions .github/workflows/update-starter-site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Update from Islandora Starter Site

on:
schedule:
- cron: '0 7 * * *' # Runs daily at 7am UTC
workflow_dispatch:

jobs:
update:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5

- name: Update from starter site
run: make overwrite-starter-site

- name: Create Pull Request
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make create-starter-site-pr
29 changes: 0 additions & 29 deletions .pre-commit-config.yaml

This file was deleted.

57 changes: 0 additions & 57 deletions .vscode/settings.json

This file was deleted.

65 changes: 65 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
.PHONY: help pull init up down build setup traefik-http traefik-https-mkcert traefik-https-letsencrypt traefik-certs overwrite-starter-site create-starter-site-pr status clean ping

# If custom.makefile exists include it.
-include custom.Makefile

PROJECT_NAME=$(shell grep '^COMPOSE_PROJECT_NAME=' .env | cut -d= -f2 | tr -d '"' || basename $(CURDIR))
DEFAULT_HTTP=80
DEFAULT_HTTPS=443

help: ## Show this help message
@echo 'Usage: make [target]'
@echo ''
@echo 'Available targets:'
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)

status: ## Show the current status of the development environment
@./scripts/status.sh

traefik-http: ## Switch to HTTP mode (default)
@./scripts/traefik-http.sh

traefik-https-mkcert: traefik-certs ## Switch to HTTPS mode using mkcert self-signed certificates
@./scripts/traefik-https-mkcert.sh

traefik-https-letsencrypt: ## Switch to HTTPS mode using Let's Encrypt ACME
@./scripts/traefik-https-letsencrypt.sh

traefik-certs: ## Generate mkcert certificates
@./scripts/generate-certs.sh

pull:
@docker compose pull --ignore-buildable --ignore-pull-failures

build: pull ## Build the drupal container
@./scripts/build.sh

init: ## Get the host machine configured to run ISLE
@./scripts/init.sh

up: ## Start docker compose project with smart port allocation
@./scripts/up.sh

up-%: ## Start a specific service (e.g., make up-drupal)
@docker compose up $* -d

down: ## Stop/remove the docker compose project's containers and network.
@docker compose down

down-%: ## Stop/remove a specific service (e.g., make down-traefik)
@docker compose down $*

logs-%: ## Look at logs for a specific service (e.g., make logs-drupal)
@docker compose logs $* --tail 20 -f

clean: ## Delete all stateful data.
@./scripts/clean.sh

ping: ## Ensure site is available.
@./scripts/ping.sh

overwrite-starter-site: ## Keep site template's drupal install in sync with islandora-starter-site
@./scripts/overwrite-starter-site.sh

create-starter-site-pr: ## Create a PR for islandora-starter-site updates
@./scripts/create-pr.sh
Loading