Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
893dae7
ci: add helper for running spell checks
O7EG Feb 2, 2025
8055c06
chore: add initial `.gitignore`
O7EG Feb 4, 2025
d68d01a
ci: add helper for generating changelogs
O7EG Feb 4, 2025
39cb9ce
ci: include commit authors in changelogs
O7EG Feb 4, 2025
8809b14
ci: include commit PRs in changelogs
O7EG Feb 4, 2025
edec701
ci: include commit bodies in changelogs
O7EG Feb 4, 2025
cf1f38d
ci: add links to more detailed changelogs
O7EG Feb 4, 2025
a3b76ab
ci: enhance issue references in changelogs
O7EG Feb 4, 2025
f4efad9
ci: add helper for running chart linter
O7EG Feb 4, 2025
2cd03ce
ci: add helper for running chart validator
O7EG Feb 4, 2025
64a87d7
ci: add job for running spell checks
O7EG Feb 4, 2025
deef1d2
ci: add job for running chart linters
O7EG Feb 4, 2025
1c278ce
ci: add job for running chart tests
O7EG Feb 4, 2025
fb8ce64
ci: add reusable action for installing `committed`
O7EG Feb 24, 2025
62724fd
ci: add workflow for enforcing commit style
O7EG Feb 24, 2025
042d57b
ci: add helpers for controlling Minikube clusters
O7EG Feb 24, 2025
3d6e281
ci: add helpers for running common Helm operations
O7EG Feb 24, 2025
6645e62
docs: describe how chart helpers can be used for development
O7EG Feb 24, 2025
f2585e9
docs: describe how Minikube helpers can be used for development
O7EG Feb 24, 2025
77c7b3e
docs: describe how to use helpers for adding chart repositories
O7EG Feb 24, 2025
11829dd
ci: add reusable action for installing `helm`
O7EG Feb 24, 2025
0610530
refactor: reuse step for installing `helm` in multiple jobs
O7EG Feb 24, 2025
4277213
refactor: reuse step for installing `ct` in multiple jobs
O7EG Feb 24, 2025
a607511
ci: add reusable action for installing `just`
O7EG Mar 18, 2025
5c7e783
ci: register external chart repositories required for validation
O7EG Mar 18, 2025
fa058db
ci: register external chart repositories required for testing
O7EG Mar 18, 2025
93ab4a4
ci: reuse helper for starting Minikube test clusters
O7EG Mar 18, 2025
6496cca
ci: add workflow for running various CI checks
O7EG Mar 18, 2025
9242331
ci: add step for extracting a list of validated charts
O7EG Mar 18, 2025
334ff05
ci: export validated chart list from reusable workflow
O7EG Mar 18, 2025
6a4d935
ci: add job for checking chart changelogs
O7EG Mar 18, 2025
6263599
ci: add support for limiting reusable checks to specific chart
O7EG Mar 18, 2025
5004f8d
ci: add workflow for packaging and releasing charts
O7EG Mar 18, 2025
d88c7ae
ci: register external chart repositories required for releasing
O7EG Mar 18, 2025
4a0a40a
ci: add step for preparing chart release notes
O7EG Mar 18, 2025
bcd513d
ci: configure `cr` to consume prepared release notes
O7EG Mar 18, 2025
a0b449c
ci: add reusable action for running `typos`
O7EG Mar 19, 2025
2c3adbf
refactor: reuse local action for running `typos`
O7EG Mar 19, 2025
70ee7a2
ci: add workflow for enforcing PR naming convention
O7EG Mar 19, 2025
24200d1
chore: add `database` to allowed commit scopes
O7EG Mar 20, 2025
0ca8878
docs(database): add initial README
O7EG Mar 20, 2025
c11afb0
build(database): add initial `.helmignore`
O7EG Mar 20, 2025
32dc595
build(database): add initial chart metadata
O7EG Mar 20, 2025
288636e
build(database): add external chart repository `cnpg`
O7EG Mar 20, 2025
3b8bca3
build(database): add dependency `@cnpg/cloudnative-pg` v0.23.2
O7EG Mar 20, 2025
ff12e57
feat(database): add initial database-operator config
O7EG Mar 20, 2025
b561a9e
build(database): add dependency `@cnpg/cluster` v0.2.1
O7EG Mar 20, 2025
58e5c96
feat(database): add initial database-cluster config
O7EG Mar 20, 2025
a4ac2e5
build(database): fail early when operator and cluster are enabled
O7EG Mar 20, 2025
4cb9c10
feat(database): configure cluster's pod affinity
O7EG Mar 20, 2025
ec35504
feat(database): add connection pooler for the primary instance
O7EG Mar 20, 2025
da39129
ci(database): add helper for deploying database-operators
O7EG Mar 20, 2025
4b3f87b
ci(database): add helper for deploying database-clusters
O7EG Mar 20, 2025
da3c00e
ci: add helper for deploying all EAASI components
O7EG Mar 20, 2025
ea9f2de
docs(database): describe a basic deployment procedure
O7EG Mar 20, 2025
82b6c80
docs(database): describe available configuration parameters
O7EG Mar 20, 2025
eb4ebec
docs(database): describe how a development database can be deployed
O7EG Mar 20, 2025
a274a87
ci: add helpers for testing deployed charts
O7EG Mar 21, 2025
15d5822
ci: rework `helm-tester` job to use custom helpers instead of `ct` tool
O7EG Mar 21, 2025
077656d
ci: ignore typo false positives triggered by `ba` surrounded by numbers
O7EG Mar 21, 2025
3037e0d
test(database): add ping-test for configured connection poolers
O7EG Mar 21, 2025
d502314
build(database): bump chart version to 0.5.0
O7EG Mar 21, 2025
2960228
chore(database): update changelog for version 0.5.0
O7EG Mar 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/actions/check-typos/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

