Skip to content

Commit 959e409

Browse files
committed
Merge branch 'master' into fix/bump-wire-server-5.25-pg-secrets
2 parents 63abc33 + e32dbd2 commit 959e409

File tree

63 files changed

+281
-470
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+281
-470
lines changed

.github/workflows/changelog-verify.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,21 @@ jobs:
2525
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
2626
BASE_SHA=${{ github.event.pull_request.base.sha }}
2727
HEAD_SHA=${{ github.event.pull_request.head.sha }}
28+
29+
# Use 3-dot syntax so we only see changes introduced by this PR
30+
CHANGED_FILES=$(git diff --name-only "$BASE_SHA...$HEAD_SHA" -- changelog.d/ | grep -vE "^$" || true)
2831
else
2932
# For push events, compare with the previous commit
3033
HEAD_SHA=${{ github.sha }}
3134
BASE_SHA=$(git rev-parse HEAD~1)
35+
CHANGED_FILES=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" -- changelog.d/ | grep -vE "^$" || true)
3236
fi
3337
3438
echo "BASE_SHA: $BASE_SHA"
3539
echo "HEAD_SHA: $HEAD_SHA"
36-
40+
echo "CHANGED_FILES:"
41+
echo "$CHANGED_FILES"
42+
3743
# Check if commit is by zebot with wire-build update message
3844
COMMIT_AUTHOR=$(git log --format="%an" -1 $HEAD_SHA)
3945
COMMIT_MESSAGE=$(git log --format="%s" -1 $HEAD_SHA)
@@ -44,11 +50,10 @@ jobs:
4450
echo "Message: $COMMIT_MESSAGE"
4551
exit 0
4652
fi
47-
48-
CHANGED_FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA -- changelog.d/ | grep -vE "^$")
4953
5054
if [ -z "$CHANGED_FILES" ]; then
51-
echo "No files changed in changelog.d/"
55+
echo "No files changed in changelog.d/ for this ${GITHUB_EVENT_NAME:-event}."
56+
echo "Every PR must add or modify at least one changelog.d/ entry."
5257
exit 1
5358
fi
5459

.github/workflows/offline.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22
#
33
# This workflow builds offline deployment artifacts for different profiles:
44
# - default: Production deployment (includes external charts, ansible, terraform)
5-
# - demo: Demo/WIAB deployment (includes databases-ephemeral)
5+
# - build-wiab-staging: Wire-in-a-box (wiab-stag) a production like deployment (includes external charts, ansible, terraform)
6+
# - wiab-dev: Wire-in-a-box dev deployment (includes databases-ephemeral)
67
# - min: Minimal deployment
78
#
89
# Build Optimization via PR Labels:
910
# - No label: No builds run (must add label to trigger builds)
1011
# - 'build-default': Builds only default profile
11-
# - 'build-demo': Builds only demo profile
12+
# - 'build-dev': Builds only demo profile
1213
# - 'build-wiab-staging' - Builds only wiab-staging profile
1314
# - 'build-min': Builds only min profile
1415
# - 'build-all': Explicitly builds all profiles (useful for workflow changes)
@@ -33,6 +34,7 @@ jobs:
3334
build-default:
3435
name: Build default profile
3536
if: |
37+
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
3638
contains(github.event.pull_request.labels.*.name, 'build-all') ||
3739
contains(github.event.pull_request.labels.*.name, 'build-default') ||
3840
contains(github.event.pull_request.labels.*.name, 'build-wiab-staging')
@@ -77,6 +79,7 @@ jobs:
7779
name: Verify default profile
7880
needs: build-default
7981
if: |
82+
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
8083
contains(github.event.pull_request.labels.*.name, 'build-all') ||
8184
contains(github.event.pull_request.labels.*.name, 'build-default')
8285
runs-on:
@@ -116,6 +119,7 @@ jobs:
116119
name: Verify wiab staging profile
117120
needs: build-default
118121
if: |
122+
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
119123
contains(github.event.pull_request.labels.*.name, 'build-all') ||
120124
contains(github.event.pull_request.labels.*.name, 'build-wiab-staging')
121125
runs-on:
@@ -176,11 +180,12 @@ jobs:
176180
DOCKER_LOGIN: '${{ secrets.DOCKER_LOGIN }}'
177181

178182
# Build demo profile
179-
build-demo:
183+
build-dev:
180184
name: Build demo profile
181185
if: |
186+
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
182187
contains(github.event.pull_request.labels.*.name, 'build-all') ||
183-
contains(github.event.pull_request.labels.*.name, 'build-demo')
188+
contains(github.event.pull_request.labels.*.name, 'build-dev')
184189
runs-on:
185190
group: wire-server-deploy
186191
steps:
@@ -239,6 +244,7 @@ jobs:
239244
build-min:
240245
name: Build min profile
241246
if: |
247+
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
242248
contains(github.event.pull_request.labels.*.name, 'build-all') ||
243249
contains(github.event.pull_request.labels.*.name, 'build-min')
244250
runs-on:

CHANGELOG.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,66 @@
1212
1313
-->
1414

15+
# Relase 5.23
16+
17+
## release-notes
18+
19+
* Changed: wire-server updated to version 5.23.0 for prod, wiab-staging and wiab-dev/demo
20+
* Changed: cargohold service will use the scoped `cargohold` user with least privilege, with access limited to its `assets` bucket only (#814)
21+
* Changed: Enable Ansible-based RabbitMQ deployment and fix RabbitMQ host configuration for wire-server (#861)
22+
23+
### Data stores (PostgreSQL, Cassandra)
24+
25+
* Added: enable support for PostgreSQL deployment via Ansible (#797)
26+
* Added: PostgreSQL high availability cluster with repmgr (#807)
27+
* Changed: PostgreSQL password management is now centralized in Kubernetes Secrets (repmgr and wire-server credentials), eliminating hardcoded passwords from inventory (#819)
28+
* Changed: update Cassandra from 3.11.16 to 3.11.19 (#831)
29+
30+
### Features / configuration
31+
* Added: config for MLS deployment into example files (#824)
32+
33+
## wire-builds
34+
35+
* Changed: pre_clean_values_0.sh to clean unnecessary files
36+
* Removed: `patch-chart-images.sh` as it is not required anymore
37+
* Fixed: default|demo|min-build definitions to have more precise values and chart definitions (#825)
38+
* Changed: Standardized all scripts to use `yq-go` (v4+) for YAML processing, replacing deprecated `python-yq`. Updated syntax in offline deployment scripts (`cd.sh`, `cd-with-retry.sh`), build scripts (`build_adminhost_containers.sh`), demo deployment (`offline_deploy_k8s.sh`), secret sync utilities, and chart image extraction to ensure reliable YAML manipulation and fix CI build errors (#820)
39+
40+
## deploy-builds
41+
42+
### WIAB demo / staging (high‑level)
43+
44+
* Fixed: coturn and PostgreSQL secrets for demo-wiab
45+
* Added: `kube-prometheus-stack` values and enabled monitoring support from wire-server for demo-wiab
46+
* Added: values for wire-utility in demo-wiab (#826)
47+
* Added: enable `cd-demo.sh` to verify demo-wiab builds (#826)
48+
* Changed: add Ansible playbook for wiab-staging VM provisioning
49+
* Added: Terraform resources for wiab-staging
50+
* Added: `cd_staging` script to verify the default build bundle
51+
* Changed: restructured `offline.yml` flow – introduced wiab-staging build and split bundle processing with default-build (#861)
52+
53+
### Offline / CI / deployment pipeline
54+
55+
* Added: `bin/helm-operations.sh` to replace `offline-helm` and more closely follow production instructions
56+
* Changed: `bin/offline-secrets.sh` to support `helm-operations.sh` and add support for coturn secret (#858)
57+
* Changed: Optimize Wire offline deployment pipeline with parallel job execution and S3 direct downloads
58+
* Added: retry logic with progressive server type fallbacks for Hetzner Cloud resource availability issues (#815)
59+
* Changed: offline workflow to require explicit labels for PR builds (`build-default`, `build-demo`, `build-min`, `build-all`); PRs without labels no longer trigger builds (#836)
60+
* Changed: remove hardcoded PostgreSQL passwords from `demo-secrets.example.yaml` and automatically inject passwords from `databases-ephemeral` chart during deployment (#817)
61+
62+
## docs
63+
64+
* Added: documentation on how to set up DKIM for SMTP in wire-server (#793)
65+
* Added: enable cert-manager Helm chart deployment with example values files (#805)
66+
* Added: wiab-staging documentation to wire-server-deploy and fixed coturn port ranges (#861)
67+
* Added: Enable changelog management in wire-server-deploy (#764)
68+
69+
## bug-fixes
70+
* Fixed: Optimize the `offline-env` load and add pipe/redirect functionality with `d` (#812)
71+
* Fixed: add localhost authentication for `postgres_exporter`, upgrade to v0.18.1, and enable `stat_checkpointer` collector for PostgreSQL 17 checkpoint metrics (#832)
72+
* Fixed: changelog-verify.yml workflow to allow Zebot pushes to master (#806)
73+
* Changed: offline-vm-setup.sh script now uses an Ubuntu cloud image and local seed ISO (#861)
74+
* Fixed: Update kubernetes_logging.yml to use the standard kubelet log path instead of Docker-specific paths. (#864)
1575

1676
# 2021-08-27
1777

ansible/inventory/demo/host.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ wiab:
1818
wire_ip: ""
1919

2020
# artifact_hash
21-
artifact_hash: "8e5087a0d9c58a9bd34c6c02f87514abe8b3ce0e"
21+
artifact_hash: "94523acf6df5a177fd7fc1a7fdc004ce5335233b"
2222

2323
# docker vars
2424
docker_ce_version: "5:28.1.1-1~ubuntu.24.04~noble"

ansible/inventory/demo/wiab-staging.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ wiab-staging:
66
ansible_user: 'demo'
77
ansible_ssh_private_key_file: "~/.ssh/id_ed25519"
88
vars:
9-
artifact_hash: e5e1919173f6fe2b56034a57e2dc59e8343e8b8e
9+
artifact_hash: f1f624256bdab0f9f76158c7f45e0618ee641237

ansible/kubernetes_logging.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
# options, ensure to also keep the documentation up-to-date, see the
1212
# documentation introduced in
1313
# https://github.com/wireapp/wire-docs/pull/79
14-
- name: podlogs
15-
path: "/var/lib/docker/containers/*/*.log"
16-
options:
14+
- name: podlogs
15+
path: "/var/log/pods/*/*/*.log"
16+
options:
1717
- daily
1818
- missingok
1919
- rotate 2

ansible/wiab-demo/deploy_wiab.yml

Lines changed: 63 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,62 @@
3636
import_playbook: ./install_pkgs.yml
3737
tags: install_pkgs
3838

39+
- name: Check and configure Ansible Python interpreter for Kubernetes operations
40+
tags: always
41+
hosts: deploy_node
42+
tasks:
43+
- name: Detect available Python interpreters and Kubernetes module
44+
block:
45+
- name: Check if kubernetes module is available in system Python
46+
shell: "python3 -c 'import kubernetes; print(kubernetes.__version__)' 2>/dev/null"
47+
register: system_k8s_check
48+
changed_when: false
49+
failed_when: false
50+
51+
- name: Check virtual environment only if system Python doesn't have kubernetes
52+
block:
53+
- name: Check if kubernetes module is available in virtual environment
54+
shell: "/opt/ansible-venv/bin/python -c 'import kubernetes; print(kubernetes.__version__)' 2>/dev/null"
55+
register: venv_k8s_check
56+
changed_when: false
57+
failed_when: false
58+
59+
- name: Configure to use virtual environment
60+
block:
61+
- name: Set ansible_python_interpreter to use virtual environment
62+
set_fact:
63+
ansible_python_interpreter: /opt/ansible-venv/bin/python
64+
ansible_venv_path: /opt/ansible-venv
65+
66+
when: venv_k8s_check.rc == 0
67+
68+
- name: Kubernetes module not found - run install_pkgs playbook
69+
fail:
70+
msg: |
71+
❌ Kubernetes Python module not found!
72+
73+
System Python (/usr/bin/python3):
74+
Status: NOT available
75+
76+
Virtual Environment (/opt/ansible-venv/bin/python):
77+
Status: NOT available
78+
79+
To install kubernetes module, run:
80+
ansible-playbook -i inventory.yml deploy_wiab.yml --tags install_pkgs
81+
when: venv_k8s_check.rc != 0
82+
83+
when: system_k8s_check.rc != 0
84+
3985
- name: Manage SSH keys (dependency for minikube, asset_host, seed_containers)
4086
import_playbook: ./setup_ssh.yml
4187
tags: always
4288
when: >
43-
(('minikube' not in ansible_skip_tags or
89+
('minikube' not in ansible_skip_tags or
4490
'asset_host' not in ansible_skip_tags or
4591
'seed_containers' not in ansible_skip_tags)
46-
and (ansible_skip_tags | length > 0))
47-
or
48-
('minikube' in ansible_run_tags or
92+
and
93+
('all' in ansible_run_tags or
94+
'minikube' in ansible_run_tags or
4995
'asset_host' in ansible_run_tags or
5096
'seed_containers' in ansible_run_tags)
5197
@@ -104,15 +150,16 @@
104150

105151
tags: always
106152
when: >
107-
(('minikube' not in ansible_skip_tags or
153+
('minikube' not in ansible_skip_tags or
108154
'asset_host' not in ansible_skip_tags or
109-
'seed_containers' not in ansible_skip_tags)
110-
and (ansible_skip_tags | length > 0))
111-
or
112-
('minikube' in ansible_run_tags or
155+
'seed_containers' not in ansible_skip_tags or
156+
'helm_install' not in ansible_skip_tags)
157+
and
158+
('all' in ansible_run_tags or
159+
'minikube' in ansible_run_tags or
113160
'asset_host' in ansible_run_tags or
114-
'seed_containers' in ansible_run_tags)
115-
or use_cert_manager
161+
'seed_containers' in ansible_run_tags or
162+
'helm_install' in ansible_run_tags)
116163
117164
- name: Configure Iptables rules
118165
import_playbook: ./iptables_rules.yml
@@ -126,6 +173,7 @@
126173
hosts: deploy_node
127174
become: yes
128175
become_user: "{{ ansible_user }}"
176+
tags: always
129177
tasks:
130178
- name: Create a block for Minikube node tasks
131179
block:
@@ -209,13 +257,12 @@
209257
delegate_facts: true
210258
with_items: "{{ groups['k8s-cluster'] }}"
211259

212-
tags: always
213260
when: >
214-
(('asset_host' not in ansible_skip_tags or
261+
('asset_host' not in ansible_skip_tags or
215262
'seed_containers' not in ansible_skip_tags)
216-
and (ansible_skip_tags | length > 0))
217-
or
218-
('asset_host' in ansible_run_tags or
263+
and
264+
('all' in ansible_run_tags or
265+
'asset_host' in ansible_run_tags or
219266
'seed_containers' in ansible_run_tags)
220267
221268
- name: Setup Asset Host
@@ -246,11 +293,6 @@
246293
import_playbook: ./helm_install.yml
247294
tags: helm_install
248295

249-
- name: Veirfy Cert Manager hairpin Networking
250-
import_playbook: ./hairpin_networking.yml
251-
tags: always
252-
when: use_cert_manager
253-
254296
# since, the temp_dir are created in a different set of tasks, these directories need to be searched
255297
- name: Clean up temporary directories
256298
hosts: localhost

ansible/wiab-demo/helm_install.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,3 +271,7 @@
271271
- "For more information:"
272272
- "https://github.com/wireapp/wire-server/tree/develop/charts/nginx-ingress-services"
273273
when: not use_cert_manager
274+
275+
- name: Verify Cert Manager hairpin Networking
276+
import_playbook: ./hairpin_networking.yml
277+
when: use_cert_manager

ansible/wiab-demo/install_pkgs.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,30 @@
6565

6666
- name: Ensure required Python libraries are installed for Kubernetes operations
6767
block:
68-
- name: Install kubernetes Python library via pip
68+
- name: Create Python virtual environment for Ansible
69+
command: python3 -m venv /opt/ansible-venv
70+
args:
71+
creates: /opt/ansible-venv/bin/python
72+
become: yes
73+
74+
- name: Install kubernetes Python library in virtual environment
6975
pip:
7076
name:
7177
- kubernetes>=18.0.0
7278
- pyyaml>=5.4.1
73-
executable: /usr/bin/pip3
79+
executable: /opt/ansible-venv/bin/pip
7480
state: present
75-
extra_args: "--break-system-packages"
7681
become: yes
7782
register: pip_install_result
7883

84+
- name: Create symbolic link for ansible Python interpreter
85+
file:
86+
src: /opt/ansible-venv/bin/python
87+
dest: /usr/local/bin/ansible-python
88+
state: link
89+
force: yes
90+
become: yes
91+
7992
- name: Check if Docker CE is installed with correct version
8093
shell: apt policy docker-ce | grep "Installed:" | awk '{print $2}'
8194
register: installed_docker_version

0 commit comments

Comments
 (0)