Skip to content

Commit e703e9b

Browse files
committed
Merge branch 'main' into release/server/v1.0.0
# Conflicts: # site/docs/server/getting-started.md
2 parents aa8ded8 + 9cdc7e3 commit e703e9b

File tree

7 files changed

+400
-4
lines changed

7 files changed

+400
-4
lines changed

.github/workflows/helm-cache-release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@ jobs:
2020
chart-name: pathling-cache
2121
tag-prefix: helm-cache-v
2222
version: ${{ inputs.version }}
23+
secrets:
24+
GPG_KEY: ${{ secrets.GPG_KEY }}
25+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
2326
permissions:
2427
contents: write

.github/workflows/helm-release.yml

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ on:
2323
description: Chart version to release (for manual dispatch).
2424
required: false
2525
type: string
26+
secrets:
27+
GPG_KEY:
28+
description: GPG private key for signing the chart.
29+
required: true
30+
GPG_PASSPHRASE:
31+
description: Passphrase for the GPG private key.
32+
required: true
2633

2734
jobs:
2835
release-helm-chart:
@@ -38,6 +45,26 @@ jobs:
3845
- name: Set up Helm
3946
uses: azure/setup-helm@v4
4047

48+
- name: Import GPG key
49+
env:
50+
GPG_KEY: ${{ secrets.GPG_KEY }}
51+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
52+
run: |
53+
# Import the GPG key.
54+
echo "$GPG_KEY" | gpg --batch --import
55+
56+
# Get the key ID.
57+
KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | head -1 | awk '{print $2}' | cut -d'/' -f2)
58+
echo "KEY_ID=${KEY_ID}" >> $GITHUB_ENV
59+
60+
# Get the key name for Helm signing.
61+
KEY_NAME=$(gpg --list-secret-keys --keyid-format LONG | grep uid | head -1 | sed 's/.*] //')
62+
echo "KEY_NAME=${KEY_NAME}" >> $GITHUB_ENV
63+
64+
# Create legacy GPG keyring for Helm (which uses the old format).
65+
mkdir -p ~/.gnupg
66+
echo "$GPG_KEY" | gpg --batch --no-tty --pinentry-mode loopback --passphrase "$GPG_PASSPHRASE" --export-secret-keys > ~/.gnupg/secring.gpg
67+
4168
- name: Extract and validate version
4269
working-directory: ${{ inputs.chart-path }}
4370
env:
@@ -61,20 +88,35 @@ jobs:
6188
6289
echo "Releasing chart version: ${VERSION}"
6390
64-
- name: Package chart
91+
- name: Package and sign chart
6592
env:
6693
INPUT_CHART_PATH: ${{ inputs.chart-path }}
6794
INPUT_CHART_NAME: ${{ inputs.chart-name }}
95+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
6896
run: |
69-
helm package "$INPUT_CHART_PATH"
97+
helm package "$INPUT_CHART_PATH" \
98+
--sign \
99+
--key "$KEY_NAME" \
100+
--keyring ~/.gnupg/secring.gpg \
101+
--passphrase-file <(echo "$GPG_PASSPHRASE")
70102
PACKAGE_NAME="${INPUT_CHART_NAME}-${VERSION}.tgz"
103+
PROVENANCE_NAME="${INPUT_CHART_NAME}-${VERSION}.tgz.prov"
71104
echo "PACKAGE_NAME=${PACKAGE_NAME}" >> $GITHUB_ENV
105+
echo "PROVENANCE_NAME=${PROVENANCE_NAME}" >> $GITHUB_ENV
72106
73107
if [ ! -f "$PACKAGE_NAME" ]; then
74108
echo "Error: Expected package ${PACKAGE_NAME} was not created"
75109
exit 1
76110
fi
77111
112+
if [ ! -f "$PROVENANCE_NAME" ]; then
113+
echo "Error: Expected provenance file ${PROVENANCE_NAME} was not created"
114+
exit 1
115+
fi
116+
117+
echo "Created signed package: ${PACKAGE_NAME}"
118+
echo "Created provenance file: ${PROVENANCE_NAME}"
119+
78120
- name: Checkout gh-pages branch
79121
uses: actions/checkout@v4
80122
with:
@@ -91,6 +133,7 @@ jobs:
91133
- name: Add chart to repository
92134
run: |
93135
cp "${PACKAGE_NAME}" gh-pages/helm/
136+
cp "${PROVENANCE_NAME}" gh-pages/helm/
94137
helm repo index gh-pages/helm/ --url https://pathling.csiro.au/helm --merge gh-pages/helm/index.yaml
95138
96139
- name: Commit and push

.github/workflows/helm-server-release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,8 @@ jobs:
2020
chart-name: pathling
2121
tag-prefix: helm-server-v
2222
version: ${{ inputs.version }}
23+
secrets:
24+
GPG_KEY: ${{ secrets.GPG_KEY }}
25+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
2326
permissions:
2427
contents: write

