--- 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 - 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