Update README.md to include CI build instructions for tdlib_ping. Document the Gitea workflow for tagging and artifact retrieval, enhancing clarity for users on obtaining the binary and setting up the environment.
Publish mtproxy_checker Docker image / test (push) Successful in 6s
Publish mtproxy_checker Docker image / build-and-push (push) Successful in 51s

This commit is contained in:
Denozordec
2026-04-11 16:23:28 +07:00
parent 388784eb5e
commit fc84c06e82
2 changed files with 109 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
# Сборка нативного tdlib_ping (CGO + libtdjson) под linux/amd64.
# - При push тега refs/tags/v* — артефакт job + вложение в релиз Gitea (создаётся при отсутствии).
# - workflow_dispatch — только артефакт прогона (без привязки к релизу).
name: Build tdlib_ping (linux/amd64)
on:
push:
tags:
- "v*"
workflow_dispatch:
permissions:
contents: write
env:
GO_VERSION: "1.22"
ASSET_NAME: tdlib_ping-linux-amd64
jobs:
build-tdlib-ping:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Install libtdjson
run: |
sudo apt-get update
sudo apt-get install -y libtdjson-dev jq
- name: Build tdlib_ping
env:
CGO_ENABLED: "1"
run: |
set -euo pipefail
go build -tags=tdlib -trimpath -ldflags="-s -w" -o "${ASSET_NAME}" ./cmd/tdlib_ping
chmod +x "${ASSET_NAME}"
file "${ASSET_NAME}"
ldd "${ASSET_NAME}" || true
- name: Upload workflow artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ASSET_NAME }}-${{ gitea.sha }}
path: ${{ env.ASSET_NAME }}
retention-days: 90
- name: Create release if needed and upload asset
if: ${{ startsWith(gitea.ref, 'refs/tags/') }}
env:
TOKEN: ${{ github.token }}
run: |
set -euo pipefail
SERVER="${{ gitea.server_url }}"
SERVER="${SERVER%/}"
REPO_FULL="${{ gitea.repository }}"
OWNER="${REPO_FULL%%/*}"
REPO="${REPO_FULL#*/}"
TAG="${{ gitea.ref_name }}"
ASSET_PATH="${{ env.ASSET_NAME }}"
ASSET_NAME="${{ env.ASSET_NAME }}"
api() {
curl -fsS -H "Authorization: token ${TOKEN}" -H "Accept: application/json" "$@"
}
code="$(api -o /tmp/rel.json -w "%{http_code}" \
"${SERVER}/api/v1/repos/${OWNER}/${REPO}/releases/tags/${TAG}")"
if [ "${code}" = "404" ]; then
api -X POST "${SERVER}/api/v1/repos/${OWNER}/${REPO}/releases" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG}\",\"draft\":false}" \
-o /tmp/rel.json
elif [ "${code}" != "200" ]; then
echo "unexpected HTTP ${code} from release-by-tag"
cat /tmp/rel.json || true
exit 1
fi
release_id="$(jq -r '.id' /tmp/rel.json)"
if [ "${release_id}" = "null" ] || [ -z "${release_id}" ]; then
echo "missing release id in response:"
cat /tmp/rel.json
exit 1
fi
curl -fsS -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Accept: application/json" \
-F "attachment=@${ASSET_PATH};type=application/octet-stream" \
"${SERVER}/api/v1/repos/${OWNER}/${REPO}/releases/${release_id}/assets?name=${ASSET_NAME}"
+9
View File
@@ -6,6 +6,15 @@
`{"ok":true,"error":"","exit_code":0}`
## Сборка в CI (Gitea)
В репозитории есть workflow **`.gitea/workflows/tdlib_ping.yaml`**:
- при push тега вида **`v*`** собирается **`tdlib_ping-linux-amd64`** и прикрепляется к **релизу** с этим тегом (релиз создаётся автоматически, если его ещё нет);
- у каждого прогона файл также лежит в **артефактах** job (удобно для `workflow_dispatch` с ветки).
Скачайте бинарник со страницы релиза или из вкладки Actions → нужный run → Artifacts. На сервере положите в каталог вроде `/usr/local/bin`, выставьте `chmod +x`, задайте `MTPROXY_TDLIB_HELPER`.
## Сборка
Linux (Debian/Ubuntu), установите заголовки и библиотеку, например: