Skip to content

Bump cryptography from 49.0.0 to 50.0.0 #5804

Bump cryptography from 49.0.0 to 50.0.0

Bump cryptography from 49.0.0 to 50.0.0 #5804

Workflow file for this run

# Copyright 2024-2025 New Vector Ltd
# Copyright 2025-2026 Element Creations Ltd
#
# SPDX-License-Identifier: AGPL-3.0-only
name: Run PyTest tests - Integration and Manifests
on:
pull_request:
push:
branches:
- main
- 'maintenance/*'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GHCR_USERNAME: ${{ github.actor }}
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
pytest-setup:
runs-on: ubuntu-latest
outputs:
envFiles: ${{ steps.data.outputs.envFiles }}
manifestTests: ${{ steps.data.outputs.manifestTests }}
upgradeFrom: ${{ steps.data.outputs.upgradeFrom }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
fetch-tags: true
- id: data
run: |
echo "envFiles=$(find tests/integration/env -name '*.rc' | sed 's|tests/integration/env/||' | sed 's/.rc$//' | jq -ncR '{envFiles: [inputs]}')" | tee -a "$GITHUB_OUTPUT"
echo "manifestTests=$(find tests/manifests -name 'test_*.py' | sed 's|tests/manifests/||' | sed 's/.py$//' | jq -ncR '{manifestTests: [inputs]}')" | tee -a "$GITHUB_OUTPUT"
LATEST_TAG=$(git describe --abbrev=0 --tags --match '[0-9]*.[0-9]*.[0-9]*')
echo "upgradeFrom=$LATEST_TAG" | tee -a "$GITHUB_OUTPUT"
pytest-integration:
runs-on: ubuntu-latest
needs: pytest-setup
strategy:
fail-fast: false
matrix:
test-component: ${{ fromJSON(needs.pytest-setup.outputs.envFiles).envFiles }}
test-from-ref:
- "${{ github.event.pull_request.head.sha }}"
- "${{ needs.pytest-setup.outputs.upgradeFrom }}"
env:
MATRIX_TEST_COMPONENT: ${{ matrix.test-component }}
MATRIX_TEST_FROM_REF: ${{ matrix.test-from-ref }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0
fetch-tags: true
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
activate-environment: true
- name: Set up UV environment
run: uv sync
- name: Get current week number and home dir
id: cache-input
run: |
echo "week=$(date +%Y%U)" | tee -a "$GITHUB_OUTPUT"
echo "runner-home=$HOME" | tee -a "$GITHUB_OUTPUT"
- name: Restore pyhelm cache
id: cache-pyhelm
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .pyhelm_cache
key: pyhelm-integration-cache-${{ hashFiles('tests/integration/fixtures/cluster.py') }}-week-${{ steps.cache-input.outputs.week }}
restore-keys: |
pyhelm-integration-cache-
- name: List pyhelm cache contents
run: |
echo "Listing contents of .pyhelm_cache:"
echo "GITHUB_WORKSPACE is $GITHUB_WORKSPACE, pwd is $(pwd)"
ls -la .pyhelm_cache || echo "Cache directory does not exist or is empty"
- name: Login to Dockerhub
uses: docker/login-action@06fb636fac595d6fb4b28a5dfcb21a6f5091859c # v4.5.0
if: ${{ github.event.pull_request.head.repo.full_name == 'element-hq/ess-helm' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: ./.github/actions/asdf-cache
with:
tool-versions: |
k3d 5.8.3
- uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1
with:
# 4.2.1 appears to hang on most integration tests.
version: 4.2.0
- name: Checkout values files from previous ref
run: |
git checkout --no-overlay -f "${MATRIX_TEST_FROM_REF}" -- charts/matrix-stack tests/integration/env/
if: ${{ matrix.test-from-ref != github.event.pull_request.head.sha }}
- name: Deploy with pytest once
env:
PYTEST_CI_FIRST_STEP: "1"
# Drop me after releasing next 26.3.x
# We are changing the k3d ports range, so we cannot setup matrix-rtc with the old values
if: ${{ env.MATRIX_TEST_FROM_REF == '26.2.3' && !contains(env.MATRIX_TEST_COMPONENT, 'matrix-rtc') || env.MATRIX_TEST_FROM_REF != '26.2.3' }}
run: |
if [ -f "tests/integration/env/${MATRIX_TEST_COMPONENT}.rc" ]; then
# shellcheck source=/dev/null
. "tests/integration/env/${MATRIX_TEST_COMPONENT}.rc"
pytest-ess --test-suite "${MATRIX_TEST_COMPONENT}" --keep -- -vv
else
echo "The integration test does not exist in previous ref, skipping..."
fi
- name: Checkout values files back
run: |
git checkout --no-overlay -f HEAD -- charts/matrix-stack tests/integration/env/
- name: On upgrade, Synapse can restart, expect 429 to occur
run: |
echo "PYTEST_EXPECTED_HTTP_STATUS_CODES=429,502,504" >> "$GITHUB_ENV"
if: ${{ matrix.test-from-ref != github.event.pull_request.head.sha }}
- name: Test with pytest (upgrade or idempotent setup)
env:
PYTEST_CI_SECOND_STEP: "1"
run: |
# shellcheck source=/dev/null
. "tests/integration/env/${MATRIX_TEST_COMPONENT}.rc"
pytest-ess --test-suite "${MATRIX_TEST_COMPONENT}" --keep -- -vv
# syn2mas is a special case that cannot run twice by design
if: ${{ matrix.test-component != 'matrix-authentication-service-syn2mas' }}
- name: Save pyhelm cache
if: always() && steps.cache-pyhelm.outputs.cache-hit != 'true'
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
key: pyhelm-integration-cache-${{ hashFiles('tests/integration/fixtures/cluster.py') }}-week-${{ steps.cache-input.outputs.week }}
path: .pyhelm_cache
- name: Export logs
if: ${{ failure() }}
shell: bash
run: |
collect-ess-logs --system-logs
- name: Upload logs
if: ${{ failure() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ess-helm-logs-${{ matrix.test-component }}-${{ matrix.test-from-ref }}
path: ess-helm-logs
retention-days: 1
pytest-manifests:
runs-on: ubuntu-latest
needs: pytest-setup
strategy:
fail-fast: false
matrix:
manifest-test: ${{ fromJSON(needs.pytest-setup.outputs.manifestTests).manifestTests }}
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true
activate-environment: true
- name: Set up UV environment
run: uv sync
# Helm >= 3.19.5 (including Helm v4) have https://github.com/helm/helm/issues/31643
# which breaks one of the Ingress tests
- name: Pin Helm with asdf
uses: ./.github/actions/asdf-cache
with:
tool-versions: |
helm 3.19.4
- name: Restore pytest cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: .pytest_cache
key: pytest-manifests-cache-${{ matrix.manifest-test }}-${{ hashFiles('charts/matrix-stack/values.yaml') }}
restore-keys: |
pytest-manifests-cache-
- name: Run our manifest test
env:
MANIFEST_TEST: ${{ matrix.manifest-test }}
run: pytest -vv "tests/manifests/${MANIFEST_TEST}.py"