Compare commits

..

1 Commits

Author SHA1 Message Date
9830c5cc3a Release 2024-04-21.1 (#185)
* chore(pip-prod)(deps): bump pyparsing from 3.1.1 to 3.1.2

Bumps [pyparsing](https://github.com/pyparsing/pyparsing) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/pyparsing/pyparsing/releases)
- [Changelog](https://github.com/pyparsing/pyparsing/blob/master/CHANGES)
- [Commits](https://github.com/pyparsing/pyparsing/compare/3.1.1...pyparsing_3.1.2)

---
updated-dependencies:
- dependency-name: pyparsing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump packaging from 23.2 to 24.0

Bumps [packaging](https://github.com/pypa/packaging) from 23.2 to 24.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/23.2...24.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(actions)(deps): bump mathieudutour/github-tag-action

Bumps [mathieudutour/github-tag-action](https://github.com/mathieudutour/github-tag-action) from 6.1 to 6.2.
- [Release notes](https://github.com/mathieudutour/github-tag-action/releases)
- [Commits](https://github.com/mathieudutour/github-tag-action/compare/v6.1...v6.2)

---
updated-dependencies:
- dependency-name: mathieudutour/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump autopep8 from 2.0.4 to 2.1.0

Bumps [autopep8](https://github.com/hhatto/autopep8) from 2.0.4 to 2.1.0.
- [Release notes](https://github.com/hhatto/autopep8/releases)
- [Commits](https://github.com/hhatto/autopep8/compare/v2.0.4...v2.1.0)

---
updated-dependencies:
- dependency-name: autopep8
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump filelock from 3.13.1 to 3.13.2

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.13.1 to 3.13.2.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.13.1...3.13.2)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump filelock from 3.13.2 to 3.13.3

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.13.2 to 3.13.3.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.13.2...3.13.3)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump filelock from 3.13.3 to 3.13.4

Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.13.3 to 3.13.4.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.13.3...3.13.4)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump idna from 3.6 to 3.7

Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(pip-prod)(deps): bump virtualenv from 20.25.1 to 20.25.3

Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.25.1 to 20.25.3.
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/virtualenv/compare/20.25.1...20.25.3)

---
updated-dependencies:
- dependency-name: virtualenv
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Add APM (#184)

* Add APM
* Fix unit tests
* Remove apm.py
* Add SonarCloud recommendations
* SonarCloud python:S6890

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-21 16:22:47 +01:00
13 changed files with 85 additions and 201 deletions

View File

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

View File

@ -5,7 +5,7 @@
":semanticCommitTypeAll(fix)"
],
"baseBranches": [
"main"
"next"
],
"platformCommit": true,
"dependencyDashboardAutoclose": true,

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"
jobs:
ci:
uses: luketainton/gha-workflows/.github/workflows/ci-python-with-docker.yml@main
pythonci:
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:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

View File

@ -1,36 +0,0 @@
name: Create Release
on:
workflow_dispatch:
schedule:
- cron: "0 9 * * *"
jobs:
create_release:
name: Create 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
create_docker:
name: Create Docker Image
needs: create_release
uses: luketainton/roboluke-tasks/.github/workflows/docker_publish.yml@main
with:
release: ${{ needs.create_release.outputs.new_tag }}

View File

@ -1,61 +0,0 @@
name: Publish Docker Image
on:
workflow_call:
inputs:
release:
required: true
type: string
jobs:
publish:
name: Publish Docker image
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
ref: ${{ inputs.release }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: |
ghcr.io/${{ github.repository }}
tags: |
type=semver,pattern=v{{version}},value=${{ inputs.release }}
- name: Build and push Docker image
id: push
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
with:
context: .
push: true
# provenance: mode=max
labels: ${{ steps.meta.outputs.labels }}
tags: |
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ inputs.release }}
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ghcr.io/${{ github.repository }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

52
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Build
on:
push:
branches: [main]
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 }}
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 --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

@ -15,7 +15,4 @@ RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT ["python3", "-B", "-m", "app.main"]
ARG version="dev"
ENV APP_VERSION=$version
COPY app /run/app

View File

@ -15,7 +15,6 @@ if config.sentry_enabled:
dsn=config.sentry_dsn,
enable_tracing=True,
environment=config.environment,
release=config.version,
integrations=[StdlibIntegration()],
spotlight=True
)

View File

@ -8,7 +8,6 @@ class Config:
def __init__(self) -> None:
"""Configuration module."""
self.__environment: str = os.environ.get("APP_LIFECYCLE", "DEV").upper()
self.__version: str = os.environ["APP_VERSION"]
self.__bot_name: str = os.environ["BOT_NAME"]
self.__webex_token: str = os.environ["WEBEX_API_KEY"]
self.__admin_first_name: str = os.environ["ADMIN_FIRST_NAME"]
@ -25,11 +24,6 @@ class Config:
"""Returns the current app lifecycle."""
return self.__environment
@property
def version(self) -> str:
"""Returns the current app version."""
return self.__version
@property
def sentry_enabled(self) -> bool:
"""Returns True if Sentry SDK is enabled, else False."""

View File

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

View File

@ -6,7 +6,6 @@ import os
vars: dict = {
"APP_VERSION": "dev",
"BOT_NAME": "TestBot",
"WEBEX_API_KEY": "testing",
"ADMIN_FIRST_NAME": "Test",