You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.4 KiB
159 lines
3.4 KiB
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.9', |
|
environment: { |
|
PY_COLORS: 1, |
|
}, |
|
commands: [ |
|
'pip install -qq yapf', |
|
'[ ! -z "$(find . -type f -name *.py)" ] && yapf -rd ./', |
|
], |
|
}, |
|
{ |
|
name: 'python-flake8', |
|
image: 'python:3.9', |
|
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/**'], |
|
}, |
|
}; |
|
|
|
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 }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}<br/> 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, |
|
]
|
|
|