Compare commits

..

1 Commits

Author SHA1 Message Date
d73f22cdfd Merge pull request #186 from luketainton/next
Release 2024-04-21.2
2024-04-21 17:04:18 +01:00
13 changed files with 119 additions and 201 deletions

View File

@ -6,8 +6,8 @@ updates:
interval: "daily" interval: "daily"
assignees: assignees:
- "luketainton" - "luketainton"
# reviewers: reviewers:
# - "luketainton" - "luketainton"
commit-message: commit-message:
prefix: "chore(actions)" prefix: "chore(actions)"
include: "scope" include: "scope"
@ -20,8 +20,8 @@ updates:
interval: "daily" interval: "daily"
assignees: assignees:
- "luketainton" - "luketainton"
# reviewers: reviewers:
# - "luketainton" - "luketainton"
commit-message: commit-message:
prefix: "chore(docker)" prefix: "chore(docker)"
include: "scope" include: "scope"
@ -34,8 +34,8 @@ updates:
interval: "daily" interval: "daily"
assignees: assignees:
- "luketainton" - "luketainton"
# reviewers: reviewers:
# - "luketainton" - "luketainton"
commit-message: commit-message:
prefix: "chore(pip-prod)" prefix: "chore(pip-prod)"
prefix-development: "chore(pip-dev)" prefix-development: "chore(pip-dev)"

32
.github/renovate.json vendored
View File

@ -1,47 +1,47 @@
{ {
"assignAutomerge": true,
"assigneesFromCodeOwners": true,
"baseBranches": [
"main"
],
"dependencyDashboardAutoclose": true,
"extends": [ "extends": [
"config:base", "config:base",
":semanticCommits", ":semanticCommits",
":semanticCommitTypeAll(fix)" ":semanticCommitTypeAll(fix)"
], ],
"baseBranches": [
"next"
],
"platformCommit": true,
"dependencyDashboardAutoclose": true,
"assignAutomerge": true,
"assigneesFromCodeOwners": true,
"rebaseWhen": "behind-base-branch",
"rollbackPrs": true,
"labels": [ "labels": [
"dependencies" "dependencies"
], ],
"packageRules": [ "packageRules": [
{ {
"labels": [
"linting"
],
"matchPackagePatterns": [ "matchPackagePatterns": [
"black", "black",
"pylint" "pylint"
],
"labels": [
"linting"
] ]
}, },
{ {
"labels": [
"unit-tests"
],
"matchPackagePatterns": [ "matchPackagePatterns": [
"coverage", "coverage",
"pytest" "pytest"
],
"labels": [
"unit-tests"
] ]
} }
], ],
"platformCommit": true,
"rebaseWhen": "behind-base-branch",
"rollbackPrs": true,
"vulnerabilityAlerts": { "vulnerabilityAlerts": {
"commitMessagePrefix": "[SECURITY] ",
"enabled": true, "enabled": true,
"labels": [ "labels": [
"security" "security"
], ],
"commitMessagePrefix": "[SECURITY] ",
"prCreation": "immediate" "prCreation": "immediate"
} }
} }

View File

@ -1,64 +0,0 @@
name: Build
on:
push:
branches: [main]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
release:
name: Release
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.tag_version.outputs.new_tag }}
steps:
- uses: actions/checkout@v4
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
default_bump: minor
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: ${{ steps.tag_version.outputs.new_tag }}
body: ${{ steps.tag_version.outputs.changelog }}
generateReleaseNotes: true
publish:
name: GitHub Container Registry
runs-on: ubuntu-latest
needs: release
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Login to GitHub Container Registry
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ${{ env.REGISTRY }} -u ${{ github.actor }} --password-stdin
- name: Build image for GitHub Package Registry
run: |
docker build . --file Dockerfile \
--build-arg "version=${{ needs.release.outputs.new_tag }}" \
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.release.outputs.new_tag }} \
--tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- name: Push image to GitHub Package Registry
run: |
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.release.outputs.new_tag }}
# deploy:
# name: Update Portainer Deployment
# runs-on: ubuntu-latest
# needs: publish
# steps:
# - uses: fjogeleit/http-request-action@v1
# with:
# url: ${{ secrets.PORTAINER_WEBHOOK_URL }}
# method: POST
# timeout: 60000
# preventFailureOnNoResponse: "true"

View File

@ -11,8 +11,14 @@ on:
- ".github/dependabot.yml" - ".github/dependabot.yml"
jobs: jobs:
ci: pythonci:
uses: luketainton/gha-workflows/.github/workflows/ci-python-with-docker.yml@main uses: luketainton/gha-workflows/.github/workflows/ci-python.yml@main
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
dockerci:
uses: luketainton/gha-workflows/.github/workflows/ci-docker.yml@main
secrets: secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

View File