name: check-typos
description: Helper for running Typos
inputs:
files:
description: Files to check
required: false
default: ''
runs:
using: composite
steps:
- name: Install and run Typos
uses: crate-ci/typos@v1.29.7
with:
config: ./configs/typos.toml
files: ${{ inputs.files }}
13 changes: 13 additions & 0 deletions .github/actions/setup-committed/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

name: setup-committed
description: Helper for installing Committed
runs:
using: composite
steps:
- name: Install Committed
uses: jaxxstorm/action-install-gh-release@v2.1.0
with:
repo: crate-ci/committed
tag: v1.1.7
12 changes: 12 additions & 0 deletions .github/actions/setup-helm/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

name: setup-helm
description: Helper for installing Helm
runs:
using: composite
steps:
- name: Install Helm
uses: azure/setup-helm@v4
with:
version: v3.17.0
12 changes: 12 additions & 0 deletions .github/actions/setup-just/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

name: setup-just
description: Helper for installing Just
runs:
using: composite
steps:
- name: Install Just
uses: taiki-e/install-action@v2
with:
tool: just@1.40.0
133 changes: 133 additions & 0 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

# Reusable workflow for running various checks on Helm charts

name: checks
on:
workflow_call:
inputs:
enable-change-detection:
description: Enable change detection
default: false
type: boolean
chart:
description: Limit checks to a specific chart
default: ''
type: string
outputs:
charts:
description: List of validated charts
value: ${{ jobs.helm-linter.outputs.charts }}

permissions:
contents: read

env:
CLICOLOR: 1

jobs:
helm-linter:
runs-on: ubuntu-latest
outputs:
charts: ${{ steps.ct-log-parser.outputs.charts }}
env:
CHART_TESTING_LOG: chart-testing.log
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# Fetch whole history required for change detection (if enabled)
fetch-depth: ${{ (inputs.enable-change-detection) && '0' || '1' }}
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
check-latest: true
- &install-just-step
name: Install Just
uses: ./.github/actions/setup-just
- &install-helm-step
name: Install Helm
uses: ./.github/actions/setup-helm
- &install-ct-step
name: Install chart-testing
uses: helm/chart-testing-action@v2.7.0
- &add-chart-repos-step
name: Add external chart repositories
run: just add-chart-repos
- name: Run chart linters and validators
run: |
set -o pipefail
if ${{ inputs.enable-change-detection }}; then
# Enable change detection if requested
set -- "--target-branch" "main"
elif test -n "${{ inputs.chart }}"; then
# Process only the specified chart
set -- "--charts" "./charts/${{ inputs.chart }}"
else
# Process all charts
set -- "--all"
fi
ct lint --config ./configs/chart-testing.yaml "$@" \
| tee "${{ env.CHART_TESTING_LOG }}"
- id: ct-log-parser
name: Parse chart-testing logs
uses: eaasi/chart-list-action@v0.3
with:
ct-log-file: ${{ env.CHART_TESTING_LOG }}

helm-tester:
runs-on: ubuntu-latest
needs:
- helm-linter
steps:
- name: Checkout repository
uses: actions/checkout@v4
- *install-just-step
- name: Install Minikube
uses: medyagh/setup-minikube@v0.0.20
with:
start: false
- name: Start Minikube cluster
run: just cluster-start
- *install-helm-step
- *add-chart-repos-step
- name: Build chart dependencies
run: just build-chart-deps
- name: Install charts
run: just deploy-all
- name: Test charts
run: just test-all

