mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-15 02:00:09 +00:00
test
This commit is contained in:
parent
e424c241e3
commit
ac7356ba4a
4 changed files with 110 additions and 4 deletions
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
|
|
@ -25,7 +25,17 @@ jobs:
|
||||||
needs: ["build-ci-container"]
|
needs: ["build-ci-container"]
|
||||||
container:
|
container:
|
||||||
image: ghcr.io/pluralkit/ci:${{ github.sha }}
|
image: ghcr.io/pluralkit/ci:${{ github.sha }}
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
env:
|
env:
|
||||||
|
DOCKER_HOST: unix:///var/run/docker.sock
|
||||||
|
|
||||||
|
COMMIT_STATUS_TOKEN: ${{ secrets.COMMIT_STATUS_TOKEN }}
|
||||||
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
DISPATCH_DATA: ${{ inputs.dispatchData }}
|
DISPATCH_DATA: ${{ inputs.dispatchData }}
|
||||||
|
|
||||||
|
# these only work on the push/pull_request jobs
|
||||||
|
CUR_SHA: ${{ github.sha }}
|
||||||
|
OLD_SHA: ${{ github.event.before }}
|
||||||
steps:
|
steps:
|
||||||
- run: /run_ci.py
|
- run: /run_ci.py
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
RUN apk add python3
|
RUN apk add python3 docker git
|
||||||
COPY ci/run_ci.py /run_ci.py
|
COPY ci/run_ci.py /run_ci.py
|
||||||
|
|
|
||||||
26
ci/run.sh
Normal file
26
ci/run.sh
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
notify_discord() {
|
||||||
|
todo
|
||||||
|
}
|
||||||
|
|
||||||
|
# CI_PREV_COMMIT
|
||||||
|
# GH_BRANCH
|
||||||
|
|
||||||
|
files_changed=$(git diff --name-only $CI_PREV_COMMIT)
|
||||||
|
|
||||||
|
if [ ! -z "$(echo $files_changed | grep -E '.cs$')" ]; then
|
||||||
|
dotnet_format
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "$(echo $files_changed | grep -E '.rs$')" ]; then
|
||||||
|
rustfmt
|
||||||
|
fi
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
if PluralKit.Bot changed build bot
|
||||||
|
if PluralKit.Core changed build bot api
|
||||||
|
idk this should just be python
|
||||||
76
ci/run_ci.py
76
ci/run_ci.py
|
|
@ -1,6 +1,76 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import os
|
|
||||||
|
|
||||||
print("hello from python!")
|
import os, json, subprocess
|
||||||
print(f"data: {os.environ.get("DISPATCH_DATA")}")
|
|
||||||
|
dispatch_data = os.environ.get("DISPATCH_DATA")
|
||||||
|
|
||||||
|
def must_get_env(name):
|
||||||
|
val = os.environ.get(name)
|
||||||
|
if val == "":
|
||||||
|
raise "meow"
|
||||||
|
return val
|
||||||
|
|
||||||
|
def docker_build(data):
|
||||||
|
# file="", tags=[], root="/"
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_jobs():
|
||||||
|
modify_regexes = {
|
||||||
|
"^ci/": "all",
|
||||||
|
|
||||||
|
"^docs/": "bin_docs",
|
||||||
|
"^dashboard/": "bin_dashboard",
|
||||||
|
|
||||||
|
"\.rs$": "format_rs",
|
||||||
|
"\.cs$": "format_cs",
|
||||||
|
|
||||||
|
"^Cargo.lock": "all_rs",
|
||||||
|
|
||||||
|
"^services/api": "bin_api",
|
||||||
|
# dispatch doesn't use libpk
|
||||||
|
"^services/dispatch": "bin_dispatch",
|
||||||
|
"^services/scheduled_tasks": "bin_scheduled_tasks",
|
||||||
|
|
||||||
|
# one image for all dotnet
|
||||||
|
"^PluralKit\.": "bin_dotnet",
|
||||||
|
"^Myriad": "bin_dotnet",
|
||||||
|
}
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
"all": ["bin_dotnet", "bin_api", "bin_dispatch", "bin_scheduled_tasks", "bin_dashboard"],
|
||||||
|
"all_rs": ["bin_api", "bin_dispatch"],
|
||||||
|
}
|
||||||
|
|
||||||
|
now = must_get_env("CUR_SHA")
|
||||||
|
before = must_get_env("OLD_SHA")
|
||||||
|
changed_files = subprocess.check_output(["git", "diff", "--name-only", before, now])
|
||||||
|
|
||||||
|
jobs = set([])
|
||||||
|
for key in modify_regexes.keys():
|
||||||
|
if regex matches:
|
||||||
|
jobs = jobs | modify_regexes[key]
|
||||||
|
|
||||||
|
for key in changes:
|
||||||
|
if aliases.get(key) is not None:
|
||||||
|
jobs = jobs | aliases[key]
|
||||||
|
jobs = jobs - [key]
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("hello from python!")
|
||||||
|
subprocess.run(["docker", "run", "--rm", "-it", "hello-world"], check=True)
|
||||||
|
|
||||||
|
return
|
||||||
|
return create_jobs() if dispatch_data == ""
|
||||||
|
|
||||||
|
data = json.loads(dispatch_data)
|
||||||
|
match data.get("action"):
|
||||||
|
case "docker_build":
|
||||||
|
return docker_build(data.get("data"))
|
||||||
|
case "rustfmt":
|
||||||
|
case "dotnet_format":
|
||||||
|
case _:
|
||||||
|
print (f"data unknown: {dispatch_data}")
|
||||||
|
os.exit(1)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue