commit
a1e168f345
29
.gitea/workflows/check-build.yml
Normal file
29
.gitea/workflows/check-build.yml
Normal file
@ -0,0 +1,29 @@
|
||||
Name: Commit Checks
|
||||
run-name: ${{ gitea.actor }}
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
- "!main"
|
||||
|
||||
jobs:
|
||||
Plan:
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
#
|
||||
- name: List Contents
|
||||
id: ls
|
||||
run: ls -al
|
||||
|
||||
|
||||
- name: Deploy
|
||||
run: |
|
||||
echo "${{ secrets.GITEASECRET_TOKEN }}" | docker login git.hamik.net -u paradizelost --password-stdin
|
||||
docker build -t git.hamik.net/paradizelost/speedtest:dev .
|
||||
docker push git.hamik.net/paradizelost/speedtest:dev
|
41
.gitea/workflows/push-build.yml
Normal file
41
.gitea/workflows/push-build.yml
Normal file
@ -0,0 +1,41 @@
|
||||
Name: Container Build Push
|
||||
run-name: ${{ gitea.actor }}
|
||||
on:
|
||||
pull_request:
|
||||
types: [closed]
|
||||
|
||||
jobs:
|
||||
Plan:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: List Contents
|
||||
id: ls
|
||||
run: ls -al
|
||||
|
||||
- name: Deploy
|
||||
run: |
|
||||
echo "${{ secrets.GITEASECRET_TOKEN }}" | docker login git.hamik.net -u paradizelost --password-stdin
|
||||
docker build -t git.hamik.net/paradizelost/speedtest:latest .
|
||||
docker push git.hamik.net/paradizelost/speedtest:latest
|
||||
Deploy:
|
||||
needs: [Plan]
|
||||
runs-on: speedtest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: /docker/speedtest
|
||||
steps:
|
||||
- name: Destroy Container
|
||||
id: down
|
||||
run: docker compose down
|
||||
|
||||
- name: Pull Updates
|
||||
id: pull
|
||||
run: docker compose pull
|
||||
|
||||
- name: Start Containers
|
||||
id: start
|
||||
run: docker compose up -d
|
12
Dockerfile
Normal file
12
Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM debian:bullseye-slim
|
||||
#
|
||||
COPY ookla_speedtest_cli.list /etc/apt/sources.list.d/
|
||||
RUN apt update && apt install python3 python3-pip iputils-ping speedtest -y
|
||||
COPY logspeedtest.py /usr/local/bin/
|
||||
COPY requirements.txt /
|
||||
COPY init.sh /
|
||||
RUN chmod +x /init.sh
|
||||
RUN chmod +x /usr/local/bin/logspeedtest.py
|
||||
RUN pip3 install -r /requirements.txt
|
||||
RUN apt clean
|
||||
CMD ["/init.sh"]
|
9
docker-compose.yml
Normal file
9
docker-compose.yml
Normal file
@ -0,0 +1,9 @@
|
||||
services:
|
||||
speedtest:
|
||||
image: git.hamik.net/paradizelost/speedtest:latest
|
||||
container_name: speedtest
|
||||
restart: always
|
||||
environment:
|
||||
- INFLUX_USER=${INFLUX_USER}
|
||||
- INFLUX_PASSWORD=${INFLUX_PASSWORD}
|
||||
- INFLUX_URI=${INFLUX_URI}
|
35
logspeedtest.py
Normal file
35
logspeedtest.py
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/python3
|
||||
import os
|
||||
import subprocess as sp
|
||||
import requests
|
||||
import time
|
||||
import json
|
||||
def addinfluxrecord(downspeed,upspeed,pktloss,jitter,latencyavg,minlatency,maxlatency):
|
||||
data = f"Down value={downspeed}\nUp value={upspeed}\nPacketLoss value={pktloss}\nJitter value={jitter}\nLatencyAvg value={latencyavg}\nLatencyLow value={minlatency}\nLatencyHigh value={maxlatency}"
|
||||
print(data)
|
||||
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
|
||||
response = requests.post(
|
||||
influxuri,
|
||||
data=data,
|
||||
headers=headers,
|
||||
auth=(infdbuser,infdbpass)
|
||||
)
|
||||
return response
|
||||
|
||||
infdbuser = os.environ["INFLUX_USER"]
|
||||
infdbpass = os.environ["INFLUX_PASSWORD"]
|
||||
influxuri = os.environ["INFLUX_URI"]
|
||||
while(True):
|
||||
response = sp.getstatusoutput(f"speedtest --format=json")[1]
|
||||
respjson = json.loads(response.split("\n")[1])
|
||||
print(response)
|
||||
downspeed = respjson['download']['bandwidth'] * 8 / 1024 / 1024
|
||||
upspeed = respjson['upload']['bandwidth'] * 8 / 1024 / 1024
|
||||
pktloss = respjson['packetLoss']
|
||||
jitter = respjson['ping']['jitter']
|
||||
latencyavg=respjson['ping']['latency']
|
||||
minlatency=respjson['ping']['low']
|
||||
maxlatency=respjson['ping']['high']
|
||||
result = addinfluxrecord(downspeed,upspeed,pktloss,jitter,latencyavg,minlatency,maxlatency)
|
||||
print(result)
|
||||
time.sleep(300)
|
5
ookla_speedtest_cli.list
Normal file
5
ookla_speedtest_cli.list
Normal file
@ -0,0 +1,5 @@
|
||||
# this file was generated by packagecloud.io for
|
||||
# the repository at https://packagecloud.io/ookla/speedtest-cli
|
||||
|
||||
deb [signed-by=/etc/apt/keyrings/ookla_speedtest-cli-archive-keyring.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ bookworm main
|
||||
deb-src [signed-by=/etc/apt/keyrings/ookla_speedtest-cli-archive-keyring.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ bookworm main
|
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@ -0,0 +1,5 @@
|
||||
boto==2.49.0
|
||||
boto3==1.26.27
|
||||
botocore==1.29.27
|
||||
requests==2.28.1
|
||||
tabulate==0.8.9
|
Loading…
x
Reference in New Issue
Block a user