Skip to content

Commit c739e60

Browse files
committed
Merge branch 'main' into deps/update-django-axes
2 parents 7269a71 + f8cbc64 commit c739e60

160 files changed

Lines changed: 11172 additions & 1248 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.

.github/actions/api-deploy-ecs/action.yml

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,19 @@ runs:
5959
aws-secret-access-key: ${{ inputs.aws_secret_access_key }}
6060
aws-region: eu-west-2
6161

62-
- name: Fill in the new image ID in the Amazon ECS API task definition
63-
id: task-def-api
62+
- name: Render SDK API task definition
63+
id: task-def-sdk-api
6464
uses: aws-actions/amazon-ecs-render-task-definition@v1
6565
with:
66-
task-definition: ${{ inputs.aws_task_definitions_directory_path }}/ecs-task-definition-web.json
66+
task-definition: ${{ inputs.aws_task_definitions_directory_path }}/ecs-task-definition-sdk-api.json
67+
container-name: flagsmith-api
68+
image: ${{ inputs.api_ecr_image_url }}
69+
70+
- name: Render Admin API task definition
71+
id: task-def-admin-api
72+
uses: aws-actions/amazon-ecs-render-task-definition@v1
73+
with:
74+
task-definition: ${{ inputs.aws_task_definitions_directory_path }}/ecs-task-definition-admin-api.json
6775
container-name: flagsmith-api
6876
image: ${{ inputs.api_ecr_image_url }}
6977

@@ -93,21 +101,21 @@ runs:
93101
}}'
94102
shell: bash
95103

96-
- name: Deploy Amazon ECS web task definition
97-
id: deploy-api-task-def
104+
- name: Deploy new Task Definition to ECS Admin API service
105+
id: deploy-admin-api-task-definition
98106
uses: aws-actions/amazon-ecs-deploy-task-definition@v2
99107
with:
100108
cluster: ${{ inputs.aws_ecs_cluster_name }}
101109
service: ${{ inputs.aws_ecs_service_name }}
102-
task-definition: ${{ steps.task-def-api.outputs.task-definition }}
110+
task-definition: ${{ steps.task-def-admin-api.outputs.task-definition }}
103111

104-
- name: Deploy Amazon ECS SDK service with same task definition
105-
run: |
106-
aws ecs update-service \
107-
--cluster ${{ inputs.aws_ecs_cluster_name }} \
108-
--service ${{ inputs.aws_ecs_sdk_service_name }} \
109-
--task-definition ${{ steps.deploy-api-task-def.outputs.task-definition-arn }}
110-
shell: bash
112+
- name: Deploy new Task Definition to ECS SDK API service
113+
id: deploy-sdk-api-task-definition
114+
uses: aws-actions/amazon-ecs-deploy-task-definition@v2
115+
with:
116+
cluster: ${{ inputs.aws_ecs_cluster_name }}
117+
service: ${{ inputs.aws_ecs_sdk_service_name }}
118+
task-definition: ${{ steps.task-def-sdk-api.outputs.task-definition }}
111119

112120
# The DynamoDB Identity Migrator uses the same task definition as the SQL schema migrator but overrides the container definition
113121
# with the new django execute target
@@ -157,7 +165,8 @@ runs:
157165
- name: Verify correct version is running
158166
shell: bash
159167
run: |
160-
EXPECTED_TASK_DEF=${{ steps.deploy-api-task-def.outputs.task-definition-arn }}
168+
EXPECTED_ADMIN_API_TASK_DEF=${{ steps.deploy-admin-api-task-definition.outputs.task-definition-arn }}
169+
EXPECTED_SDK_API_TASK_DEF=${{ steps.deploy-sdk-api-task-definition.outputs.task-definition-arn }}
161170
RUNNING_ADMIN_API_TASK_DEF=$(aws ecs describe-services \
162171
--cluster ${{ inputs.aws_ecs_cluster_name }} \
163172
--services ${{ inputs.aws_ecs_service_name }} \
@@ -168,13 +177,14 @@ runs:
168177
--services ${{ inputs.aws_ecs_sdk_service_name }} \
169178
--query 'services[0].deployments[?status==`PRIMARY`].taskDefinition' \
170179
--output text)
171-
if [[ "$RUNNING_ADMIN_API_TASK_DEF" == "$EXPECTED_TASK_DEF" && \
172-
"$RUNNING_SDK_API_TASK_DEF" == "$EXPECTED_TASK_DEF" ]]; then
180+
if [[ "$RUNNING_ADMIN_API_TASK_DEF" == "$EXPECTED_ADMIN_API_TASK_DEF" && \
181+
"$RUNNING_SDK_API_TASK_DEF" == "$EXPECTED_SDK_API_TASK_DEF" ]]; then
173182
exit 0
174183
else
175184
echo "Task definition mismatch detected"
176-
echo "Expected: $EXPECTED_TASK_DEF"
185+
echo "Expected Admin API: $EXPECTED_ADMIN_API_TASK_DEF"
177186
echo "Admin API running: $RUNNING_ADMIN_API_TASK_DEF"
187+
echo "Expected SDK API: $EXPECTED_SDK_API_TASK_DEF"
178188
echo "SDK API running: $RUNNING_SDK_API_TASK_DEF"
179189
exit 1
180190
fi

