23 Commits

Author SHA1 Message Date
74dac7603e Fix lint and release 2025-02-27 17:32:33 +00:00
076e2464a0 Fix docker build 2025-02-27 17:27:03 +00:00
85c72462c4 Migrate to Poetry 2025-02-27 15:31:58 +00:00
41971aabdf Merge pull request #29 from nikdoof/renovate/python-3.x
Update python Docker tag to v3.12
2024-07-26 10:54:24 +01:00
befa3df48d Merge pull request #35 from nikdoof/renovate/softprops-action-gh-release-2.x
Update softprops/action-gh-release action to v2
2024-07-26 10:54:09 +01:00
d504dfb95d Merge pull request #34 from nikdoof/renovate/docker-build-push-action-6.x
Update docker/build-push-action action to v6
2024-07-26 10:53:57 +01:00
e51541c79a Merge pull request #30 from nikdoof/renovate/helm-chart-releaser-action-1.x
Update helm/chart-releaser-action action to v1.6.0
2024-07-26 10:53:36 +01:00
cd3699f185 Merge pull request #32 from nikdoof/renovate/azure-setup-helm-4.x
Update azure/setup-helm action to v4
2024-07-26 10:53:25 +01:00
7d7aa97c24 Merge pull request #31 from nikdoof/renovate/actions-setup-python-5.x
Update actions/setup-python action to v5
2024-07-26 10:53:13 +01:00
renovate[bot]
d51c6fbe73 Update softprops/action-gh-release action to v2 2024-07-26 09:53:03 +00:00
21276e1c24 Merge pull request #26 from nikdoof/renovate/docker-login-action-3.x
Update docker/login-action action to v3
2024-07-26 10:53:01 +01:00
renovate[bot]
4e15d4a8ed Update docker/build-push-action action to v6 2024-07-26 09:52:58 +00:00
b1bdcb456a Merge pull request #28 from nikdoof/renovate/docker-setup-qemu-action-3.x
Update docker/setup-qemu-action action to v3
2024-07-26 10:52:51 +01:00
f7a151235a Merge pull request #27 from nikdoof/renovate/docker-setup-buildx-action-3.x
Update docker/setup-buildx-action action to v3
2024-07-26 10:52:41 +01:00
1d8b177cb4 Merge pull request #24 from nikdoof/renovate/actions-checkout-4.x
Update actions/checkout action to v4
2024-07-26 10:52:30 +01:00
renovate[bot]
3389144484 Update azure/setup-helm action to v4 2024-03-06 23:02:35 +00:00
renovate[bot]
aa3ca58b58 Update actions/setup-python action to v5 2023-12-06 12:16:22 +00:00
renovate[bot]
2854626c27 Update helm/chart-releaser-action action to v1.6.0 2023-11-02 19:10:52 +00:00
renovate[bot]
dc0745ce76 Update actions/checkout action to v4 2023-10-19 11:25:47 +00:00
renovate[bot]
19f8183ddc Update python Docker tag to v3.12 2023-10-03 04:28:27 +00:00
renovate[bot]
f51928cb4b Update docker/setup-qemu-action action to v3 2023-09-12 14:01:27 +00:00
renovate[bot]
80be469a90 Update docker/setup-buildx-action action to v3 2023-09-12 14:01:22 +00:00
renovate[bot]
076216e089 Update docker/login-action action to v3 2023-09-12 10:13:06 +00:00
14 changed files with 1583 additions and 82 deletions

View File

@@ -12,11 +12,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v3
- name: Login to GHCR - name: Login to GHCR
uses: docker/login-action@v2 uses: docker/login-action@v3
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
with: with:
registry: ghcr.io registry: ghcr.io
@@ -24,7 +24,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push - name: Build and push
id: docker_build id: docker_build
uses: docker/build-push-action@v4 uses: docker/build-push-action@v6
with: with:
push: true push: true
tags: | tags: |

View File

@@ -1,6 +1,6 @@
name: Lint name: Lint
'on': "on":
push: push:
branches: branches:
- main - main
@@ -9,13 +9,22 @@ name: Lint
- main - main
jobs: jobs:
run-linters: lint:
name: Run linters
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9"]
steps: steps:
- name: Check out Git repository - uses: actions/checkout@v4
uses: actions/checkout@v3 - name: Setup Python
uses: actions/setup-python@v5
- name: wemake-python-styleguide with:
uses: wemake-services/wemake-python-styleguide@0.17.0 python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
- name: Lint with ruff
run: |
make lint

View File

@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
@@ -21,12 +21,12 @@ jobs:
git config user.name "$GITHUB_ACTOR" git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com" git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Install Helm - name: Install Helm
uses: azure/setup-helm@v3 uses: azure/setup-helm@v4
with: with:
version: v3.6.3 version: v3.6.3
- name: Run chart-releaser - name: Run chart-releaser
uses: helm/chart-releaser-action@v1.5.0 uses: helm/chart-releaser-action@v1.6.0
env: env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_RELEASE_NAME_TEMPLATE: "smsbot-helm-chart-{{ .Version }}" CR_RELEASE_NAME_TEMPLATE: "smsbot-helm-chart-{{ .Version }}"

View File

