Skip to content
Draft
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
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,14 @@ updates:
- "ukanga"
- "KipSigei"
- "DavisRayM"

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
commit-message:
prefix: "chore(ci)"
reviewers:
- "ukanga"
- "KipSigei"
- "DavisRayM"
22 changes: 11 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ jobs:
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Setup python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.10"
architecture: "x64"
Expand Down Expand Up @@ -101,10 +101,10 @@ jobs:
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Setup Java
uses: actions/setup-java@v4
uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4
with:
distribution: "adopt"
java-version: "8"
Expand All @@ -119,7 +119,7 @@ jobs:
ssh-keyscan github.com > ~/.ssh/known_hosts

- name: Setup python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.10"
architecture: "x64"
Expand Down Expand Up @@ -159,7 +159,7 @@ jobs:
run: echo "IS_PUBLIC_REPO=$(if [ ${{ github.event.repository.private }} = false ]; then echo true; else echo false; fi)" >> $GITHUB_ENV

- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Setup SSH Agent and add Github to known hosts
env:
Expand All @@ -179,7 +179,7 @@ jobs:
run: echo "version=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV

- name: Build Docker image
uses: docker/build-push-action@v6
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./docker/onadata-uwsgi/Dockerfile.ubuntu
Expand All @@ -195,7 +195,7 @@ jobs:
optional_packages=PyYAML django-redis ${{ secrets.ECR_OPTIONAL_PACKAGES }}

- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@0.33.1
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
if: github.event_name == 'pull_request' || github.event_name == 'push'
with:
image-ref: onaio/onadata:${{ github.head_ref || github.base_ref || env.version }}
Expand All @@ -214,15 +214,15 @@ jobs:
run: sarif html -o trivy_results.html trivy_results.sarif

- name: Upload Trivy HTML report as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
if: github.event_name == 'pull_request' || github.event_name == 'push'
with:
name: trivy-html-report
path: trivy_results.html
retention-days: 30

- name: Upload vulnerability scan results
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@256d634097be96e792d6764f9edaefc4320557b1 # v4
if: (github.event_name == 'push' || github.event_name == 'pull_request') && env.IS_PUBLIC_REPO == 'true'
with:
sarif_file: "trivy_results.sarif"
Expand Down Expand Up @@ -267,7 +267,7 @@ jobs:
echo "EOF" >> $GITHUB_ENV

