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.
This commit is contained in:
@@ -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}"
|
||||
@@ -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), установите заголовки и библиотеку, например:
|
||||
|
||||
Reference in New Issue
Block a user