spell-checker:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run spell checker
uses: ./.github/actions/check-typos

changelog-checker:
runs-on: ubuntu-latest
needs:
- helm-linter
- spell-checker
if: ${{ needs.helm-linter.outputs.charts != '[]' }}
strategy:
matrix:
chart: ${{ fromJSON(needs.helm-linter.outputs.charts) }}
env:
CHANGELOG_FILE: ${{ matrix.chart.path }}/CHANGELOG.md
steps:
- name: Checkout chart's changelog
uses: actions/checkout@v4
with:
sparse-checkout: ${{ env.CHANGELOG_FILE }}
- name: Check chart's changelog
uses: eaasi/release-notes-action@v0.6
with:
changelog-file: ${{ env.CHANGELOG_FILE }}
release-version: ${{ matrix.chart.name }}-${{ matrix.chart.version }}
# Ignore missing changelogs for default chart version
continue-on-error: ${{ matrix.chart.version == '0.1.0' }}
25 changes: 25 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

# Workflow for running various CI checks

name: continuous-integration
on:
push:
branches:
- main
pull_request:
branches:
- '**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}

permissions:
contents: read

jobs:
checks:
uses: ./.github/workflows/checks.yaml
with:
enable-change-detection: ${{ github.ref != 'refs/heads/main' }}
44 changes: 44 additions & 0 deletions .github/workflows/commit-style.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

# Workflow for enforcing commit style conventions

name: commit-style
on:
push:
branches:
- main
pull_request:
branches:
- '**'

permissions:
contents: read

env:
CLICOLOR: 1

jobs:
commit-linter:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# Fetch full history for merge-base detection!
fetch-depth: 0
- id: commit-range
name: Determine commit range
uses: eaasi/commit-range-action@v0.5
- name: Install commit style linter
uses: ./.github/actions/setup-committed
- name: Run commit style linter
run: |
range="${{ steps.commit-range.outputs.commit-range }}"
echo "Linting commits:"
git log --color=always --graph --oneline "${range:?}" || true
echo ""
committed -vv --color=always \
--config ./configs/committed.toml \
"${range}"
echo "DONE: Commits follow the required style conventions."
86 changes: 86 additions & 0 deletions .github/workflows/pr-naming.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# SPDX-FileCopyrightText: 2025 Yale University
# SPDX-License-Identifier: Apache-2.0

# Workflow for enforcing PR naming conventions

name: pr-naming
on:
pull_request:
types:
- opened
- edited
- reopened

permissions:
contents: none

env:
COMMIT_MESSAGE_FILE: ./commit-message.txt
CLICOLOR: 1

jobs:
commit-message:
runs-on: ubuntu-latest
outputs:
content: ${{ steps.message-constructor.outputs.content }}
steps:
- id: message-constructor
name: Construct commit message
env:
PR_TITLE: ${{ github.event.pull_request.title }}
PR_BODY: |
${{ github.event.pull_request.body }}
run: |
print-commit-message() {
echo "${PR_TITLE:?}"
if test -n "${PR_BODY}"; then
echo ""
echo "${PR_BODY}"
fi
}
# Output commit message
{
echo "content<<ENDOFMSG"
print-commit-message
echo "ENDOFMSG"
} >> "${GITHUB_OUTPUT}"

commit-linter:
runs-on: ubuntu-latest
needs:
- commit-message
steps:
- &checkout-repository-step
name: Checkout repository
uses: actions/checkout@v4
with:
sparse-checkout: |
.github/actions
configs
- &prepare-commit-message-step
name: Prepare commit message
run: |
echo -n '${{ needs.commit-message.outputs.content }}' > "${{ env.COMMIT_MESSAGE_FILE }}"
- name: Install commit style linter
uses: ./.github/actions/setup-committed
- name: Run commit style linter
run: |
echo "Linting commit message:"
cat "${{ env.COMMIT_MESSAGE_FILE }}" | sed 's/^/> /'
echo ""
committed -vv --color=always \
--config ./configs/committed.toml \
--commit-file "${{ env.COMMIT_MESSAGE_FILE }}"
echo "DONE: PR follows the required naming conventions."

spell-checker:
runs-on: ubuntu-latest
needs:
- commit-message
steps:
- *checkout-repository-step
- *prepare-commit-message-step
- name: Run spell checker
uses: ./.github/actions/check-typos
with:
files: ${{ env.COMMIT_MESSAGE_FILE }}
Loading
Loading