- name: Send Slack Notification
uses: slackapi/[email protected]
uses: slackapi/slack-github-action@007b2c3c751a190b6f0f040e47ed024deaa72844 # v1.23.0
if: github.event_name == 'push' || github.event_name == 'pull_request'
with:
payload: |
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/ecr-image-build-alpine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,26 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
ref: ${{ github.event.inputs.version }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@ff717079ee2060e4bcee96c4779b553acc87447c # v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
uses: aws-actions/amazon-ecr-login@c962da2960ed15f492addc26fffa274485265950 # v2

- name: Setup SSH Agent and add Github to known hosts
env:
Expand All @@ -59,7 +59,7 @@ jobs:

- name: Build and push Alpine image
id: docker-build-alpine
uses: docker/build-push-action@v5
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
with:
context: .
file: ./docker/onadata-uwsgi/Dockerfile.alpine
Expand All @@ -85,18 +85,18 @@ jobs:
needs: build-alpine
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@ff717079ee2060e4bcee96c4779b553acc87447c # v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
uses: aws-actions/amazon-ecr-login@c962da2960ed15f492addc26fffa274485265950 # v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Create multi-arch manifest
run: |
Expand Down
77 changes: 56 additions & 21 deletions .github/workflows/ecr-image-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,25 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@ff717079ee2060e4bcee96c4779b553acc87447c # v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
uses: aws-actions/amazon-ecr-login@c962da2960ed15f492addc26fffa274485265950 # v2

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
with:
images: ${{ steps.login-ecr.outputs.registry }}/onaio/onadata
tags: |
Expand Down Expand Up @@ -84,7 +84,7 @@ jobs:

- name: (Ubuntu) Build and push
id: docker-build-ubuntu
uses: docker/build-push-action@v5
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./docker/onadata-uwsgi/Dockerfile.ubuntu
Expand Down Expand Up @@ -114,7 +114,7 @@ jobs:
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
Expand All @@ -127,29 +127,29 @@ jobs:
- build
steps:
- name: Download digests
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
path: /tmp/digests
pattern: digests-*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
uses: aws-actions/configure-aws-credentials@ff717079ee2060e4bcee96c4779b553acc87447c # v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
uses: aws-actions/amazon-ecr-login@c962da2960ed15f492addc26fffa274485265950 # v2

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
with:
images: ${{ steps.login-ecr.outputs.registry }}/onaio/onadata
tags: |
Expand All @@ -172,34 +172,69 @@ jobs:
run: |
docker buildx imagetools inspect ${{ env.docker_repo }}

- name: Install Trivy
uses: aquasecurity/setup-trivy@3fb12ec12f41e471780db15c232d5dd185dcb514 # v0.2.6
with:
version: v0.69.3
cache: true

- name: Configure Trivy VEX Hub with DHI advisories
run: |
mkdir -p $HOME/.trivy/vex-hub
cat > $HOME/.trivy/vex-hub.yaml << 'VEXEOF'
repositories:
- url: https://github.com/aquasecurity/vexhub
- url: https://github.com/onaio/dhi-vex-data
VEXEOF
trivy vex repo download

- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@0.33.1
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
with:
version: "v0.69.3"
image-ref: ${{ env.docker_repo }}
format: "sarif"
output: "trivy-results.sarif"
trivy-config: trivy.yaml

- name: Upload Trivy scan result to Github security lab
uses: github/codeql-action/upload-sarif@v3
uses: github/codeql-action/upload-sarif@256d634097be96e792d6764f9edaefc4320557b1 # v4
with:
sarif_file: "trivy-results.sarif"
continue-on-error: true

- name: Install SARIF tools
run: pip install sarif-tools
- name: Cache Trivy HTML template
id: cache-template
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: html.tpl
key: trivy-html-template-v1

- name: Convert SARIF to HTML
run: sarif html -o trivy-results.html trivy-results.sarif
- name: Download Trivy HTML template
if: steps.cache-template.outputs.cache-hit != 'true'
run: |
url="https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/html.tpl"
wget -q "$url" -O html.tpl

- name: Run Trivy vulnerability scanner (HTML report)
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
with:
version: "v0.69.3"
image-ref: ${{ env.docker_repo }}
format: "template"
template: "@html.tpl"
output: "trivy-results.html"
trivy-config: trivy.yaml

- name: Upload Trivy SARIF as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: trivy-sarif-results
path: trivy-results.sarif
retention-days: 30

- name: Upload Trivy HTML report as artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: trivy-html-report
path: trivy-results.html
Expand Down Expand Up @@ -243,7 +278,7 @@ jobs:
echo "EOF" >> $GITHUB_ENV

- name: Send Slack Notification
uses: slackapi/[email protected]
uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0
with:
payload: |
{
Expand Down
4 changes: 2 additions & 2 deletions docker/onadata-uwsgi/Dockerfile.ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ RUN python -m pip install --no-cache-dir -r requirements/docs.pip && \
make -C docs html


FROM debian:bookworm-20260202 AS runtime
FROM debian:bookworm-20260316 AS runtime

ENV DEBIAN_FRONTEND=noninteractive

Expand All @@ -75,7 +75,7 @@ ENV LANGUAGE=en_US.UTF-8


# Install OnaData runtime dependencies
RUN apt-get install -y --no-install-recommends \
RUN apt-get install -y --no-install-recommends -o Dpkg::Options::="--force-overwrite" \
gdal-bin \
git-core \
libpcre3 \
Expand Down
1 change: 1 addition & 0 deletions docs/data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -972,6 +972,7 @@ For submissions that have a status of ``failed``, there exists a ``_decryption_e
- ``KMS_KEY_DISABLED``: Encryption key is disabled.
- ``KMS_KEY_NOT_FOUND``: Encryption key used for encryption not found.
- ``INVALID_SUBMISSION``: Data is corrupted.
- ``NOT_ALL_MEDIA_RECEIVED``: Not all media files have been received.

Tag a submission data point
----------------------------
Expand Down
Loading
Loading