deployment/cache/chart/Chart.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@ apiVersion: v2
77
name: pathling-cache
88
description: A Varnish-based frontend cache optimised for use with Pathling
99
type: application
10-
version: 0.1.0
10+
version: 1.0.0
1111
appVersion: "1.0.0"
12+
annotations:
13+
artifacthub.io/signKey: |
14+
fingerprint: F814751C64B5F5E708A8C73FC3C6291FED48678D
15+
url: https://pathling.csiro.au/helm/pubkey.asc
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
{
2+
"$schema": "https://json-schema.org/draft-07/schema#",
3+
"title": "Pathling Cache Helm Chart Values",
4+
"description": "Configuration values for deploying Pathling Cache on Kubernetes",
5+
"type": "object",
6+
"properties": {
7+
"pathlingCache": {
8+
"type": "object",
9+
"description": "Pathling cache configuration",
10+
"properties": {
11+
"image": {
12+
"type": "string",
13+
"description": "Docker image for the Pathling cache",
14+
"default": "ghcr.io/aehrc/pathling-cache:latest"
15+
},
16+
"imagePullPolicy": {
17+
"type": "string",
18+
"description": "Image pull policy for the container",
19+
"enum": ["Always", "IfNotPresent", "Never"],
20+
"default": "IfNotPresent"
21+
},
22+
"replicas": {
23+
"type": "integer",
24+
"description": "Number of cache replicas to deploy",
25+
"minimum": 1,
26+
"default": 1
27+
},
28+
"pathlingHost": {
29+
"type": ["string", "null"],
30+
"description": "Hostname of the Pathling server to cache (required)"
31+
},
32+
"pathlingPort": {
33+
"type": ["integer", "null"],
34+
"description": "Port of the Pathling server to cache (required)"
35+
},
36+
"service": {
37+
"type": "object",
38+
"description": "Kubernetes service configuration",
39+
"properties": {
40+
"type": {
41+
"type": "string",
42+
"description": "Service type",
43+
"enum": ["ClusterIP", "NodePort", "LoadBalancer"],
44+
"default": "ClusterIP"
45+
},
46+
"port": {
47+
"type": "integer",
48+
"description": "Service port",
49+
"default": 80
50+
}
51+
}
52+
},
53+
"resources": {
54+
"type": "object",
55+
"description": "Resource requirements and limits for the cache pod",
56+
"properties": {
57+
"requests": {
58+
"type": "object",
59+
"description": "Resource requests for scheduling",
60+
"properties": {
61+
"cpu": {
62+
"type": ["string", "integer"],
63+
"description": "CPU request (e.g., '100m' or '1')"
64+
},
65+
"memory": {
66+
"type": "string",
67+
"description": "Memory request (e.g., '128Mi')"
68+
}
69+
}
70+
},
71+
"limits": {
72+
"type": "object",
73+
"description": "Resource limits for the container",
74+
"properties": {
75+
"cpu": {
76+
"type": ["string", "integer"],
77+
"description": "CPU limit (e.g., '200m' or '1')"
78+
},
79+
"memory": {
80+
"type": "string",
81+
"description": "Memory limit (e.g., '256Mi')"
82+
}
83+
}
84+
}
85+
},
86+
"default": {}
87+
},
88+
"tolerations": {
89+
"type": "array",
90+
"description": "Tolerations for pod scheduling",
91+
"items": {
92+
"type": "object",
93+
"properties": {
94+
"key": {
95+
"type": "string",
96+
"description": "Toleration key"
97+
},
98+
"operator": {
99+
"type": "string",
100+
"description": "Toleration operator",
101+
"enum": ["Exists", "Equal"]
102+
},
103+
"value": {
104+
"type": "string",
105+
"description": "Toleration value"
106+
},
107+
"effect": {
108+
"type": "string",
109+
"description": "Toleration effect",
110+
"enum": ["NoSchedule", "PreferNoSchedule", "NoExecute"]
111+
}
112+
}
113+
},
114+
"default": []
115+
},
116+
"affinity": {
117+
"type": "object",
118+
"description": "Affinity rules for pod scheduling",
119+
"default": {}
120+
},
121+
"nodeSelector": {
122+
"type": "object",
123+
"description": "Node selector for pod scheduling",
124+
"additionalProperties": {
125+
"type": "string"
126+
},
127+
"default": {}
128+
}
129+
}
130+
}
131+
}
132+
}

deployment/helm/pathling/Chart.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: pathling
33
description: A Helm chart for Pathling Server
44
icon: https://raw.githubusercontent.com/aehrc/pathling/main/media/logo-icon-colour-detail.svg
55
type: application
6-
version: 1.0.2
6+
version: 2.0.0
77
maintainers:
88
- name: John Grimes
99
email: John.Grimes@csiro.au
@@ -15,3 +15,7 @@ keywords:
1515
- standards
1616
- fhir
1717
- terminology
18+
annotations:
19+
artifacthub.io/signKey: |
20+
fingerprint: F814751C64B5F5E708A8C73FC3C6291FED48678D
21+
url: https://pathling.csiro.au/helm/pubkey.asc

0 commit comments

Comments
 (0)