Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cb2f093
IONOS(build): add Nextcloud Workspace artifact CI workflows
printminion-co Aug 20, 2026
3f327ea
IONOS(build): inject build number as 5th version component
printminion-co Aug 20, 2026
d347774
IONOS(submodules): add apps-external and IONOS config submodules
printminion-co Aug 20, 2026
133ddda
IONOS(theming): add IONOS theme
printminion-co Aug 20, 2026
cebfa89
IONOS(theming): add admin panel for legal URLs
printminion-co Aug 20, 2026
0c8dfcf
IONOS(admin-delegation): add delegated settings support to Settings a…
printminion-co Aug 20, 2026
511a7c7
IONOS(settings): convert admin settings to delegated settings
printminion-co Aug 20, 2026
f0afc35
IONOS(oauth2): convert admin settings to delegated setting
printminion-co Aug 20, 2026
f08d999
IONOS(systemtags): convert admin settings to delegated setting
printminion-co Aug 20, 2026
2c8884d
IONOS(settings): allow hiding the server dev notice
printminion-co Aug 20, 2026
c99d766
IONOS(core): drop enterprise subscription notification
printminion-co Aug 20, 2026
65f8dee
IONOS(user_ldap): handle user mapping exceptions for user_limit reached
printminion-co Aug 20, 2026
c7dea97
IONOS(chore): regenerate theming composer autoloader
printminion-co Aug 20, 2026
a53691a
IONOS(chore): make the IONOS delta REUSE compliant
printminion-co Aug 20, 2026
6ea09d1
IONOS(theming): fix Psalm errors in the IONOS delta
printminion-co Aug 20, 2026
64b9338
IONOS(theming): regenerate OpenAPI spec for the icon endpoints
printminion-co Aug 20, 2026
867008b
IONOS(ci): converge the build workflow trigger set onto per-major lanes
printminion-co Aug 21, 2026
ce27160
IONOS(ci): assert the branch major matches version.php
printminion-co Aug 21, 2026
9ac0655
IONOS(ci): derive branch routing instead of enumerating branch names
printminion-co Aug 21, 2026
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
96 changes: 96 additions & 0 deletions .github/actions/get-job-data/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# SPDX-FileCopyrightText: 2026 STRATO GmbH
# SPDX-License-Identifier: AGPL-3.0-or-later

name: 'Get Job Data from GitHub Actions'
description: 'Fetches the GitHub Actions job data from the GitHub API'
inputs:
job-name:
description: 'The name of the job to find'
required: true
github-token:
description: 'GitHub token for API authentication'
required: true
repository:
description: 'Repository in owner/repo format'
required: true
run-id:
description: 'GitHub Actions run ID'
required: true
outputs:
job_html_url:
description: 'The HTML URL of the job'
value: ${{ steps.get_url.outputs.job_html_url }}
runs:
using: 'composite'
steps:
- name: Fetch job URL from GitHub API
id: get_url
shell: bash
run: |
# Fetch the numeric job ID from GitHub API
CURL_ERROR_FILE=$(mktemp)
NETRC_FILE=$(mktemp)

# Write GitHub API credentials to a temporary netrc file to avoid
# passing the token directly on the curl command line.
printf '%s\n' \
'machine api.github.com' \
' login x-access-token' \
" password ${{ inputs.github-token }}" \
> "$NETRC_FILE"
chmod 600 "$NETRC_FILE"

# Ensure temporary file cleanup on exit
cleanup() {
if [ -n "$CURL_ERROR_FILE" ] && [ -f "$CURL_ERROR_FILE" ]; then
rm -f "$CURL_ERROR_FILE"
fi
if [ -n "$NETRC_FILE" ] && [ -f "$NETRC_FILE" ]; then
rm -f "$NETRC_FILE"
fi
}
trap cleanup EXIT

API_RESPONSE=$(curl -sS -w "\n%{http_code}" \
--netrc-file "$NETRC_FILE" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/${{ inputs.repository }}/actions/runs/${{ inputs.run-id }}/jobs" 2>"$CURL_ERROR_FILE")

CURL_EXIT_CODE=$?
if [ $CURL_EXIT_CODE -ne 0 ]; then
echo "❌ ERROR: curl request to GitHub API failed with exit code $CURL_EXIT_CODE"
if [ -s "$CURL_ERROR_FILE" ]; then
echo "curl error output:"
cat "$CURL_ERROR_FILE"
fi
echo "job_html_url=" >> "$GITHUB_OUTPUT"
exit 0
fi

HTTP_CODE=$(echo "$API_RESPONSE" | tail -n1)
RESPONSE_BODY=$(echo "$API_RESPONSE" | sed '$d')

if [ "$HTTP_CODE" != "200" ]; then
echo "⚠️ WARNING: GitHub API request failed with $HTTP_CODE"
echo "job_html_url=" >> "$GITHUB_OUTPUT"
exit 0
fi

EXPECTED_JOB_NAME="${{ inputs.job-name }}"
JOB_URL=$(echo "$RESPONSE_BODY" | jq -r \
--arg job_name "$EXPECTED_JOB_NAME" \
'.jobs[] | select(.name == $job_name) | .html_url')

if [ -z "$JOB_URL" ] || [ "$JOB_URL" = "null" ]; then
echo "⚠️ WARNING: Failed to extract job URL from response for job name '$EXPECTED_JOB_NAME'."
echo "Possible causes:"
echo " - The job name does not match exactly (including spaces and case)."
echo " - The job has not started yet at the time this action ran."
echo " - The GitHub API response format was unexpected."
echo "Please verify that the job has started before this action runs and double-check the exact job name in the GitHub Actions UI."
echo "job_html_url=" >> "$GITHUB_OUTPUT"
exit 0
fi

echo "job_html_url=$JOB_URL" >> "$GITHUB_OUTPUT"
echo "Job URL: $JOB_URL"
313 changes: 313 additions & 0 deletions .github/copilot-instructions.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .github/copilot-instructions.md.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2026 STRATO GmbH
SPDX-License-Identifier: AGPL-3.0-or-later
Loading
Loading