python-api-server/.drone.yml
2023-06-26 23:44:40 +02:00

142 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
commands:
- |
# führe Script nach Fehlern weiter aus
set +e
export TOKEN=myuploadtoken
export URL="localhost:5000"
mkdir -p tests
echo -e Test: normaler Upload
echo content > tests/file
curl -X POST -H "token: $TOKEN" -F "file=@tests/file" $URL/upload | jq
echo -e Test: leerer Upload
curl -X POST -H "token: $TOKEN" $URL/upload | jq
echo -e 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 -e Test: List Files
curl -H "token: $TOKEN" $URL/list | jq
echo -e Test: download Datei
wget $URL/download/file -o ./tests/file
ls -lah ./tests/file
echo -e Test: download nicht vorhandene Datei
wget $URL/download/file2
echo -e Test: lösche Datei
curl -X DELETE -H "token: $TOKEN" $URL/delete/file | jq
echo -e Test: lösche nicht vorhandene Datei
curl -X DELETE -H "token: $TOKEN" $URL/delete/file2 | jq
echo -e Test: check health
curl $URL/health
rm -rf tests