@@ -1,4 +1,3 @@
---
name: Release name: Release
on: on:
push: push:
@@ -10,20 +9,23 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- uses: actions/setup-python@v4 - name: Setup Python
uses: actions/setup-python@v5
- name: Install Poetry
uses: snok/install-poetry@v1
with: with:
python-version: '3.10' virtualenvs-create: true
- run: pip install -r requirements-dev.txt virtualenvs-in-project: true
- name: Build Assets - name: Build Release
run: python setup.py sdist bdist_wheel run: poetry build
- name: Release - name: Release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v2
with: with:
name: "Version ${{ github.ref_name }}" name: "Version ${{ github.ref_name }}"
generate_release_notes: true
files: | files: |
dist/* dist/*

View File

@@ -1,5 +1,34 @@
FROM python:3.11-alpine FROM python:3.9-alpine AS base
WORKDIR /app
FROM base AS builder
ENV PYTHONFAULTHANDLER=1 \
PYTHONUNBUFFERED=1 \
PYTHONHASHSEED=random \
PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \
POETRY_NO_INTERACTION=1 \
POETRY_VIRTUALENVS_CREATE=false \
PATH="$PATH:/runtime/bin" \
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.9/site-packages" \
# Versions:
POETRY_VERSION=2.1.1
# System deps:
RUN apk add build-base unzip wget python3-dev libffi-dev rust cargo openssl-dev
RUN pip install "poetry==$POETRY_VERSION" "poetry-plugin-export"
WORKDIR /src
# Generate requirements and install *all* dependencies.
COPY pyproject.toml poetry.lock /src/
RUN poetry export --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
FROM base AS runtime
COPY --from=builder /runtime /usr/local
COPY . /app COPY . /app
RUN pip install . WORKDIR /app
ENTRYPOINT smsbot EXPOSE 8000/tcp
CMD ["/usr/local/bin/smsbot"]

7
Makefile Normal file
View File

@@ -0,0 +1,7 @@
.venv:
python3 -m pip install poetry
python3 -m poetry install --with github
lint: .venv
python3 -m poetry run ruff check --output-format=github --select=E9,F63,F7,F82 --target-version=py37 .
python3 -m poetry run ruff check --output-format=github --target-version=py37 .

1466
poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

36
pyproject.toml Normal file
View File

@@ -0,0 +1,36 @@
[project]
name = "smsbot"
version = "0.0.5"
description = "A simple Telegram bot to receive SMS messages."
authors = [
{name = "Andrew Williams",email = "andy@tensixtyone.com"}
]
license = {text = "MIT"}
readme = "README.md"
requires-python = ">=3.9,<3.10"
dependencies = [
"flask (>=3.1.0,<4.0.0)",
"waitress (>=3.0.2,<4.0.0)",
"twilio (>=9.4.6,<10.0.0)",
"python-telegram-bot (<20)",
"prometheus-client (>=0.21.1,<0.22.0)"
]
[tool.poetry.scripts]
smsbot = "smsbot.cli:main"
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry.group.dev.dependencies]
pytest = "^8.0.0"
ruff = "^0.9.0"
pytest-mock = "^3.12.0"
pytest-flask = "^1.3.0"
[tool.poetry.group.github]
optional = true
[tool.poetry.group.github.dependencies]
pytest-github-actions-annotate-failures = "^0.3.0"

View File

@@ -1 +0,0 @@
wheel

View File

@@ -1,5 +0,0 @@
flask
waitress
twilio
python-telegram-bot
prometheus_client

View File

@@ -1,36 +0,0 @@
[metadata]
name = smsbot
version = 0.0.4
description = A simple Telegram bot to receive SMS messages.
long_description = file: README.md, LICENSE
license = MIT
license_file = LICENSE
classifiers =
Framework :: Flask
License :: OSI Approved :: MIT License
Programming Language :: Python :: 3
Programming Language :: Python :: 3.11
[options]
zip_safe = False
include_package_data = True
packages = smsbot
install_requires =
flask
waitress
twilio
python-telegram-bot<=14
prometheus_client
[options.entry_points]
console_scripts =
smsbot = smsbot.cli:main
[flake8]
format = wemake
ignore = D,E501,WPS432,WPS323,WPS2,S104,WPS412,WPS100
max-line-length = 120
exclude = setup.py,env,build
[darglint]
docstring_style=sphinx

View File

@@ -1,3 +0,0 @@
from setuptools import setup
setup()

View File

@@ -2,12 +2,9 @@ import argparse
import logging import logging
import os import os
import pkg_resources
from smsbot.telegram import TelegramSmsBot from smsbot.telegram import TelegramSmsBot
from smsbot.webhook_handler import TwilioWebhookHandler from smsbot.webhook_handler import TwilioWebhookHandler
from smsbot.utils import get_smsbot_version
pkg_version = pkg_resources.require('smsbot')[0].version
def main(): def main():
@@ -21,7 +18,7 @@ def main():
args = parser.parse_args() args = parser.parse_args()
logging.basicConfig(level=logging.getLevelName(args.log_level)) logging.basicConfig(level=logging.getLevelName(args.log_level))
logging.info('smsbot v%s', pkg_version) logging.info('smsbot v%s', get_smsbot_version())
logging.debug('Arguments: %s', args) logging.debug('Arguments: %s', args)
# Start bot # Start bot

View File

@@ -1,5 +1,5 @@
import pkg_resources from importlib.metadata import version
def get_smsbot_version(): def get_smsbot_version():
return pkg_resources.require('smsbot')[0].version return version("smsbot")