mirror of
https://github.com/mykitserver/docker-limesurvey.git
synced 2025-12-06 16:39:11 +01:00
Add Trivy Scan and Structure Test (#71)
* Add Trivy Scan and Structure Tests * Update README, fancy new Badges! * Update Makefile, full-qualified Image names
This commit is contained in:
49
.github/workflows/test-latest-container-images.yaml
vendored
Normal file
49
.github/workflows/test-latest-container-images.yaml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Test Latest Container Images
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test_images:
|
||||||
|
name: Test Latest Container Images with Trivy
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
context:
|
||||||
|
- apache
|
||||||
|
- fpm-alpine
|
||||||
|
- fpm
|
||||||
|
steps:
|
||||||
|
- name: 'Check out the repo'
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: 'Set up Docker Buildx'
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: 'Build Container images'
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: 5.0/${{ matrix.context }}
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||||
|
|
||||||
|
- name: 'Run Structure tests'
|
||||||
|
uses: plexsystems/container-structure-test-action@v0.2.0
|
||||||
|
with:
|
||||||
|
image: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||||
|
config: tests/${{ matrix.context }}-tests.yaml
|
||||||
|
|
||||||
|
- name: 'Run vulnerability scanner'
|
||||||
|
uses: aquasecurity/trivy-action@master
|
||||||
|
with:
|
||||||
|
image-ref: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
|
||||||
|
format: 'template'
|
||||||
|
template: '@/contrib/sarif.tpl'
|
||||||
|
output: trivy-results-5-${{ matrix.context }}.sarif
|
||||||
|
severity: 'CRITICAL,HIGH'
|
||||||
|
|
||||||
|
- name: 'Upload Trivy scan results to GitHub'
|
||||||
|
uses: github/codeql-action/upload-sarif@v1
|
||||||
|
with:
|
||||||
|
sarif_file: trivy-results-5-${{ matrix.context }}.sarif
|
||||||
|
category: "${{ matrix.context }}"
|
||||||
49
.github/workflows/test-lts-container-images.yaml
vendored
Normal file
49
.github/workflows/test-lts-container-images.yaml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Test LTS Container Images
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test_images:
|
||||||
|
name: Test LTS Container Images with Trivy
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
context:
|
||||||
|
- apache
|
||||||
|
- fpm-alpine
|
||||||
|
- fpm
|
||||||
|
steps:
|
||||||
|
- name: 'Check out the repo'
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: 'Set up Docker Buildx'
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: 'Build Container images'
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: 3.0/${{ matrix.context }}
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||||
|
|
||||||
|
- name: 'Run Structure tests'
|
||||||
|
uses: plexsystems/container-structure-test-action@v0.2.0
|
||||||
|
with:
|
||||||
|
image: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||||
|
config: tests/${{ matrix.context }}-tests.yaml
|
||||||
|
|
||||||
|
- name: 'Run vulnerability scanner'
|
||||||
|
uses: aquasecurity/trivy-action@master
|
||||||
|
with:
|
||||||
|
image-ref: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
|
||||||
|
format: 'template'
|
||||||
|
template: '@/contrib/sarif.tpl'
|
||||||
|
output: trivy-results-3-${{ matrix.context }}.sarif
|
||||||
|
severity: 'CRITICAL,HIGH'
|
||||||
|
|
||||||
|
- name: 'Upload Trivy scan results to GitHub'
|
||||||
|
uses: github/codeql-action/upload-sarif@v1
|
||||||
|
with:
|
||||||
|
sarif_file: trivy-results-3-${{ matrix.context }}.sarif
|
||||||
|
category: "${{ matrix.context }}"
|
||||||
12
Makefile
12
Makefile
@@ -1,14 +1,14 @@
|
|||||||
# .PHONY: apache fpm fpm-alpine
|
# .PHONY: apache fpm fpm-alpine
|
||||||
|
|
||||||
apache-lts:
|
apache-lts:
|
||||||
docker build --pull -t martialblog/limesurvey:3-apache 3.0/apache
|
docker build --pull -t docker.io/martialblog/limesurvey:3-apache 3.0/apache
|
||||||
apache-latest:
|
apache-latest:
|
||||||
docker build --pull -t martialblog/limesurvey:5-apache 5.0/apache
|
docker build --pull -t docker.io/martialblog/limesurvey:5-apache 5.0/apache
|
||||||
fpm-alpine-lts:
|
fpm-alpine-lts:
|
||||||
docker build --pull -t martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
|
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
|
||||||
fpm-alpine-latest:
|
fpm-alpine-latest:
|
||||||
docker build --pull -t martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
|
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
|
||||||
fpm-lts:
|
fpm-lts:
|
||||||
docker build --pull -t martialblog/limesurvey:3-fpm 3.0/fpm
|
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm 3.0/fpm
|
||||||
fpm-latest:
|
fpm-latest:
|
||||||
docker build --pull -t martialblog/limesurvey:5-fpm 5.0/fpm
|
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm 5.0/fpm
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
[](https://travis-ci.com/martialblog/docker-limesurvey)
|
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/lint-dockerfiles.yaml)
|
||||||
|
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-lts-container-images.yaml)
|
||||||
|
[](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-latest-container-images.yaml)
|
||||||
[](https://microbadger.com/images/martialblog/limesurvey "Get your own image badge on microbadger.com")
|
[](https://microbadger.com/images/martialblog/limesurvey "Get your own image badge on microbadger.com")
|
||||||
|
|
||||||
# LimeSurvey Docker
|
# LimeSurvey Docker
|
||||||
|
|||||||
57
tests/fpm-alpine-tests.yaml
Normal file
57
tests/fpm-alpine-tests.yaml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
schemaVersion: "2.0.0"
|
||||||
|
|
||||||
|
globalEnvVars:
|
||||||
|
- key: "PATH"
|
||||||
|
value: "/env/bin:$PATH"
|
||||||
|
|
||||||
|
fileContentTests:
|
||||||
|
- name: 'Limesurvey admin file content'
|
||||||
|
path: '/var/www/html/admin/index.php'
|
||||||
|
expectedContents: ['LimeSurvey']
|
||||||
|
- name: 'Entrypoint file content'
|
||||||
|
path: '/var/www/html/entrypoint.sh'
|
||||||
|
expectedContents: ['console.php', 'ADMIN_USER']
|
||||||
|
|
||||||
|
fileExistenceTests:
|
||||||
|
- name: 'Limesurvey files'
|
||||||
|
path: '/var/www/html/index.php'
|
||||||
|
shouldExist: true
|
||||||
|
permissions: '-rw-rw-r--'
|
||||||
|
- name: 'Limesurvey admin files'
|
||||||
|
path: '/var/www/html/admin/index.php'
|
||||||
|
shouldExist: true
|
||||||
|
permissions: '-rw-rw-r--'
|
||||||
|
- name: "Dependencies - PHP - gd"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-gd.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - imap"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-imap.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - ldap"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - pgsql"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-pgsql.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - zip"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-zip.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - sodium"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - pdo_mysql"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini'
|
||||||
|
shouldExist: true
|
||||||
|
- name: "Dependencies - PHP - pdo_pgsql"
|
||||||
|
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini'
|
||||||
|
shouldExist: true
|
||||||
|
|
||||||
|
commandTests:
|
||||||
|
- name: "Dependencies - netcat"
|
||||||
|
command: "apk"
|
||||||
|
args: ["info", "-e", "netcat-openbsd"]
|
||||||
|
exitCode: 0
|
||||||
|
- name: "Dependencies - PHP Modules"
|
||||||
|
command: "php"
|
||||||
|
args: ["-m"]
|
||||||
|
expectedOutput: ["ldap", "zip", "pdo_mysql", "pdo_sqlite", "gd", "mbstring", "PDO", "imap"]
|
||||||
1
tests/fpm-tests.yaml
Symbolic link
1
tests/fpm-tests.yaml
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
apache-tests.yaml
|
||||||
11
tests/run.sh
11
tests/run.sh
@@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
IMAGE=$1
|
|
||||||
|
|
||||||
if [ ! -f container-structure-test ]; then
|
|
||||||
curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64
|
|
||||||
mv container-structure-test-linux-amd64 container-structure-test
|
|
||||||
chmod +x container-structure-test
|
|
||||||
fi
|
|
||||||
|
|
||||||
./container-structure-test test --image $IMAGE --config tests/image_tests.yaml
|
|
||||||
Reference in New Issue
Block a user