@ -1,18 +1,56 @@
name: Release name: Build
on: on:
workflow_dispatch: push:
schedule: branches: [main]
- cron: "0 9 * * 0"
jobs: jobs:
create_release: release:
name: Create Release name: Release
uses: luketainton/gha-workflows/.github/workflows/create-release.yml@main runs-on: ubuntu-latest
outputs:
create_docker: new_tag: ${{ steps.tag_version.outputs.new_tag }}
name: Create Docker Image steps:
needs: create_release - uses: actions/checkout@v4
if: ${{ needs.create_release.outputs.success == 'true' }} - name: Bump version and push tag
uses: luketainton/gha-workflows/.github/workflows/build-push-attest-docker.yml@main id: tag_version
uses: mathieudutour/github-tag-action@v6.2
with: with:
release: ${{ needs.create_release.outputs.release_name }} github_token: ${{ secrets.GITHUB_TOKEN }}
default_bump: minor
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: ${{ steps.tag_version.outputs.new_tag }}
body: ${{ steps.tag_version.outputs.changelog }}
publish:
name: GitHub Container Registry
runs-on: ubuntu-latest
needs: release
steps:
- uses: actions/checkout@v4
- name: Login to GitHub Container Registry
run: echo ${{ secrets.GHCR_ACCESS_TOKEN }} | docker login ghcr.io -u luketainton --password-stdin
- name: Build image for GitHub Package Registry
run: |
docker build . --file Dockerfile \
--build-arg "version=${{ needs.release.outputs.new_tag }}" \
--tag ghcr.io/luketainton/roboluke-tasks:${{ needs.release.outputs.new_tag }} \
--tag ghcr.io/luketainton/roboluke-tasks:latest
- name: Push image to GitHub Package Registry
run: |
docker push ghcr.io/luketainton/roboluke-tasks:latest
docker push ghcr.io/luketainton/roboluke-tasks:${{ needs.release.outputs.new_tag }}
deploy:
name: Update Portainer Deployment
runs-on: ubuntu-latest
needs: publish
steps:
- uses: fjogeleit/http-request-action@v1
with:
url: ${{ secrets.PORTAINER_WEBHOOK_URL }}
method: POST
timeout: 60000
preventFailureOnNoResponse: "true"

View File

@ -1,60 +0,0 @@
fail_fast: false
minimum_pre_commit_version: 3.8.0
default_install_hook_types: [pre-commit, commit-msg]
default_language_version:
python: python3.11
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
- id: end-of-file-fixer
- id: requirements-txt-fixer
- id: check-yaml
- id: check-added-large-files
- id: check-ast
- id: check-docstring-first
- id: check-json
- id: check-merge-conflict
- id: check-toml
- id: check-xml
- id: detect-private-key
- id: no-commit-to-branch
- id: requirements-txt-fixer
- id: name-tests-test
args: [--pytest-test-first]
- id: pretty-format-json
args: [--autofix]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.5.6
hooks:
- id: ruff-format # Run the formatter.
- id: ruff # Run the linter.
args: [--fix]
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
hooks:
- id: python-use-type-annotations
- repo: https://github.com/asottile/pyupgrade
rev: v3.17.0
hooks:
- id: pyupgrade
- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.4.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]

View File

@ -1,8 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from datetime import datetime
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
from datetime import datetime
def timestamp_to_date(timestamp: int) -> str: def timestamp_to_date(timestamp: int) -> str:
"""Convert timestamp to date. """Convert timestamp to date.
@ -13,6 +14,5 @@ def timestamp_to_date(timestamp: int) -> str:
Returns: Returns:
str: Date in the format YYYY-MM-DD. str: Date in the format YYYY-MM-DD.
""" """
return datetime.fromtimestamp(timestamp=timestamp, tz=ZoneInfo("UTC")).strftime( return datetime.fromtimestamp(timestamp=timestamp, tz=ZoneInfo("UTC")).strftime("%Y-%m-%d")
"%Y-%m-%d"
)

View File

@ -4,4 +4,3 @@ isort
pylint pylint
pylint-exit pylint-exit
pytest pytest
zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability

View File

@ -1,48 +1,47 @@
appdirs==1.4.4 appdirs==1.4.4
astroid==3.3.1 astroid==3.1.0
attrs==24.2.0 attrs==23.2.0
autopep8==2.3.1 autopep8==2.1.0
backoff==2.2.1 backoff==2.2.1
certifi==2024.7.4 certifi==2024.2.2
cfgv==3.4.0 cfgv==3.4.0
charset-normalizer==3.3.2 charset-normalizer==3.3.2
click==8.1.7 click==8.1.7
coloredlogs==15.0.1 coloredlogs==15.0.1
dill==0.3.8 dill==0.3.8
distlib==0.3.8 distlib==0.3.8
filelock==3.15.4 filelock==3.13.4
future==1.0.0 future==1.0.0
humanfriendly==10.0 humanfriendly==10.0
identify==2.6.0 identify==2.5.35
idna==3.7 idna==3.7
iniconfig==2.0.0 iniconfig==2.0.0
lazy-object-proxy==1.10.0 lazy-object-proxy==1.10.0
mccabe==0.7.0 mccabe==0.7.0
mypy-extensions==1.0.0 mypy-extensions==1.0.0
nodeenv==1.9.1 nodeenv==1.8.0
packaging==24.1 packaging==24.0
pathspec==0.12.1 pathspec==0.12.1
platformdirs==4.2.2 platformdirs==4.2.0
pluggy==1.5.0 pluggy==1.4.0
py==1.11.0 py==1.11.0
pycodestyle==2.12.1 pycodestyle==2.11.1
PyJWT==2.9.0 PyJWT==2.8.0
pyparsing==3.1.2 pyparsing==3.1.2
python-dateutil==2.9.0.post0 python-dateutil==2.9.0.post0
python-dotenv==1.0.1 python-dotenv==1.0.1
PyYAML==6.0.2 PyYAML==6.0.1
requests==2.32.3 requests==2.31.0
requests-toolbelt==1.0.0 requests-toolbelt==1.0.0
sentry-sdk==2.12.0 sentry-sdk==1.45.0
six==1.16.0 six==1.16.0
toml==0.10.2 toml==0.10.2
tomli==2.0.1 tomli==2.0.1
tomlkit==0.13.0 tomlkit==0.12.4
urllib3==2.2.2 urllib3==2.2.1
virtualenv==20.26.3 virtualenv==20.25.3
webex-bot==0.5.1 webex-bot==0.4.1
webexteamssdk==1.6.1 webexteamssdk==1.6.1
websockets==11.0.3 websockets==10.2
wrapt==1.16.0 wrapt==1.16.0
xmltodict==0.13.0 xmltodict==0.13.0
zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability