diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 78225a6..9678577 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,152 +1,28 @@ -name: Build - -on: - pull_request: - branches: - - master - types: [opened, synchronize] - paths-ignore: - - 'scripts/**' - - '**/*.md' - push: - # Build for the master branch. - branches: - - master - release: - # Publish released commit as Docker `latest` and `git_revision` images. - types: - - published - workflow_dispatch: - inputs: - ref: - description: 'Ref to build CLI for Ubuntu and Windows Server Core [default: latest master; examples: v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]' - required: false - default: '' - push_image: - description: 'Push images to DockerHub [default: false; examples: true, false]' - required: false - default: 'false' - use_latest_tag: - description: 'Use `latest` tag while pushing images to DockerHub (applied to Ubuntu image only) [default: false; examples: true, false]' - required: false - default: 'false' - -jobs: - build_cli: - name: Build CLI - runs-on: ${{matrix.os.name}} - strategy: - matrix: - os: [{ name: ubuntu-latest, bin-name: linux }, { name: windows-latest, bin-name: windows }, { name: macos-latest, bin-name: darwin }] - arch: [amd64, arm64] - exclude: - - os: { name: windows-latest, bin-name: windows } - arch: 'arm64' - - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.ref }} - # Allows to fetch all history for all branches and tags. Need this for proper versioning. - fetch-depth: 0 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' - - - name: Build CLI - run: make build - env: - GOARCH: ${{ matrix.arch }} - - - name: Rename CLI binary - run: mv ./bin/neo-go* ./bin/neo-go-${{ matrix.os.bin-name }}-${{ matrix.arch }}${{ (matrix.os.bin-name == 'windows' && '.exe') || '' }} - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: neo-go-${{ matrix.os.bin-name }}-${{ matrix.arch }} - path: ./bin/neo-go* - if-no-files-found: error - - - name: Attach binary to the release as an asset - if: ${{ github.event_name == 'release' }} - run: gh release upload ${{ github.event.release.tag_name }} ./bin/neo-go-${{ matrix.os.bin-name }}-${{ matrix.arch }}${{ (matrix.os.bin-name == 'windows' && '.exe') || '' }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - build_image: - needs: build_cli - name: Build and push docker image - runs-on: ubuntu-latest - if: ${{ github.event_name != 'pull_request' }} - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.ref }} - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to DockerHub - if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Set vars - id: setvars - run: make gh-docker-vars >> $GITHUB_OUTPUT - - - name: Set latest tag - id: setlatest - if: ${{ (github.event_name == 'release' && github.event.release.target_commitish == 'master') || (github.event_name == 'workflow_dispatch' && github.event.inputs.use_latest_tag == 'true') }} - run: echo "latest=,${{ steps.setvars.outputs.repo }}:latest" >> $GITHUB_OUTPUT - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }} - platforms: linux/amd64,linux/arm64 - build-args: | - REPO=github.com/${{ github.repository }} - VERSION=${{ steps.setvars.outputs.version }} - tags: ${{ steps.setvars.outputs.repo }}:${{ steps.setvars.outputs.version }}${{ steps.setvars.outputs.suffix }}${{ steps.setlatest.outputs.latest }} - - build_image_wsc: - needs: build_cli - name: Build and push docker image (Windows Server Core) - runs-on: windows-latest - if: ${{ github.event_name != 'pull_request' }} - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.ref }} - fetch-depth: 0 - - # For proper `deps` make target execution. - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' - - - name: Login to DockerHub - if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Build Docker image - run: make image - - - name: Push image to registry - if: ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }} - run: make image-push +name: Build + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.24' + + - name: Build + run: make build + + - name: Upload binary + uses: actions/upload-artifact@v4 + with: + name: tutus-linux-amd64 + path: ./bin/tutus diff --git a/.github/workflows/contribution_guidelines.yml b/.github/workflows/contribution_guidelines.yml deleted file mode 100644 index d75d5c0..0000000 --- a/.github/workflows/contribution_guidelines.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Contribution guidelines - -on: - pull_request: - branches: - - master - -jobs: - commits_check_job: - name: DCO check - uses: nspcc-dev/.github/.github/workflows/dco.yml@master diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index 6c135e9..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,197 +0,0 @@ -name: Tests - -on: - push: - branches: [ master ] - pull_request: - branches: - - master - types: [opened, synchronize] - paths-ignore: - - 'scripts/*.sh' - - '**/*.md' - workflow_dispatch: - -jobs: - lint: - name: 'Lint: NeoGo' - uses: nspcc-dev/.github/.github/workflows/go-linter.yml@master - - lint_examples: - name: 'Lint: examples (${{ matrix.contract }})' - uses: nspcc-dev/.github/.github/workflows/go-linter.yml@master - - strategy: - fail-fast: false - matrix: - contract: [ 'engine', 'events', 'iterator', 'nft-d', 'nft-nd', 'nft-nd-nns', 'oracle', - 'runtime', 'storage', 'timer', 'token', 'zkp/cubic_circuit', 'zkp/xor_compat'] - with: - workdir: examples/${{ matrix.contract }} - - lint_scripts: - name: 'Lint: scripts' - uses: nspcc-dev/.github/.github/workflows/go-linter.yml@master - with: - workdir: scripts - - lint_interops: - name: 'Lint: interop' - uses: nspcc-dev/.github/.github/workflows/go-linter.yml@master - with: - workdir: pkg/interop - - gomodcheck: - name: Check internal dependencies - runs-on: ubuntu-slim - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Check dependencies - run: | - ./scripts/check_deps.sh - - uses: actions/setup-go@v5 - with: - go-version-file: 'go.mod' - - name: Check go.mod is tidy - run: | - go mod tidy - if [[ $(git diff --name-only go.* | grep '' -c) != 0 ]]; then - echo "go mod tidy should be executed before the merge, following packages are unused or out of date:"; - git diff go.*; - exit 1; - fi - - codegencheck: - name: Check code generated with 'go generate' is up-to-date - runs-on: ubuntu-slim - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-go@v5 - with: - go-version-file: 'go.mod' - - - name: Install stringer - run: go install golang.org/x/tools/cmd/stringer@latest - - - name: Run go generate - run: go generate ./... - - - name: Check that autogenerated code is up-to-date - run: | - if [[ $(git diff --name-only | grep '' -c) != 0 ]]; then - echo "Fresh version of autogenerated code should be committed for the following files:"; - git diff --name-only; - exit 1; - fi - - codeql: - name: CodeQL - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - language: [ 'go' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more: - # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # âœī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - - test_cover: - name: Coverage - runs-on: ubuntu-latest - - env: - CGO_ENABLED: 0 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '1.25' - cache: true - - - name: Write coverage profile - run: DISABLE_NEOTEST_COVER=1 go test -timeout 15m -v ./... -coverprofile=./coverage.txt -covermode=atomic -coverpkg=./pkg...,./cli/... - - - name: Upload coverage results to Codecov - uses: codecov/codecov-action@v4 - with: - fail_ci_if_error: true # if something is wrong on uploading codecov results, then this job will fail - files: ./coverage.txt - slug: nspcc-dev/neo-go - token: ${{ secrets.CODECOV_TOKEN }} - verbose: true - - tests: - name: Run tests - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - go_versions: [ '1.24', '1.25' ] - exclude: - # Only latest Go version for Windows and MacOS. - - os: windows-latest - go_versions: '1.24' - - os: macos-latest - go_versions: '1.24' - # Exclude latest Go version for Ubuntu as Coverage uses it. - - os: ubuntu-latest - go_versions: '1.25' - fail-fast: false - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'true' - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '${{ matrix.go_versions }}' - - - name: Run tests - run: go test -timeout 15m -v -race ./... diff --git a/README.md b/README.md index 91ed019..17dfe35 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,8 @@ Tutus is developed by **MarketAlly** as critical infrastructure for the future o Tutus is built upon the foundation of the [Neo](https://neo.org) blockchain's Go implementation. We gratefully acknowledge the Neo community's contributions to blockchain technology. +Development assisted by [Claude Code](https://claude.ai/code) from Anthropic. + ## License Tutus is licensed under the [Apache License 2.0](LICENSE.md).