Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

ci.yaml 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. ---
  2. name: CI
  3. permissions:
  4. actions: read
  5. checks: read
  6. contents: read
  7. deployments: read
  8. issues: read
  9. discussions: read
  10. pull-requests: read
  11. repository-projects: read
  12. security-events: read
  13. statuses: read
  14. on:
  15. push:
  16. tags:
  17. - v*
  18. branches:
  19. - master
  20. - stable
  21. - v1
  22. release:
  23. types:
  24. - published
  25. - released
  26. pull_request:
  27. types:
  28. - opened
  29. - edited
  30. - reopened
  31. - synchronize
  32. - ready_for_review
  33. jobs:
  34. test:
  35. name: Test
  36. runs-on: ubuntu-latest
  37. timeout-minutes: 10
  38. strategy:
  39. matrix:
  40. go_version:
  41. - ^1.25
  42. steps:
  43. - name: Checkout
  44. uses: actions/checkout@v6
  45. with:
  46. submodules: recursive
  47. - name: Setup Go
  48. uses: actions/setup-go@v6
  49. with:
  50. go-version: ${{ matrix.go_version }}
  51. - name: Cache dependencies
  52. uses: actions/cache@v5
  53. with:
  54. path: ~/go/pkg/mod
  55. key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
  56. restore-keys: ${{ runner.os }}-go-
  57. - name: Run tests
  58. run: go test -coverprofile=./coverage.txt -covermode=atomic -v ./...
  59. - name: Collect coverage
  60. uses: codecov/codecov-action@v5
  61. with:
  62. files: ./coverage.txt
  63. fuzz:
  64. name: Fuzzing
  65. runs-on: ubuntu-latest
  66. timeout-minutes: 20
  67. steps:
  68. - name: Checkout
  69. uses: actions/checkout@v6
  70. with:
  71. submodules: recursive
  72. - name: Setup Go
  73. uses: actions/setup-go@v6
  74. with:
  75. go-version: ^1.25
  76. - name: Cache fuzz results
  77. uses: actions/cache@v5
  78. with:
  79. path: ~/.cache/go-build/fuzz
  80. key: ${{ runner.os }}-go-${{ hashFiles('**/*_fuzz_test.go', '**/*_fuzz_internal_test.go') }}
  81. restore-keys: ${{ runner.os }}-go-
  82. - name: Cache dependencies
  83. uses: actions/cache@v2
  84. with:
  85. path: ~/go/pkg/mod
  86. key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
  87. restore-keys: ${{ runner.os }}-go-
  88. - name: Run fuzzing
  89. run: make -j4 fuzz
  90. lint:
  91. name: Lint
  92. runs-on: ubuntu-latest
  93. timeout-minutes: 5
  94. steps:
  95. - name: Checkout
  96. uses: actions/checkout@v6
  97. with:
  98. submodules: recursive
  99. - name: Setup Go
  100. uses: actions/setup-go@v6
  101. with:
  102. go-version: ^1.25
  103. - name: Run linter
  104. uses: golangci/golangci-lint-action@v9.2.0
  105. docker:
  106. name: Docker
  107. runs-on: ubuntu-latest
  108. timeout-minutes: 20
  109. steps:
  110. - name: Checkout
  111. uses: actions/checkout@v6
  112. with:
  113. submodules: recursive
  114. - name: Get Docker meta
  115. id: docker_meta
  116. uses: crazy-max/ghaction-docker-meta@v1
  117. with:
  118. images: nineseconds/mtg,ghcr.io/9seconds/mtg
  119. tag-semver: "{{version}},{{major}},{{major}}.{{minor}}"
  120. - name: Setup QEMU
  121. uses: docker/setup-qemu-action@v1
  122. - name: Setup BuildX
  123. uses: docker/setup-buildx-action@v1
  124. - name: Setup cache
  125. uses: actions/cache@v5
  126. with:
  127. path: /tmp/buildx-cache
  128. key: ${{ runner.os }}-buildx-${{ github.sha }}
  129. restore-keys: |
  130. ${{ runner.os }}-buildx-
  131. #
  132. # - name: Login to DockerHub
  133. # if: github.event_name != 'pull_request'
  134. # uses: docker/login-action@v1
  135. # with:
  136. # username: ${{ secrets.DOCKERHUB_USERNAME }}
  137. # password: ${{ secrets.DOCKERHUB_PASSWORD }}
  138. #
  139. # - name: Login to GHCR.io
  140. # if: github.event_name != 'pull_request'
  141. # uses: docker/login-action@v1
  142. # with:
  143. # registry: ghcr.io
  144. # username: ${{ github.repository_owner }}
  145. # password: ${{ secrets.GH_PAT }}
  146. #
  147. # - name: Build and push
  148. # uses: docker/build-push-action@v2
  149. # with:
  150. # pull: true
  151. # context: .
  152. # platforms: linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6
  153. # push: ${{ github.event_name != 'pull_request' }}
  154. # tags: ${{ steps.docker_meta.outputs.tags }}
  155. # labels: ${{ steps.docker_meta.outputs.labels }}
  156. # cache-from: type=local,src=/tmp/buildx-cache
  157. # cache-to: type=local,dest=/tmp/buildx-cache