.github/workflows/api-pull-request.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: API Pull Request
22

33
permissions:
4-
contents: read # For actions/checkout
5-
id-token: write # For Codecov OIDC
4+
contents: read # For actions/checkout
5+
id-token: write # For Codecov OIDC
66

77
on:
88
pull_request:
@@ -80,7 +80,7 @@ jobs:
8080
run: make test
8181

8282
- name: Upload Coverage
83-
uses: codecov/codecov-action@v4
83+
uses: codecov/codecov-action@v5
8484
env:
8585
PYTHON: ${{ matrix.python-version }}
8686
with:

.github/workflows/api-tests-with-private-packages.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: API Pull Request with Private Packages
22

33
permissions:
4-
contents: read # For actions/checkout
5-
id-token: write # For Codecov OIDC
4+
contents: read # For actions/checkout
5+
id-token: write # For Codecov OIDC
66

77
on:
88
pull_request:
@@ -66,7 +66,7 @@ jobs:
6666
run: make test
6767

6868
- name: Upload Coverage
69-
uses: codecov/codecov-action@v4
69+
uses: codecov/codecov-action@v5
7070
env:
7171
PRIVATE_PACKAGES: "true"
7272
PYTHON: ${{ matrix.python-version }}

.github/workflows/update-flagsmith-environment.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: Update Flagsmith Defaults
33
on:
44
schedule:
55
- cron: 0 8 * * *
6+
workflow_dispatch:
67

78
defaults:
89
run:

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "2.213.1"
2+
".": "2.216.0"
33
}

CHANGELOG.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,60 @@
11
# Changelog
22

