local PythonVersion(pyversion='3.7') = { name: 'python' + std.strReplace(pyversion, '.', '') + '-pytest', image: 'python:' + pyversion, pull: 'always', environment: { PY_COLORS: 1, }, commands: [ 'pip install -r test-requirements.txt -qq', 'pip install -qq .', 'drone-cleanup-agents --help', ], depends_on: [ 'clone', ], }; local PipelineLint = { kind: 'pipeline', name: 'lint', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'flake8', image: 'python:3.10', pull: 'always', environment: { PY_COLORS: 1, }, commands: [ 'pip install -r test-requirements.txt -qq', 'pip install -qq .', 'flake8 ./cleanupagents', ], }, ], trigger: { ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineTest = { kind: 'pipeline', name: 'test', platform: { os: 'linux', arch: 'amd64', }, steps: [ PythonVersion(pyversion='3.7'), PythonVersion(pyversion='3.8'), PythonVersion(pyversion='3.9'), PythonVersion(pyversion='3.10'), ], trigger: { ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], }, depends_on: [ 'lint', ], }; local PipelineSecurity = { kind: 'pipeline', name: 'security', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'bandit', image: 'python:3.10', pull: 'always', environment: { PY_COLORS: 1, }, commands: [ 'pip install -r test-requirements.txt -qq', 'pip install -qq .', 'bandit -r ./cleanupagents -x ./cleanupagents/tests', ], }, ], depends_on: [ 'test', ], trigger: { ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineBuild = { kind: 'pipeline', name: 'build', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'build', image: 'python:3.10', pull: 'always', commands: [ 'python setup.py sdist bdist_wheel', ], }, { name: 'checksum', image: 'alpine', pull: 'always', commands: [ 'cd dist/ && sha256sum * > sha256sum.txt', ], }, { name: 'publish-gitea', image: 'plugins/gitea-release', pull: 'always', settings: { base_url: 'https://gitea.owncloud.services', api_key: { from_secret: 'gitea_token' }, files: ['dist/*', 'sha256sum.txt'], title: '${DRONE_TAG}', note: 'CHANGELOG.md', }, when: { ref: ['refs/tags/**'], }, }, ], depends_on: [ 'security', ], trigger: { ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], }, }; [ PipelineLint, PipelineTest, PipelineSecurity, PipelineBuild, ]