From c91ee82c8ee3600e96c2a260877566e10ae4bd71 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Thu, 24 Aug 2023 21:43:38 +0200 Subject: [PATCH] ci: migrate to woodpecker --- .drone.jsonnet | 438 ------------------ .drone.yml | 431 ----------------- .github/settings.yml | 8 +- .woodpecker/build-container.yml | 74 +++ .woodpecker/build-package.yml | 63 +++ .woodpecker/docs.yml | 106 +++++ .woodpecker/lint.yml | 27 ++ .woodpecker/notify.yml | 26 ++ .woodpecker/test.yml | 29 ++ ...rfile.multiarch => Containerfile.multiarch | 0 README.md | 2 +- 11 files changed, 332 insertions(+), 872 deletions(-) delete mode 100644 .drone.jsonnet delete mode 100644 .drone.yml create mode 100644 .woodpecker/build-container.yml create mode 100644 .woodpecker/build-package.yml create mode 100644 .woodpecker/docs.yml create mode 100644 .woodpecker/lint.yml create mode 100644 .woodpecker/notify.yml create mode 100644 .woodpecker/test.yml rename Dockerfile.multiarch => Containerfile.multiarch (100%) diff --git a/.drone.jsonnet b/.drone.jsonnet deleted file mode 100644 index 0d1b4a8..0000000 --- a/.drone.jsonnet +++ /dev/null @@ -1,438 +0,0 @@ -local PythonVersion(pyversion='3.8') = { - name: 'python' + std.strReplace(pyversion, '.', '') + '-pytest', - image: 'python:' + pyversion, - environment: { - PY_COLORS: 1, - }, - commands: [ - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry install', - 'poetry run pytest --cov-append', - 'poetry version', - 'poetry run prometheus-pve-sd --help', - ], - depends_on: [ - 'fetch', - ], -}; - -local PipelineLint = { - kind: 'pipeline', - name: 'lint', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'check-format', - image: 'python:3.11', - environment: { - PY_COLORS: 1, - }, - commands: [ - 'git fetch -tq', - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry install', - 'poetry run yapf -dr ./prometheuspvesd', - ], - }, - { - name: 'check-coding', - image: 'python:3.11', - environment: { - PY_COLORS: 1, - }, - commands: [ - 'git fetch -tq', - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry install', - 'poetry run ruff ./prometheuspvesd', - ], - }, - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineTest = { - kind: 'pipeline', - name: 'test', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'fetch', - image: 'python:3.11', - commands: [ - 'git fetch -tq', - ], - }, - PythonVersion(pyversion='3.8'), - PythonVersion(pyversion='3.9'), - PythonVersion(pyversion='3.10'), - PythonVersion(pyversion='3.11'), - { - name: 'codecov', - image: 'thegeeklab/codecov', - environment: { - CODECOV_TOKEN: { from_secret: 'codecov_token' }, - }, - commands: [ - 'codecov --nonZero', - ], - depends_on: [ - 'python38-pytest', - 'python39-pytest', - 'python310-pytest', - 'python311-pytest', - ], - }, - ], - depends_on: [ - 'lint', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineBuildPackage = { - kind: 'pipeline', - name: 'build-package', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'build', - image: 'python:3.11', - commands: [ - 'git fetch -tq', - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry build', - ], - }, - { - name: 'checksum', - image: 'alpine', - commands: [ - 'cd dist/ && sha256sum * > ../sha256sum.txt', - ], - }, - { - name: 'changelog-generate', - image: 'thegeeklab/git-chglog', - commands: [ - 'git fetch -tq', - 'git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased}', - ], - }, - { - name: 'changelog-format', - image: 'thegeeklab/alpine-tools', - commands: [ - 'prettier CHANGELOG.md', - 'prettier -w CHANGELOG.md', - ], - }, - { - name: 'publish-github', - image: 'plugins/github-release', - settings: { - overwrite: true, - api_key: { from_secret: 'github_token' }, - files: ['dist/*', 'sha256sum.txt'], - title: '${DRONE_TAG}', - note: 'CHANGELOG.md', - }, - when: { - ref: ['refs/tags/**'], - }, - }, - { - name: 'publish-pypi', - image: 'python:3.11', - commands: [ - 'git fetch -tq', - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry publish -n', - ], - environment: { - POETRY_HTTP_BASIC_PYPI_USERNAME: { from_secret: 'pypi_username' }, - POETRY_HTTP_BASIC_PYPI_PASSWORD: { from_secret: 'pypi_password' }, - }, - when: { - ref: ['refs/tags/**'], - }, - }, - ], - depends_on: [ - 'test', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineBuildContainer = { - kind: 'pipeline', - name: 'build-container', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'build', - image: 'python:3.11', - commands: [ - 'git fetch -tq', - 'pip install poetry poetry-dynamic-versioning -qq', - 'poetry build', - ], - }, - { - name: 'dryrun', - image: 'thegeeklab/drone-docker-buildx:23', - settings: { - dry_run: true, - dockerfile: 'Dockerfile.multiarch', - repo: 'thegeeklab/${DRONE_REPO_NAME}', - platforms: [ - 'linux/amd64', - 'linux/arm64', - ], - provenance: false, - }, - depends_on: ['build'], - when: { - ref: ['refs/pull/**'], - }, - }, - { - name: 'publish-dockerhub', - image: 'thegeeklab/drone-docker-buildx:23', - settings: { - auto_tag: true, - dockerfile: 'Dockerfile.multiarch', - repo: 'thegeeklab/${DRONE_REPO_NAME}', - username: { from_secret: 'docker_username' }, - password: { from_secret: 'docker_password' }, - platforms: [ - 'linux/amd64', - 'linux/arm64', - ], - provenance: false, - }, - when: { - ref: ['refs/heads/main', 'refs/tags/**'], - }, - depends_on: ['dryrun'], - }, - { - name: 'publish-quay', - image: 'thegeeklab/drone-docker-buildx:23', - settings: { - auto_tag: true, - dockerfile: 'Dockerfile.multiarch', - registry: 'quay.io', - repo: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', - username: { from_secret: 'quay_username' }, - password: { from_secret: 'quay_password' }, - platforms: [ - 'linux/amd64', - 'linux/arm64', - ], - provenance: false, - }, - when: { - ref: ['refs/heads/main', 'refs/tags/**'], - }, - depends_on: ['dryrun'], - }, - ], - depends_on: [ - 'test', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineDocs = { - kind: 'pipeline', - name: 'docs', - platform: { - os: 'linux', - arch: 'amd64', - }, - concurrency: { - limit: 1, - }, - steps: [ - { - name: 'assets', - image: 'thegeeklab/alpine-tools', - commands: [ - 'make doc', - ], - }, - { - name: 'markdownlint', - image: 'thegeeklab/markdownlint-cli', - commands: [ - "markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md'", - ], - }, - { - name: 'spellcheck', - image: 'thegeeklab/alpine-tools', - commands: [ - "spellchecker --files 'docs/content/**/*.md' 'README.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions", - ], - environment: { - FORCE_COLOR: true, - NPM_CONFIG_LOGLEVEL: 'error', - }, - }, - { - name: 'testbuild', - image: 'thegeeklab/hugo:0.115.2', - commands: [ - 'hugo --panicOnWarning -s docs/ -b http://localhost:8000/', - ], - }, - { - name: 'link-validation', - image: 'thegeeklab/link-validator', - commands: [ - 'link-validator --color=always --rate-limit 10', - ], - environment: { - LINK_VALIDATOR_BASE_DIR: 'docs/public', - LINK_VALIDATOR_RETRIES: '3', - }, - }, - { - name: 'build', - image: 'thegeeklab/hugo:0.115.2', - commands: [ - 'hugo --panicOnWarning -s docs/', - ], - }, - { - name: 'beautify', - image: 'thegeeklab/alpine-tools', - commands: [ - "html-beautify -r -f 'docs/public/**/*.html'", - ], - environment: { - FORCE_COLOR: true, - NPM_CONFIG_LOGLEVEL: 'error', - }, - }, - { - name: 'publish', - image: 'thegeeklab/drone-s3-sync', - settings: { - access_key: { from_secret: 's3_access_key' }, - bucket: 'geekdocs', - delete: true, - endpoint: 'https://sp.rknet.org', - path_style: true, - secret_key: { from_secret: 's3_secret_access_key' }, - source: 'docs/public/', - strip_prefix: 'docs/public/', - target: '/${DRONE_REPO_NAME}', - }, - when: { - ref: ['refs/heads/main', 'refs/tags/**'], - }, - }, - ], - depends_on: [ - 'build-package', - 'build-container', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], - }, -}; - -local PipelineNotifications = { - kind: 'pipeline', - name: 'notifications', - platform: { - os: 'linux', - arch: 'amd64', - }, - steps: [ - { - name: 'pushrm-dockerhub', - image: 'chko/docker-pushrm:1', - environment: { - DOCKER_PASS: { - from_secret: 'docker_password', - }, - DOCKER_USER: { - from_secret: 'docker_username', - }, - PUSHRM_FILE: 'README.md', - PUSHRM_SHORT: 'Prometheus Service Discovery for Proxmox VE', - PUSHRM_TARGET: 'thegeeklab/${DRONE_REPO_NAME}', - }, - when: { - status: ['success'], - }, - }, - { - name: 'pushrm-quay', - image: 'chko/docker-pushrm:1', - environment: { - APIKEY__QUAY_IO: { - from_secret: 'quay_token', - }, - PUSHRM_FILE: 'README.md', - PUSHRM_TARGET: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', - }, - when: { - status: ['success'], - }, - }, - { - 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 }}){{ end }} by {{ .Commit.Author }}
Message: {{ .Commit.Message.Title }}', - username: { from_secret: 'matrix_username' }, - password: { from_secret: 'matrix_password' }, - }, - when: { - status: ['success', 'failure'], - }, - }, - ], - depends_on: [ - 'docs', - ], - trigger: { - ref: ['refs/heads/main', 'refs/tags/**'], - status: ['success', 'failure'], - }, -}; - -[ - PipelineLint, - PipelineTest, - PipelineBuildPackage, - PipelineBuildContainer, - PipelineDocs, - PipelineNotifications, -] diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 209a1dd..0000000 --- a/.drone.yml +++ /dev/null @@ -1,431 +0,0 @@ ---- -kind: pipeline -name: lint - -platform: - os: linux - arch: amd64 - -steps: - - name: check-format - image: python:3.11 - commands: - - git fetch -tq - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run yapf -dr ./prometheuspvesd - environment: - PY_COLORS: 1 - - - name: check-coding - image: python:3.11 - commands: - - git fetch -tq - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run ruff ./prometheuspvesd - environment: - PY_COLORS: 1 - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - ---- -kind: pipeline -name: test - -platform: - os: linux - arch: amd64 - -steps: - - name: fetch - image: python:3.11 - commands: - - git fetch -tq - - - name: python38-pytest - image: python:3.8 - commands: - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run pytest --cov-append - - poetry version - - poetry run prometheus-pve-sd --help - environment: - PY_COLORS: 1 - depends_on: - - fetch - - - name: python39-pytest - image: python:3.9 - commands: - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run pytest --cov-append - - poetry version - - poetry run prometheus-pve-sd --help - environment: - PY_COLORS: 1 - depends_on: - - fetch - - - name: python310-pytest - image: python:3.10 - commands: - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run pytest --cov-append - - poetry version - - poetry run prometheus-pve-sd --help - environment: - PY_COLORS: 1 - depends_on: - - fetch - - - name: python311-pytest - image: python:3.11 - commands: - - pip install poetry poetry-dynamic-versioning -qq - - poetry install - - poetry run pytest --cov-append - - poetry version - - poetry run prometheus-pve-sd --help - environment: - PY_COLORS: 1 - depends_on: - - fetch - - - name: codecov - image: thegeeklab/codecov - commands: - - codecov --nonZero - environment: - CODECOV_TOKEN: - from_secret: codecov_token - depends_on: - - python38-pytest - - python39-pytest - - python310-pytest - - python311-pytest - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - lint - ---- -kind: pipeline -name: build-package - -platform: - os: linux - arch: amd64 - -steps: - - name: build - image: python:3.11 - commands: - - git fetch -tq - - pip install poetry poetry-dynamic-versioning -qq - - poetry build - - - name: checksum - image: alpine - commands: - - cd dist/ && sha256sum * > ../sha256sum.txt - - - name: changelog-generate - image: thegeeklab/git-chglog - commands: - - git fetch -tq - - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased} - - - name: changelog-format - image: thegeeklab/alpine-tools - commands: - - prettier CHANGELOG.md - - prettier -w CHANGELOG.md - - - name: publish-github - image: plugins/github-release - settings: - api_key: - from_secret: github_token - files: - - dist/* - - sha256sum.txt - note: CHANGELOG.md - overwrite: true - title: ${DRONE_TAG} - when: - ref: - - refs/tags/** - - - name: publish-pypi - image: python:3.11 - commands: - - git fetch -tq - - pip install poetry poetry-dynamic-versioning -qq - - poetry publish -n - environment: - POETRY_HTTP_BASIC_PYPI_PASSWORD: - from_secret: pypi_password - POETRY_HTTP_BASIC_PYPI_USERNAME: - from_secret: pypi_username - when: - ref: - - refs/tags/** - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - test - ---- -kind: pipeline -name: build-container - -platform: - os: linux - arch: amd64 - -steps: - - name: build - image: python:3.11 - commands: - - git fetch -tq - - pip install poetry poetry-dynamic-versioning -qq - - poetry build - - - name: dryrun - image: thegeeklab/drone-docker-buildx:23 - settings: - dockerfile: Dockerfile.multiarch - dry_run: true - platforms: - - linux/amd64 - - linux/arm64 - provenance: false - repo: thegeeklab/${DRONE_REPO_NAME} - when: - ref: - - refs/pull/** - depends_on: - - build - - - name: publish-dockerhub - image: thegeeklab/drone-docker-buildx:23 - settings: - auto_tag: true - dockerfile: Dockerfile.multiarch - password: - from_secret: docker_password - platforms: - - linux/amd64 - - linux/arm64 - provenance: false - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - dryrun - - - name: publish-quay - image: thegeeklab/drone-docker-buildx:23 - settings: - auto_tag: true - dockerfile: Dockerfile.multiarch - password: - from_secret: quay_password - platforms: - - linux/amd64 - - linux/arm64 - provenance: false - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** - depends_on: - - dryrun - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - test - ---- -kind: pipeline -name: docs - -platform: - os: linux - arch: amd64 - -concurrency: - limit: 1 - -steps: - - name: assets - image: thegeeklab/alpine-tools - commands: - - make doc - - - name: markdownlint - image: thegeeklab/markdownlint-cli - commands: - - markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' - - - name: spellcheck - image: thegeeklab/alpine-tools - commands: - - spellchecker --files 'docs/content/**/*.md' 'README.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions - environment: - FORCE_COLOR: true - NPM_CONFIG_LOGLEVEL: error - - - name: testbuild - image: thegeeklab/hugo:0.115.2 - commands: - - hugo --panicOnWarning -s docs/ -b http://localhost:8000/ - - - name: link-validation - image: thegeeklab/link-validator - commands: - - link-validator --color=always --rate-limit 10 - environment: - LINK_VALIDATOR_BASE_DIR: docs/public - LINK_VALIDATOR_RETRIES: 3 - - - name: build - image: thegeeklab/hugo:0.115.2 - commands: - - hugo --panicOnWarning -s docs/ - - - name: beautify - image: thegeeklab/alpine-tools - commands: - - html-beautify -r -f 'docs/public/**/*.html' - environment: - FORCE_COLOR: true - NPM_CONFIG_LOGLEVEL: error - - - name: publish - image: thegeeklab/drone-s3-sync - settings: - access_key: - from_secret: s3_access_key - bucket: geekdocs - delete: true - endpoint: https://sp.rknet.org - path_style: true - secret_key: - from_secret: s3_secret_access_key - source: docs/public/ - strip_prefix: docs/public/ - target: /${DRONE_REPO_NAME} - when: - ref: - - refs/heads/main - - refs/tags/** - -trigger: - ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** - -depends_on: - - build-package - - build-container - ---- -kind: pipeline -name: notifications - -platform: - os: linux - arch: amd64 - -steps: - - name: pushrm-dockerhub - image: chko/docker-pushrm:1 - environment: - DOCKER_PASS: - from_secret: docker_password - DOCKER_USER: - from_secret: docker_username - PUSHRM_FILE: README.md - PUSHRM_SHORT: Prometheus Service Discovery for Proxmox VE - PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME} - when: - status: - - success - - - name: pushrm-quay - image: chko/docker-pushrm:1 - environment: - APIKEY__QUAY_IO: - from_secret: quay_token - PUSHRM_FILE: README.md - PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME} - when: - status: - - success - - - name: matrix - image: thegeeklab/drone-matrix - settings: - homeserver: - from_secret: matrix_homeserver - password: - from_secret: matrix_password - roomid: - from_secret: matrix_roomid - template: "Status: **{{ .Build.Status }}**
Build: [{{ .Repo.Owner }}/{{ .Repo.Name }}]({{ .Build.Link }}){{ if .Build.Branch }} ({{ .Build.Branch }}){{ end }} by {{ .Commit.Author }}
Message: {{ .Commit.Message.Title }}" - username: - from_secret: matrix_username - when: - status: - - success - - failure - -trigger: - ref: - - refs/heads/main - - refs/tags/** - status: - - success - - failure - -depends_on: - - docs - ---- -kind: signature -hmac: 8ad7bcb9f0d72c5c875078d46d6bcc5dd868db3a89c2482c683d46f81521ed73 - -... diff --git a/.github/settings.yml b/.github/settings.yml index 5919b08..dd6e773 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -52,7 +52,11 @@ branches: required_status_checks: strict: false contexts: - - continuous-integration/drone/pr - enforce_admins: true + - ci/woodpecker/pr/lint + - ci/woodpecker/pr/test + - ci/woodpecker/pr/build-package + - ci/woodpecker/pr/build-container + - ci/woodpecker/pr/docs + enforce_admins: false required_linear_history: true restrictions: null diff --git a/.woodpecker/build-container.yml b/.woodpecker/build-container.yml new file mode 100644 index 0000000..0b7d389 --- /dev/null +++ b/.woodpecker/build-container.yml @@ -0,0 +1,74 @@ +--- +when: + - event: [pull_request, tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +steps: + build: + image: docker.io/library/python:3.11 + commands: + - git fetch -tq + - pip install poetry poetry-dynamic-versioning -qq + - poetry build + + dryrun: + image: quay.io/thegeeklab/wp-docker-buildx:1 + settings: + containerfile: Containerfile.multiarch + dry_run: true + platforms: + - linux/amd64 + - linux/arm64 + provenance: false + repo: ${CI_REPO} + when: + - event: [pull_request] + + publish-dockerhub: + group: container + image: quay.io/thegeeklab/wp-docker-buildx:1 + settings: + auto_tag: true + containerfile: Containerfile.multiarch + password: + from_secret: docker_password + platforms: + - linux/amd64 + - linux/arm64 + provenance: false + repo: ${CI_REPO} + username: + from_secret: docker_username + when: + - event: [tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + + publish-quay: + group: container + image: quay.io/thegeeklab/wp-docker-buildx:1 + settings: + auto_tag: true + containerfile: Containerfile.multiarch + password: + from_secret: quay_password + platforms: + - linux/amd64 + - linux/arm64 + provenance: false + registry: quay.io + repo: quay.io/${CI_REPO} + username: + from_secret: quay_username + when: + - event: [tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +depends_on: + - lint + - test diff --git a/.woodpecker/build-package.yml b/.woodpecker/build-package.yml new file mode 100644 index 0000000..cf68ab1 --- /dev/null +++ b/.woodpecker/build-package.yml @@ -0,0 +1,63 @@ +--- +when: + - event: [pull_request, tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +steps: + build: + image: docker.io/library/python:3.11 + commands: + - git fetch -tq + - pip install poetry poetry-dynamic-versioning -qq + - poetry build + + checksum: + image: quay.io/thegeeklab/alpine-tools + commands: + - cd dist/ && sha256sum * > ../sha256sum.txt + + changelog-generate: + image: quay.io/thegeeklab/git-chglog + commands: + - git fetch -tq + - git-chglog --no-color --no-emoji -o CHANGELOG.md ${CI_COMMIT_TAG:---next-tag unreleased unreleased} + + changelog-format: + image: quay.io/thegeeklab/alpine-tools + commands: + - prettier CHANGELOG.md + - prettier -w CHANGELOG.md + + publish-github: + image: docker.io/plugins/github-release + settings: + api_key: + from_secret: github_token + files: + - dist/* + - sha256sum.txt + note: CHANGELOG.md + overwrite: true + title: ${CI_COMMIT_TAG} + when: + - event: [tag] + + publish-pypi: + image: docker.io/library/python:3.11 + secrets: + - source: pypi_password + target: POETRY_HTTP_BASIC_PYPI_PASSWORD + - source: pypi_username + target: POETRY_HTTP_BASIC_PYPI_USERNAME + commands: + - git fetch -tq + - pip install poetry poetry-dynamic-versioning -qq + - poetry publish -n + when: + - event: [tag] + +depends_on: + - lint + - test diff --git a/.woodpecker/docs.yml b/.woodpecker/docs.yml new file mode 100644 index 0000000..d8485e6 --- /dev/null +++ b/.woodpecker/docs.yml @@ -0,0 +1,106 @@ +--- +when: + - event: [pull_request, tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +steps: + assets: + image: quay.io/thegeeklab/alpine-tools + commands: + - make doc + + markdownlint: + image: quay.io/thegeeklab/markdownlint-cli + commands: + - markdownlint 'README.md' 'CONTRIBUTING.md' + + spellcheck: + image: quay.io/thegeeklab/alpine-tools + commands: + - spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls + environment: + FORCE_COLOR: "true" + NPM_CONFIG_LOGLEVEL: "error" + + testbuild: + image: quay.io/thegeeklab/hugo:0.115.2 + commands: + - hugo --panicOnWarning -s docs/ -b http://localhost:8000/ + + link-validation: + image: quay.io/thegeeklab/link-validator + commands: + - link-validator --color=always --rate-limit 10 + environment: + LINK_VALIDATOR_BASE_DIR: docs/public + LINK_VALIDATOR_RETRIES: 3 + + build: + image: quay.io/thegeeklab/hugo:0.115.2 + commands: + - hugo --panicOnWarning -s docs/ + + beautify: + image: quay.io/thegeeklab/alpine-tools + commands: + - html-beautify -r -f 'docs/public/**/*.html' + environment: + FORCE_COLOR: true + NPM_CONFIG_LOGLEVEL: error + + publish: + image: quay.io/thegeeklab/wp-s3-action + settings: + access_key: + from_secret: s3_access_key + bucket: geekdocs + delete: true + endpoint: https://sp.rknet.org + path_style: true + secret_key: + from_secret: s3_secret_access_key + source: docs/public/ + strip_prefix: docs/public/ + target: /${DRONE_REPO_NAME} + when: + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + status: [success] + + pushrm-dockerhub: + image: docker.io/chko/docker-pushrm:1 + secrets: + - source: docker_password + target: DOCKER_PASS + - source: docker_username + target: DOCKER_USER + environment: + PUSHRM_FILE: README.md + PUSHRM_SHORT: Prometheus Service Discovery for Proxmox VE + PUSHRM_TARGET: ${CI_REPO} + when: + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + status: [success] + + pushrm-quay: + image: docker.io/chko/docker-pushrm:1 + secrets: + - source: quay_token + target: APIKEY__QUAY_IO + environment: + PUSHRM_FILE: README.md + PUSHRM_TARGET: quay.io/${CI_REPO} + when: + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + status: [success] + +depends_on: + - build-package + - build-container diff --git a/.woodpecker/lint.yml b/.woodpecker/lint.yml new file mode 100644 index 0000000..73330ff --- /dev/null +++ b/.woodpecker/lint.yml @@ -0,0 +1,27 @@ +--- +when: + - event: [pull_request, tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +steps: + check-format: + image: docker.io/library/python:3.11 + commands: + - git fetch -tq + - pip install poetry poetry-dynamic-versioning -qq + - poetry install + - poetry run yapf -dr ./gitbatch + environment: + PY_COLORS: "1" + + check-coding: + image: docker.io/library/python:3.11 + commands: + - git fetch -tq + - pip install poetry poetry-dynamic-versioning -qq + - poetry install + - poetry run ruff ./gitbatch + environment: + PY_COLORS: "1" diff --git a/.woodpecker/notify.yml b/.woodpecker/notify.yml new file mode 100644 index 0000000..a851904 --- /dev/null +++ b/.woodpecker/notify.yml @@ -0,0 +1,26 @@ +--- +when: + - event: [tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +runs_on: [success, failure] + +steps: + matrix: + image: quay.io/thegeeklab/wp-matrix + settings: + homeserver: + from_secret: matrix_homeserver + password: + from_secret: matrix_password + roomid: + from_secret: matrix_roomid + username: + from_secret: matrix_username + when: + - status: [success, failure] + +depends_on: + - docs diff --git a/.woodpecker/test.yml b/.woodpecker/test.yml new file mode 100644 index 0000000..eed6404 --- /dev/null +++ b/.woodpecker/test.yml @@ -0,0 +1,29 @@ +--- +when: + - event: [pull_request, tag] + - event: [push, manual] + branch: + - ${CI_REPO_DEFAULT_BRANCH} + +matrix: + PYTHON_VERSION: + - docker.io/library/python:3.8 + - docker.io/library/python:3.9 + - docker.io/library/python:3.10 + - docker.io/library/python:3.11 + +steps: + fetch: + image: docker.io/library/python:3.11 + commands: + - git fetch -tq + + pytest: + image: ${PYTHON_VERSION} + commands: + - pip install poetry poetry-dynamic-versioning -qq + - poetry install + - poetry version + - poetry run git-batch --help + environment: + PY_COLORS: "1" diff --git a/Dockerfile.multiarch b/Containerfile.multiarch similarity index 100% rename from Dockerfile.multiarch rename to Containerfile.multiarch diff --git a/README.md b/README.md index 489ccc7..8854712 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Prometheus Service Discovery for Proxmox VE -[![Build Status](https://img.shields.io/drone/build/thegeeklab/prometheus-pve-sd?logo=drone&server=https%3A%2F%2Fdrone.thegeeklab.de)](https://drone.thegeeklab.de/thegeeklab/prometheus-pve-sd) +[![Build Status](https://ci.thegeeklab.de/api/badges/thegeeklab/prometheus-pve-sd/status.svg)](https://ci.thegeeklab.de/repos/thegeeklab/prometheus-pve-sd) [![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/prometheus-pve-sd) [![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/prometheus-pve-sd) [![Python Version](https://img.shields.io/pypi/pyversions/prometheus-pve-sd.svg)](https://pypi.org/project/prometheus-pve-sd/)