mirror of
https://github.com/hex-ci/smzdm_script.git
synced 2026-11-03 22:23:54 +08:00
Support docker
This commit is contained in:
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
__pycache__/
|
||||||
|
.github/
|
||||||
|
.venv/
|
||||||
|
.vscode/
|
||||||
|
config/config.toml
|
||||||
|
config/cookies.json
|
||||||
|
.env
|
||||||
|
.dockerignore
|
||||||
|
.gitignore
|
||||||
|
Dockerfile
|
||||||
73
.github/workflows/docker-builder.yml
vendored
Normal file
73
.github/workflows/docker-builder.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
name: Docker image release
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
buildx-dockerhub:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Lower case
|
||||||
|
id: string
|
||||||
|
uses: ASzc/change-string-case-action@v2
|
||||||
|
with:
|
||||||
|
string: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/386
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.string.outputs.lowercase }}:latest
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||||
|
|
||||||
|
- name: Sync README.md
|
||||||
|
uses: ms-jpq/sync-dockerhub-readme@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
repository: ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}
|
||||||
|
readme: "./README.md"
|
||||||
|
|
||||||
|
- name: Move cache
|
||||||
|
run: |
|
||||||
|
rm -rf /tmp/.buildx-cache
|
||||||
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||||
21
.github/workflows/run-by-docker.yml
vendored
Normal file
21
.github/workflows/run-by-docker.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
name: "SMZDM Check-in Bot by Docker"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# Uncomment below to schedule your job
|
||||||
|
# schedule:
|
||||||
|
# - cron: "0 18 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
container-test-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: enwaiax/smzdm_bot
|
||||||
|
env:
|
||||||
|
SMZDM_COOKIE: ${{ secrets.SMZDM_COOKIE }}
|
||||||
|
PUSH_PLUS_TOKEN: ${{ secrets.PUSH_PLUS_TOKEN }}
|
||||||
|
SC_KEY: ${{ secrets.SC_KEY }}
|
||||||
|
TG_BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
|
||||||
|
TG_USER_ID: ${{ secrets.TG_USER_ID }}
|
||||||
|
|
||||||
3
.github/workflows/run.yml
vendored
3
.github/workflows/run.yml
vendored
@@ -32,4 +32,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
SMZDM_COOKIE: ${{ secrets.SMZDM_COOKIE }}
|
SMZDM_COOKIE: ${{ secrets.SMZDM_COOKIE }}
|
||||||
PUSH_PLUS_TOKEN: ${{ secrets.PUSH_PLUS_TOKEN }}
|
PUSH_PLUS_TOKEN: ${{ secrets.PUSH_PLUS_TOKEN }}
|
||||||
|
SC_KEY: ${{ secrets.SC_KEY }}
|
||||||
|
TG_BOT_TOKEN: ${{ secrets.TG_BOT_TOKEN }}
|
||||||
|
TG_USER_ID: ${{ secrets.TG_USER_ID }}
|
||||||
run: python main.py
|
run: python main.py
|
||||||
|
|||||||
18
Dockerfile
Normal file
18
Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
FROM python:alpine as builder
|
||||||
|
|
||||||
|
RUN apk update && apk add --no-cache tzdata alpine-sdk libffi-dev ca-certificates
|
||||||
|
ADD requirements.txt /tmp/
|
||||||
|
RUN pip3 install --user -r /tmp/requirements.txt && rm /tmp/requirements.txt
|
||||||
|
|
||||||
|
|
||||||
|
FROM python:alpine
|
||||||
|
WORKDIR /smzdm_bot
|
||||||
|
ENV TZ=Asia/Shanghai
|
||||||
|
|
||||||
|
RUN apk update && apk add --no-cache ffmpeg vnstat
|
||||||
|
COPY --from=builder /root/.local /usr/local
|
||||||
|
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
||||||
|
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
|
||||||
|
COPY . /smzdm_bot
|
||||||
|
|
||||||
|
CMD ["python", "main.py"]
|
||||||
13
main.py
13
main.py
@@ -77,6 +77,9 @@ def main():
|
|||||||
if Path.exists(Path(CONFIG_PATH, "config.toml")):
|
if Path.exists(Path(CONFIG_PATH, "config.toml")):
|
||||||
pprint("Get configration from config.toml")
|
pprint("Get configration from config.toml")
|
||||||
conf_kwargs = TomlHelper(Path(CONFIG_PATH, "config.toml")).read()
|
conf_kwargs = TomlHelper(Path(CONFIG_PATH, "config.toml")).read()
|
||||||
|
SMZDM_COOKIE = conf_kwargs.get(
|
||||||
|
"SMZDM_COOKIE").encode('UTF-8').decode('latin-1')
|
||||||
|
smzdm_bot.set_cookies(SMZDM_COOKIE)
|
||||||
elif os.environ.get("SMZDM_COOKIE", None):
|
elif os.environ.get("SMZDM_COOKIE", None):
|
||||||
pprint("Get configration from env")
|
pprint("Get configration from env")
|
||||||
conf_kwargs = {
|
conf_kwargs = {
|
||||||
@@ -86,6 +89,9 @@ def main():
|
|||||||
"TG_BOT_TOKEN": os.environ.get("TG_BOT_TOKEN", None),
|
"TG_BOT_TOKEN": os.environ.get("TG_BOT_TOKEN", None),
|
||||||
"TG_USER_ID": os.environ.get("TG_USER_ID", None),
|
"TG_USER_ID": os.environ.get("TG_USER_ID", None),
|
||||||
}
|
}
|
||||||
|
SMZDM_COOKIE = conf_kwargs.get(
|
||||||
|
"SMZDM_COOKIE").encode('UTF-8').decode('latin-1')
|
||||||
|
smzdm_bot.set_cookies(SMZDM_COOKIE)
|
||||||
elif Path.exists(Path(CONFIG_PATH, "cookies.json")):
|
elif Path.exists(Path(CONFIG_PATH, "cookies.json")):
|
||||||
pprint("Load cookis from cookies.json")
|
pprint("Load cookis from cookies.json")
|
||||||
with open(Path(CONFIG_PATH, "cookies.json", "r")) as f:
|
with open(Path(CONFIG_PATH, "cookies.json", "r")) as f:
|
||||||
@@ -94,10 +100,9 @@ def main():
|
|||||||
for cookie in cookies:
|
for cookie in cookies:
|
||||||
smzdm_cookies.update({cookie["name"]: cookie["value"]})
|
smzdm_cookies.update({cookie["name"]: cookie["value"]})
|
||||||
smzdm_bot.update_cookies(smzdm_cookies)
|
smzdm_bot.update_cookies(smzdm_cookies)
|
||||||
if conf_kwargs.get("SMZDM_COOKIE", None):
|
else:
|
||||||
SMZDM_COOKIE = conf_kwargs.get(
|
pprint("Fail to get SMZDM_COOKIE, exit")
|
||||||
"SMZDM_COOKIE").encode('UTF-8').decode('latin-1')
|
sys.exit(1)
|
||||||
smzdm_bot.set_cookies(SMZDM_COOKIE)
|
|
||||||
msg = smzdm_bot.checkin()
|
msg = smzdm_bot.checkin()
|
||||||
NotifyBot(content=msg, **conf_kwargs)
|
NotifyBot(content=msg, **conf_kwargs)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user