Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
26 changes: 26 additions & 0 deletions .ci/.matrix_framework_fips.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# this is a limited list of matrix builds to be used for PRs
# see .jenkins_framework_full.yml for a full list
FRAMEWORK:
- none
- django-5.0
- flask-3.0
- jinja2-3
- opentelemetry-newest
- opentracing-newest
- twisted-newest
- celery-5-flask-2
- celery-5-django-5
- requests-newest
- boto3-newest
- cassandra-newest
- psutil-newest
- gevent-newest
- aiohttp-newest
- tornado-newest
- starlette-newest
- graphene-2
- httpx-newest
- httplib2-newest
- prometheus_client-newest
- sanic-newest
- kafka-python-newest
2 changes: 2 additions & 0 deletions .ci/.matrix_python_fips.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VERSION:
- python-3.12
73 changes: 73 additions & 0 deletions .github/workflows/test-fips.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@

# run test suite inside a FIPS 140 container
name: test-fips

on:
workflow_dispatch:
schedule:
- cron: '0 4 * * 1'
pull_request:
# FIXME: REMOVE ME

permissions:
contents: read

jobs:
create-matrix:
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.generate.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: generate
uses: elastic/oblt-actions/version-framework@v1
with:
versions-file: .ci/.matrix_python_fips.yml
frameworks-file: .ci/.matrix_framework_fips.yml

test-fips:
needs: create-matrix
runs-on: ubuntu-24.04
# https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container
# docker run -it --rm --name fipsy docker.elastic.co/wolfi/python-fips:3.12
container:
image: docker.elastic.co/wolfi/python-fips:3.12-dev
options: --user root
credentials:
username: ${{ secrets.ELASTIC_DOCKER_USERNAME }}
password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }}
timeout-minutes: 30
strategy:
fail-fast: false
max-parallel: 10
matrix: ${{ fromJSON(needs.create-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- name: check that python has fips mode enabled
run: |
python3 -c 'import _hashlib; assert _hashlib.get_fips_mode() == 1'
- run: |
python3 -c 'from zoneinfo import ZoneInfo ; assert ZoneInfo("America/Chicago")'
- name: install run_tests.sh requirements
run: apk install netcat-openbsd
- name: Run tests
run: ./tests/scripts/run_tests.sh
env:
FRAMEWORK: ${{ matrix.framework }}

notify-on-failure:
if: always()
runs-on: ubuntu-24.04
needs: test-fips
steps:
- id: check
uses: elastic/oblt-actions/check-dependent-jobs@v1
with:
jobs: ${{ toJSON(needs) }}
- name: Notify in Slack
if: steps.check.outputs.status == 'failure'
uses: elastic/oblt-actions/slack/notify-result@v1
with:
bot-token: ${{ secrets.SLACK_BOT_TOKEN }}
status: ${{ steps.check.outputs.status }}
channel-id: "#apm-agent-python"
Loading