Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85b6618952 |
No files matched your search
@@ -1,93 +0,0 @@
|
|||||||
# Postaví binárku a pověsí ji na release.
|
|
||||||
#
|
|
||||||
# Běží v kontejneru na AlmaLinux 8, ne na runneru: binárka slinkovaná proti
|
|
||||||
# novější glibc by nešla spustit na starších systémech. Záměrně bez hotových
|
|
||||||
# akcí z marketplace — na vlastním runneru odpadá starost, jestli v kontejneru
|
|
||||||
# je node.
|
|
||||||
name: binárka
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags: ["v*"]
|
|
||||||
pull_request:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
linux:
|
|
||||||
runs-on: homelab
|
|
||||||
container: almalinux:8
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Nástroje
|
|
||||||
run: dnf install -y -q git python3.11 binutils
|
|
||||||
|
|
||||||
- name: Zdrojáky
|
|
||||||
env:
|
|
||||||
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
|
||||||
git init -q .
|
|
||||||
git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git"
|
|
||||||
git config http.extraheader "Authorization: token ${TOKEN}"
|
|
||||||
git fetch -q --depth 1 origin "${GITHUB_REF}"
|
|
||||||
git checkout -q FETCH_HEAD
|
|
||||||
git config --unset http.extraheader
|
|
||||||
|
|
||||||
- name: Prostředí
|
|
||||||
run: |
|
|
||||||
python3.11 -m venv /tmp/build
|
|
||||||
/tmp/build/bin/pip install --quiet --upgrade pip
|
|
||||||
/tmp/build/bin/pip install --quiet -r requirements.txt pyinstaller
|
|
||||||
|
|
||||||
- name: Testy
|
|
||||||
run: /tmp/build/bin/pytest -q
|
|
||||||
|
|
||||||
- name: Binárka
|
|
||||||
run: |
|
|
||||||
/tmp/build/bin/pyinstaller --clean --noconfirm \
|
|
||||||
--distpath dist --workpath /tmp/work kostky.spec
|
|
||||||
ls -lh dist/kostky
|
|
||||||
|
|
||||||
- name: Zkouška
|
|
||||||
run: |
|
|
||||||
XDG_DATA_HOME=/tmp/data DICE_PORT=8321 DICE_HOST=127.0.0.1 \
|
|
||||||
./dist/kostky > /tmp/server.log 2>&1 &
|
|
||||||
for _ in $(seq 30); do
|
|
||||||
curl -sf -o /dev/null http://127.0.0.1:8321/ && break
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
curl -sf -o /dev/null http://127.0.0.1:8321/
|
|
||||||
curl -sf -o /dev/null http://127.0.0.1:8321/static/style.css
|
|
||||||
curl -sf -o /dev/null http://127.0.0.1:8321/board
|
|
||||||
test -f /tmp/data/kostky/dice.db
|
|
||||||
cat /tmp/server.log
|
|
||||||
|
|
||||||
- name: Na release
|
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
|
||||||
env:
|
|
||||||
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
ASSET: kostky-linux-x86_64
|
|
||||||
run: |
|
|
||||||
api="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}"
|
|
||||||
auth="Authorization: token ${TOKEN}"
|
|
||||||
|
|
||||||
# Release může, ale nemusí existovat — na tag se dá kliknout ručně.
|
|
||||||
release=$(curl -s -H "$auth" "$api/releases/tags/${GITHUB_REF_NAME}")
|
|
||||||
id=$(printf '%s' "$release" | python3.11 -c \
|
|
||||||
'import json,sys; print(json.load(sys.stdin).get("id",""))' || true)
|
|
||||||
|
|
||||||
if [ -z "$id" ]; then
|
|
||||||
id=$(curl -sf -X POST -H "$auth" -H "Content-Type: application/json" \
|
|
||||||
-d "{\"tag_name\":\"${GITHUB_REF_NAME}\",\"name\":\"${GITHUB_REF_NAME}\"}" \
|
|
||||||
"$api/releases" | python3.11 -c \
|
|
||||||
'import json,sys; print(json.load(sys.stdin)["id"])')
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Aby se dal build zopakovat, stará příloha stejného jména jde pryč.
|
|
||||||
curl -s -H "$auth" "$api/releases/$id/assets" | python3.11 -c \
|
|
||||||
'import json,os,sys; [print(a["id"]) for a in json.load(sys.stdin) if a["name"] == os.environ["ASSET"]]' \
|
|
||||||
| while read -r old; do
|
|
||||||
curl -sf -X DELETE -H "$auth" "$api/releases/$id/assets/$old"
|
|
||||||
done
|
|
||||||
|
|
||||||
curl -sf -X POST -H "$auth" -F "attachment=@dist/kostky" \
|
|
||||||
"$api/releases/$id/assets?name=${ASSET}"
|
|
||||||
@@ -139,16 +139,6 @@ v `dist/kostky`.
|
|||||||
|
|
||||||
Terminálová verze součástí binárky není; ta se pouští ze zdrojáků.
|
Terminálová verze součástí binárky není; ta se pouští ze zdrojáků.
|
||||||
|
|
||||||
Releasy si tohle dělají samy. Otagovaný commit spustí
|
|
||||||
`.gitea/workflows/binarka.yml`, ta binárku postaví, projede testy, zkusí
|
|
||||||
ji nastartovat a pověsí ji na release jako `kostky-linux-x86_64`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git tag v1.0.0 && git push origin v1.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Stejná stavba běží i nad každým pull requestem, jen se nikam nevěší.
|
|
||||||
|
|
||||||
## Testy
|
## Testy
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in new issue
Block a user