name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest # Собираем в официальном образе Go: версия компилятора фиксирована и # совпадает с релизной сборкой. container: golang:1.24 steps: # Код забираем сами, а не через actions/checkout: это JS-действие, ему # нужен Node внутри контейнера, которого в образе golang нет. Заодно # сборка перестаёт зависеть от доступности github.com. - name: Забрать код env: TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | set -eu git config --global --add safe.directory "$PWD" git init -q . git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git -c http.extraheader="Authorization: token ${TOKEN}" \ fetch --depth 1 origin "${GITHUB_SHA}" git checkout -q FETCH_HEAD - name: Проверить форматирование run: | unformatted="$(gofmt -l cmd internal web)" if [ -n "$unformatted" ]; then echo "Не отформатировано (запустите gofmt -w):" echo "$unformatted" exit 1 fi - name: go vet run: go vet ./... - name: Тесты run: go test ./... - name: Проверить сборку под Linux run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /dev/null ./cmd/pzmanager - name: Проверить синтаксис скриптов установки run: bash -n deploy/install.sh && bash -n deploy/get.sh