143 lines
3.4 KiB
YAML
143 lines
3.4 KiB
YAML
---
|
|
kind: pipeline
|
|
type: docker
|
|
name: linting
|
|
|
|
steps:
|
|
- name: gitleaks
|
|
image: plugins/gitleaks
|
|
settings:
|
|
path: .
|
|
when:
|
|
event:
|
|
exclude:
|
|
- tag
|
|
|
|
- name: hadolint
|
|
image: hadolint/hadolint:latest-debian
|
|
commands:
|
|
- hadolint Dockerfile
|
|
|
|
---
|
|
kind: pipeline
|
|
type: docker
|
|
name: selfhosted
|
|
depends_on: # bezieht sich auf linting pipeline
|
|
- linting
|
|
steps:
|
|
- name: docker_build_and_push_selfhosted
|
|
image: plugins/docker
|
|
settings:
|
|
dockerfile: Dockerfile
|
|
repo: registry.mgrote.net/python-api-server
|
|
registry: registry.mgrote.net
|
|
tags:
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
|
- ${DRONE_COMMIT_BRANCH}
|
|
- latest
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
- tag
|
|
|
|
- name: docker_build_and_push_selfhosted_tag
|
|
image: plugins/docker
|
|
settings:
|
|
dockerfile: Dockerfile
|
|
repo: registry.mgrote.net/python-api-server
|
|
registry: registry.mgrote.net
|
|
tags:
|
|
- ${DRONE_TAG}
|
|
when:
|
|
event:
|
|
- tag
|
|
|
|
---
|
|
kind: pipeline
|
|
type: docker
|
|
name: dockerhub
|
|
depends_on: # bezieht sich auf linting pipeline
|
|
- linting
|
|
steps:
|
|
- name: docker_build_and_push_dockerhub
|
|
image: plugins/docker
|
|
settings:
|
|
username:
|
|
from_secret: DOCKERHUB_USER
|
|
password:
|
|
from_secret: DOCKERHUB_PASS
|
|
dockerfile: Dockerfile
|
|
repo: quotengrote/python-api-server
|
|
tags:
|
|
- ${DRONE_COMMIT_SHA:0:8}
|
|
- ${DRONE_COMMIT_BRANCH}
|
|
- latest
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
- tag
|
|
|
|
- name: docker_build_and_push_dockerhub_tag
|
|
image: plugins/docker
|
|
settings:
|
|
username:
|
|
from_secret: DOCKERHUB_USER
|
|
password:
|
|
from_secret: DOCKERHUB_PASS
|
|
dockerfile: Dockerfile
|
|
repo: quotengrote/python-api-server
|
|
tags:
|
|
- ${DRONE_TAG}
|
|
when:
|
|
event:
|
|
- tag
|
|
|
|
---
|
|
kind: pipeline
|
|
type: docker
|
|
name: test
|
|
depends_on:
|
|
- selfhosted
|
|
- dockerhub
|
|
|
|
steps:
|
|
- name: test
|
|
image: registry.mgrote.net/python-api-server:latest
|
|
environment:
|
|
MAX_CONTENT_LENGTH: 50
|
|
UPLOAD_DIRECTORY: /uploads
|
|
AUTH_TOKEN: myuploadtoken
|
|
ENABLE_WEBSERVER: false
|
|
DEBIAN_FRONTEND: noninteractive
|
|
commands:
|
|
- |
|
|
apt update
|
|
apt install wget jq curl -y
|
|
python3 -m gunicorn app:app c gunicorn_config.py &
|
|
export TOKEN=myuploadtoken
|
|
export URL="localhost:5000"
|
|
mkdir -p tests
|
|
echo "Test: normaler Upload"
|
|
echo content > tests/file
|
|
curl -X POST -H "token: $TOKEN" -F "file=@tests/file" $URL/upload | jq
|
|
echo "Test: leerer Upload"
|
|
curl -X POST -H "token: $TOKEN" $URL/upload | jq
|
|
echo "Test: fehlerhafter Dateiname Upload"
|
|
touch ./tests/'hallo\welt.txt'
|
|
curl -X POST -H "token: $TOKEN" -F "file=@tests/hallo\welt.txt" $URL/upload | jq
|
|
echo "Test: List Files"
|
|
curl -H "token: $TOKEN" $URL/list | jq
|
|
echo "Test: download Datei"
|
|
wget $URL/download/file -o ./tests/file
|
|
ls -lah ./tests/file
|
|
echo "Test: download nicht vorhandene Datei"
|
|
wget $URL/download/file2
|
|
echo "Test: lösche Datei"
|
|
curl -X DELETE -H "token: $TOKEN" $URL/delete/file | jq
|
|
echo "Test: lösche nicht vorhandene Datei"
|
|
curl -X DELETE -H "token: $TOKEN" $URL/delete/file2 | jq
|
|
echo "Test: check health"
|
|
curl $URL/health
|
|
rm -rf tests
|