local PipelineLinting = { kind: 'pipeline', name: 'linting', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'ansible-later', image: 'thegeeklab/ansible-later', commands: [ 'ansible-later', ], }, { name: 'python-format', image: 'python:3.10', environment: { PY_COLORS: 1, }, commands: [ 'pip install -qq yapf', '[ -z "$(find . -type f -name *.py)" ] || (yapf -rd ./)', ], }, { name: 'python-flake8', image: 'python:3.10', environment: { PY_COLORS: 1, }, commands: [ 'pip install -qq flake8', 'flake8', ], }, ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineDeployment(scenario='rocky8') = { kind: 'pipeline', name: 'testing-' + scenario, platform: { os: 'linux', arch: 'amd64', }, concurrency: { limit: 1, }, workspace: { base: '/drone/src', path: '${DRONE_REPO_NAME}', }, steps: [ { name: 'ansible-molecule', image: 'thegeeklab/molecule:3', environment: { HCLOUD_TOKEN: { from_secret: 'hcloud_token' }, }, commands: [ 'molecule test -s ' + scenario, ], }, ], depends_on: [ 'linting', ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineDocumentation = { kind: 'pipeline', name: 'documentation', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'generate', image: 'thegeeklab/ansible-doctor', environment: { ANSIBLE_DOCTOR_LOG_LEVEL: 'INFO', ANSIBLE_DOCTOR_FORCE_OVERWRITE: true, ANSIBLE_DOCTOR_EXCLUDE_FILES: 'molecule/', ANSIBLE_DOCTOR_TEMPLATE: 'hugo-book', ANSIBLE_DOCTOR_ROLE_NAME: '${DRONE_REPO_NAME#*.}', ANSIBLE_DOCTOR_OUTPUT_DIR: '_docs/', }, }, { name: 'publish', image: 'plugins/gh-pages', settings: { remote_url: 'https://gitea.rknet.org/ansible/${DRONE_REPO_NAME}', netrc_machine: 'gitea.rknet.org', username: { from_secret: 'gitea_username' }, password: { from_secret: 'gitea_token' }, pages_directory: '_docs/', target_branch: 'docs', }, when: { ref: ['refs/heads/main'], }, }, ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, depends_on: [ 'testing-rocky8', ], }; local PipelineNotification = { kind: 'pipeline', name: 'notification', platform: { os: 'linux', arch: 'amd64', }, clone: { disable: true, }, steps: [ { name: 'matrix', image: 'thegeeklab/drone-matrix', settings: { homeserver: { from_secret: 'matrix_homeserver' }, roomid: { from_secret: 'matrix_roomid' }, template: 'Status: **{{ build.Status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}
Message: {{ commit.Message.Title }}', username: { from_secret: 'matrix_username' }, password: { from_secret: 'matrix_password' }, }, }, ], depends_on: [ 'documentation', ], trigger: { status: ['success', 'failure'], ref: ['refs/heads/main', 'refs/tags/**'], }, }; [ PipelineLinting, PipelineDeployment(scenario='rocky8'), PipelineDocumentation, PipelineNotification, ]