Skip to content

Commit 12ad8c2

Browse files
committed
Merge branch 'development' into qt-csharp
2 parents cc35e05 + 92b6cb3 commit 12ad8c2

401 files changed

Lines changed: 7147 additions & 2837 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
name: Branch Deletion Phase One (PR Creation)
2+
permissions:
3+
contents: write
4+
pull-requests: write
5+
on:
6+
schedule:
7+
- cron: '00 22 1 * *' # 10PM on 1st of every month
8+
workflow_dispatch:
9+
inputs:
10+
min_age_days:
11+
description: "Minimum age in days since merge"
12+
required: true
13+
default: 27
14+
type: number
15+
16+
jobs:
17+
identify-branches:
18+
if: github.repository_owner == 'mendix'
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
token: ${{ secrets.GITHUB_TOKEN }}
26+
persist-credentials: true
27+
28+
- name: Setup jq
29+
run: sudo apt-get install -y jq
30+
31+
- name: Create timestamp file
32+
run: |
33+
echo "Last scan for stale merged branches: $(TZ='Europe/Amsterdam' date +'%Y-%m-%d %H:%M:%S %Z (UTC%:z)')" > branch-cleanup-timestamp.txt
34+
35+
- name: Fetch all branches
36+
run: |
37+
git fetch origin '+refs/heads/*:refs/remotes/origin/*' --prune
38+
39+
- name: Process branches
40+
id: branch-data
41+
run: |
42+
set -e
43+
ALL_BRANCHES=$(git branch -r | grep -v "origin/HEAD" | sed 's/origin\///')
44+
MIN_AGE_DAYS=${{ github.event.inputs.min_age_days || 27 }}
45+
46+
PROTECTED_BRANCHES=()
47+
MERGED_BRANCHES_TO_PROCESS=()
48+
BRANCHES_TO_DELETE=()
49+
BRANCHES_TOO_RECENT=()
50+
UNMERGED_BRANCHES=()
51+
52+
CURRENT_DATE=$(date +%Y%m%d)
53+
echo "CURRENT_DATE=$CURRENT_DATE" >> $GITHUB_ENV
54+
55+
for BRANCH in $ALL_BRANCHES; do
56+
branch_lower=$(echo "$BRANCH" | tr '[:upper:]' '[:lower:]')
57+
if [[ $branch_lower =~ (backup|development|main|master|production) ]]; then
58+
PROTECTED_BRANCHES+=("$BRANCH (protected)")
59+
elif git branch -r --merged origin/development | grep -q "origin/$BRANCH"; then
60+
MERGED_BRANCHES_TO_PROCESS+=("$BRANCH")
61+
else
62+
UNMERGED_BRANCHES+=("$BRANCH (not merged)")
63+
fi
64+
done
65+
66+
for BRANCH in "${MERGED_BRANCHES_TO_PROCESS[@]}"; do
67+
MERGE_HASH=$(git log --grep="Merge branch.*$BRANCH" origin/development -n 1 --pretty=format:"%H" || true)
68+
[ -z "$MERGE_HASH" ] && MERGE_HASH=$(git log -n 1 origin/$BRANCH --pretty=format:"%H")
69+
70+
MERGE_DATE=$(git show -s --format=%ct $MERGE_HASH)
71+
DAYS_AGO=$(( ($(date +%s) - MERGE_DATE) / 86400 ))
72+
73+
if [[ $DAYS_AGO -ge $MIN_AGE_DAYS ]]; then
74+
BRANCHES_TO_DELETE+=("$BRANCH")
75+
else
76+
BRANCHES_TOO_RECENT+=("$BRANCH (too recent: ${DAYS_AGO}d)")
77+
fi
78+
done
79+
80+
ALL_NON_DELETED=(
81+
"${PROTECTED_BRANCHES[@]}"
82+
"${BRANCHES_TOO_RECENT[@]}"
83+
"${UNMERGED_BRANCHES[@]}"
84+
)
85+
86+
echo "HAS_BRANCHES=$([ ${#BRANCHES_TO_DELETE[@]} -gt 0 ] && echo true || echo false)" >> $GITHUB_ENV
87+
echo "BRANCHES_TO_DELETE=$(printf -- '- %s\n' "${BRANCHES_TO_DELETE[@]}" | jq -Rs .)" >> $GITHUB_ENV
88+
echo "ALL_NON_DELETED=$(printf -- '- %s\n' "${ALL_NON_DELETED[@]}" | jq -Rs .)" >> $GITHUB_ENV
89+
90+
- name: Create Deletion PR
91+
if: env.HAS_BRANCHES == 'true'
92+
uses: peter-evans/create-pull-request@v6
93+
with:
94+
token: ${{ secrets.GITHUB_TOKEN }}
95+
title: "[Auto] Branch Deletion Candidates - ${{ env.CURRENT_DATE }}"
96+
body: |
97+
### Branches for Deletion
98+
${{ fromJSON(env.BRANCHES_TO_DELETE) }}
99+
100+
### Protected/Recent Branches
101+
${{ fromJSON(env.ALL_NON_DELETED) }}
102+
base: development
103+
labels: Internal WIP
104+
assignees: MarkvanMents,OlufunkeMoronfolu
105+
reviewers: MarkvanMents,OlufunkeMoronfolu
106+
commit-message: "Add branch cleanup candidates for ${{ env.CURRENT_DATE }}"
107+
add-paths: |
108+
branch-cleanup-timestamp.txt
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Branch Deletion Phase Two (PR Processing)
2+
on:
3+
pull_request:
4+
types: [closed]
5+
branches: [development]
6+
paths:
7+
- 'branch-cleanup-timestamp.txt'
8+
9+
permissions:
10+
contents: write
11+
12+
jobs:
13+
process-approved-deletion:
14+
if: |
15+
github.event.pull_request.merged == true &&
16+
startsWith(github.event.pull_request.title, '[Auto] Branch Deletion Candidates') &&
17+
contains(github.event.pull_request.labels.*.name, 'Internal WIP')
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0
24+
25+
- name: Extract branches
26+
id: extract-branches
27+
env:
28+
PR_BODY: ${{ github.event.pull_request.body }}
29+
run: |
30+
BRANCHES=$(echo "$PR_BODY" | awk '
31+
/### Branches for Deletion/ {flag=1; next}
32+
/### Protected\/Recent Branches/ {flag=0}
33+
flag && /^-/ {gsub(/^-[ \t]*/, ""); print}
34+
')
35+
36+
CLEAN_BRANCHES=$(echo "$BRANCHES" | tr -d '\r' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
37+
echo "branches=$(jq -nc '$ARGS.positional' --args $CLEAN_BRANCHES)" >> $GITHUB_OUTPUT
38+
echo "Extracted branches: $BRANCHES"
39+
40+
- name: Delete branches
41+
env:
42+
BRANCHES: ${{ steps.extract-branches.outputs.branches }}
43+
run: |
44+
git config --global user.name "github-actions[bot]"
45+
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
46+
47+
echo "$BRANCHES" | jq -r '.[]' | while read -r branch; do
48+
branch_lower=$(echo "$branch" | tr '[:upper:]' '[:lower:]')
49+
50+
if [[ $branch_lower =~ ^(backup|development|main|master|production)(-[0-9]+)?$ ]]; then
51+
echo "Skipping protected branch: $branch"
52+
continue
53+
fi
54+
55+
if git ls-remote --exit-code --heads origin "$branch" >/dev/null; then
56+
echo "Deleting $branch"
57+
git push origin --delete "$branch"
58+
sleep 1
59+
else
60+
echo "Branch $branch does not exist"
61+
fi
62+
done

branch-cleanup-timestamp.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Last scan: Fri Nov 7 09:17:19 UTC 2025

config/_default/hugo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ replacements = "github.com/FortAwesome/Font-Awesome -> ., github.com/twbs/bootst
9292
# These are mainly (all?) Docsy settings
9393

9494
[params]
95-
copyright = "© Mendix Technology BV 2021. All rights reserved."
95+
copyright = "© Siemens Industry Software Netherlands B.V. 2025. All rights reserved."
9696
privacy_policy = "http://www.mendix.com/privacy-policy/"
9797

9898
# Menu title if your navbar has a versions selector to access old versions of your site.

content/en/docs/apidocs-mxsdk/apidocs/apps/app-repository-api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ weight: 10
88

99
## Introduction
1010

11-
The App Repository API enables retrieving information (branches, commits) of application models stored in our [Team Server](/developerportal/general/team-server/).
11+
The App Repository API enables retrieving information (branches, commits) of application models stored in our [Team Server](/developerportal/repository/team-server/).
1212

1313
## Base URL
1414

@@ -107,7 +107,7 @@ Returns information about the version control repository for a Mendix app.
107107

108108
|Name|Type|Required|Description|
109109
|---|---|---|---|
110-
|`AppId`|String|Yes|The App ID of the Mendix app for which the repository information should be returned. You can find this under **Project ID** in the [General](/developerportal/collaborate/general-settings/) tab of the **Settings** page after you open your app in [Apps](https://sprintr.home.mendix.com/). |
110+
|`AppId`|String|Yes|The App ID of the Mendix app for which the repository information should be returned. You can find this under **Project ID** in the [General](/developerportal/general-settings/) tab of the **Settings** page after you open your app in [Apps](https://sprintr.home.mendix.com/). |
111111

112112
##### Example
113113

content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,10 @@ An object with the following key-value pairs:
295295
* `Description` (String) : Description of the package.
296296

297297
{{% alert color="warning" %}}
298-
For apps using SVN for version control, this call will build the specified revision even if that revision is not on the specified branch.
298+
299+
* For apps using SVN for version control, this call will build the specified revision even if that revision is not on the specified branch.
300+
301+
* For apps using Git for version control, using a short commit hash can cause timeouts with large repositories. Mendix recommends using the full commit hash
299302
{{% /alert %}}
300303

301304
##### Example

content/en/docs/apidocs-mxsdk/apidocs/deployment/pipelines-api.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ Authorization: MxToken 7LJE…vk
3636

3737
## API Reference{#api-reference}
3838

39-
{{< swaggerui src="/openapi-spec/pipelines.yaml" >}}
39+
{{% alert color="warning" %}}
40+
You cannot call endpoints from the Mendix Pipelines API Swagger UI.
41+
{{% /alert %}}
42+
43+
{{< swaggerui-disable-try-it-out src="/openapi-spec/pipelines.yaml" >}}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
title: "Private Mendix Platform Pipeline API"
3+
url: /apidocs-mxsdk/apidocs/private-platform-pipeline-api/
4+
type: swagger
5+
description: "This API allows you to manage pipelines in Private Mendix Platform."
6+
restapi: true
7+
weight: 60
8+
linktitle: "Pipeline API"
9+
---
10+
11+
{{% alert color="info" %}}
12+
This document is about [Private Mendix Platform](/private-mendix-platform/) API. This API is only available on instances of Private Mendix Platform. For [Mendix on Kubernetes](/developerportal/deploy/private-cloud/) API, see [Mendix on Kubernetes Build API](/apidocs-mxsdk/apidocs/private-cloud-build-api/) and [Mendix on Kubernetes Deploy API](/apidocs-mxsdk/apidocs/private-cloud-deploy-api/).
13+
{{% /alert %}}
14+
15+
## Introduction
16+
17+
The Private Mendix Platform Project API allows you to manage pipelines in Private Mendix Platform. You can use the API to do the following:
18+
19+
* Get pipeline running information.
20+
* Set the current step status of the pipeline.
21+
* Create a pipeline for build or deployment.
22+
* Approve or reject a manual step of a waiting pipeline.
23+
24+
## API Reference
25+
26+
{{< swaggerui src="/openapi-spec/openapi-pipeline.yaml" >}}

content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/extensibility-api/_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ For information on new releases of the Extensibility API see:
2020

2121
## Introduction
2222

23-
Extensions are self-contained modules which users can add to Studio Pro. This means that with extensibility you can add new features and functionality to Studio Pro. The Extensibility API is an API that allows developers to interact with a curated list of internal systems of Studio Pro. This documentation provides guides and reference documentation for the Extensibility API.
23+
Extensions are self-contained modules that enhance Studio Pro by adding new features and functionality. The Extensibility API allows you to interact with a curated set of internal systems, extending Studio Pro’s capabilities with functionality you can define yourself.
2424

25-
The API is provided in two flavors, depending which language you are developing in. C# and web based (via Typescript):
25+
The API is provided in two versions, depending on the language you are developing in:

content/en/docs/apidocs-mxsdk/apidocs/studio-pro-10/extensibility-api/packaging-your-extension.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,32 @@ url: /apidocs-mxsdk/apidocs/extensibility-api-10/packaging-your-extension
44
weight: 30
55
---
66

7-
# Packaging your extension
7+
# Packaging Your Extension
88

9-
Once you have finished development on your extension, you might want to package it into an add-on module so that others can start using it. Once you have created the add-on module, it can then be published to the Mendix Marketplace for your extension users to download into their Studio Pro app.
9+
After completing development on your extension, you can package it into an add-on module so others can use it. Once packaged, the module can be published to the Mendix Marketplace, allowing other users to download it into their Studio Pro apps.
1010

11-
To package your extension, you will still need the `--enable-extension-development` command line option turned on. Create a new module in your Studio Pro app containing your dev extension, give it an appropriate name. Open the module's settings form and set it to be an Add-on module. In the `Extension name` dropdown, select the extension you want to package into it.
11+
To package your extension, follow the steps below:
12+
13+
1. Make sure the `--enable-extension-development` command-line option is enabled.
14+
2. In your Studio Pro app, create a new module and include your development extension.
15+
3. Give the module a name.
16+
4. Open the module's settings and in the **Export** tab, choose **Add-on module**.
17+
5. In the **Extension name** drop-down, select the extension you want to package into it.
1218

1319
![Extension Add-on Module](/attachments/apidocs-mxsdk/apidocs/extensibility-api/extensionAddOnModule.png)
1420

15-
After you've created your add-on module with its extension, you can now export it, by right-clicking the module in the App Explorer and choosing `Export add-on module package`, as shown below.
21+
After you have created your add-on module with its extension, you can export it by right-clicking the module in the App Explorer and selecting **Export add-on module package**.
1622

1723
![Export Module](/attachments/apidocs-mxsdk/apidocs/extensibility-api/exportAddOnModule.png)
1824

1925
You can now save the add-on module to a location of your choice.
2026

21-
# Importing the extension add-on module
27+
# Importing the Extension Add-on Module
2228

23-
Once the add-on module is available to a Studio Pro user, they are now able to add it in their application. They can so so by right-clicking the app in the App Explorer and choosing `Import module package`, as shown below.
29+
When the add-on module is available to a Studio Pro user, they are now able to add it in their application. This is done by right-clicking the app in the **App Explorer** and selecting **Import module package**.
2430

2531
![Import Module](/attachments/apidocs-mxsdk/apidocs/extensibility-api/importAddOnModule.png)
2632

27-
Once an add-on module containing an extension is imported in the app, Studio Pro will show a warning to the user, asking to trust the extension contained in it. If the user does not choose to trust, the module will still be imported but the extension inside it won't be loaded.
33+
When an add-on module containing an extension is imported in the app, Studio Pro will show a warning to the user, asking to trust the extension contained in it. If the user does not choose to trust, the module will still be imported but the extension inside it will not be loaded.
2834

2935
![Trust Extension](/attachments/apidocs-mxsdk/apidocs/extensibility-api/trustExtension.png)

0 commit comments

Comments
 (0)