3+
## [2.216.0](https://github.com/Flagsmith/flagsmith/compare/v2.215.1...v2.216.0) (2026-02-12)
4+
5+
6+
### Features
7+
8+
* **hackathon-be:** A/B experiment analytics endpoint ([#6702](https://github.com/Flagsmith/flagsmith/issues/6702)) ([1e2c498](https://github.com/Flagsmith/flagsmith/commit/1e2c4986c27042b04a47d7870227d9794b7c2183))
9+
10+
11+
### Bug Fixes
12+
13+
* cleanup flag toast ([#6709](https://github.com/Flagsmith/flagsmith/issues/6709)) ([3df61cd](https://github.com/Flagsmith/flagsmith/commit/3df61cdb8e0830945822af862051880eed199636))
14+
15+
## [2.215.1](https://github.com/Flagsmith/flagsmith/compare/v2.215.0...v2.215.1) (2026-02-12)
16+
17+
18+
### Bug Fixes
19+
20+
* **Hackathon:** Platform Hub usage trends timing out ([#6700](https://github.com/Flagsmith/flagsmith/issues/6700)) ([08c6e0e](https://github.com/Flagsmith/flagsmith/commit/08c6e0e29685ead93dc487ec6142bc03ee3a08cc))
21+
22+
## [2.215.0](https://github.com/Flagsmith/flagsmith/compare/v2.214.0...v2.215.0) (2026-02-12)
23+
24+
25+
### Features
26+
27+
* **CI:** Update the local envdoc when we need it ([#6686](https://github.com/Flagsmith/flagsmith/issues/6686)) ([8ba9171](https://github.com/Flagsmith/flagsmith/commit/8ba9171c01f53ca6e83eeb7bc3f2a2d8f1c2b3b9))
28+
* **Hackathon:** Feature lifecycle ([#6684](https://github.com/Flagsmith/flagsmith/issues/6684)) ([88c4294](https://github.com/Flagsmith/flagsmith/commit/88c429479e661ca60f3958c094be59f7c3f2665c))
29+
* **Hackathon:** Platform Hub ([#6692](https://github.com/Flagsmith/flagsmith/issues/6692)) ([264d1f9](https://github.com/Flagsmith/flagsmith/commit/264d1f985461f40583b56ef0e485866b4b28a02a))
30+
* **Hackathon:** Submit a GitHub issue to clean up a stale feature ([#6691](https://github.com/Flagsmith/flagsmith/issues/6691)) ([34624a3](https://github.com/Flagsmith/flagsmith/commit/34624a3c196dacf3c9af02f2f1675f91584e8ecb))
31+
32+
33+
### Bug Fixes
34+
35+
* **Hackathon:** Platform Hub: N+1 query for feature counts per project ([#6697](https://github.com/Flagsmith/flagsmith/issues/6697)) ([cdb168c](https://github.com/Flagsmith/flagsmith/commit/cdb168c746d6ed549fa82217e6a1b2c28f12c579))
36+
* **Hackathon:** Platform Hub: Pipeline count incorrectly presented as project adoption count ([#6696](https://github.com/Flagsmith/flagsmith/issues/6696)) ([a76598f](https://github.com/Flagsmith/flagsmith/commit/a76598fd1ab36d65309d3132f2780576006c3968))
37+
* **UI:** Fix copy button triggering feature detail dialog ([#6690](https://github.com/Flagsmith/flagsmith/issues/6690)) ([f644651](https://github.com/Flagsmith/flagsmith/commit/f6446517b47091e942f4e0a344e0bad009dd8f5d))
38+
39+
## [2.214.0](https://github.com/Flagsmith/flagsmith/compare/v2.213.1...v2.214.0) (2026-02-10)
40+
41+
42+
### Features
43+
44+
* upgrade flagsmith-flag-engine to v10 ([#6653](https://github.com/Flagsmith/flagsmith/issues/6653)) ([0a2464b](https://github.com/Flagsmith/flagsmith/commit/0a2464b2e51349877e6140c42ba6d7d290501fbe))
45+
46+
47+
### Bug Fixes
48+
49+
* **revert:** Revert upgrade flagsmith-flag-engine to v10 ([#6653](https://github.com/Flagsmith/flagsmith/issues/6653)) ([#6674](https://github.com/Flagsmith/flagsmith/issues/6674)) ([faa031c](https://github.com/Flagsmith/flagsmith/commit/faa031c5cdf40d362c704a9219b714519a91ebce))
50+
* Webhook payloads do not include multivariate values ([#6666](https://github.com/Flagsmith/flagsmith/issues/6666)) ([cf16f3d](https://github.com/Flagsmith/flagsmith/commit/cf16f3d1fdac2462fefcd9c0226fca722f11dff8))
51+
52+
53+
### Dependency Updates
54+
55+
* Bump codecov-action from 4 to 5 ([#6680](https://github.com/Flagsmith/flagsmith/issues/6680)) ([20215d5](https://github.com/Flagsmith/flagsmith/commit/20215d5108e6822b79dc6565543f8f37c83f5947))
56+
* upgrade to python 3.13 ([#6645](https://github.com/Flagsmith/flagsmith/issues/6645)) ([7d39204](https://github.com/Flagsmith/flagsmith/commit/7d392043051f707be8ccef1cb9ddba3812f65fbd))
57+
358
## [2.213.1](https://github.com/Flagsmith/flagsmith/compare/v2.213.0...v2.213.1) (2026-02-06)
459

560

api/api/urls/v1.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@
9090
),
9191
name="schema-swagger-ui",
9292
),
93+
# Platform Hub dashboard
94+
re_path(
95+
r"^admin/dashboard/",
96+
include("platform_hub.urls", namespace="platform-hub"),
97+
),
9398
# Test webhook url
9499
re_path(r"^webhooks/", include("webhooks.urls", namespace="webhooks")),
95100
path("", include("projects.code_references.urls", namespace="code_references")),

api/app/pagination.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
from collections import OrderedDict
44
from typing import Any
55

6+
from flag_engine.identities.models import IdentityModel
67
from rest_framework.pagination import PageNumberPagination
78
from rest_framework.response import Response
89

9-
from util.engine_models.identities.models import IdentityModel
10-
1110

1211
class CustomPagination(PageNumberPagination):
1312
page_size = 999

api/app/settings/common.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@
130130
"webhooks",
131131
"metrics",
132132
"onboarding",
133+
"platform_hub",
133134
# 2FA
134135
"custom_auth.mfa.trench",
135136
# health check plugins
@@ -1029,6 +1030,7 @@
10291030
GITHUB_PEM = env.str("GITHUB_PEM", default="")
10301031
GITHUB_APP_ID: int = env.int("GITHUB_APP_ID", default=0)
10311032
GITHUB_WEBHOOK_SECRET = env.str("GITHUB_WEBHOOK_SECRET", default="")
1033+
FEATURE_LIFECYCLE_GITHUB_PAT = env.str("FEATURE_LIFECYCLE_GITHUB_PAT", default="")
10321034

10331035
# Additional functionality for using SAML in Flagsmith SaaS
10341036
SAML_INSTALLED = importlib.util.find_spec("saml") is not None

0 commit comments

Comments
 (0)