Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
samricotta committed Jan 9, 2024
1 parent c857374 commit 4b87887
Show file tree
Hide file tree
Showing 84 changed files with 15,666 additions and 119 deletions.
16 changes: 16 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
# Maintain dependencies for Go
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"

# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
3 changes: 3 additions & 0 deletions .github/workflows/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# CODEOWNERS: <https://help.github.com/articles/about-codeowners/>

* @cosmosregistry/core
33 changes: 33 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build Tutorial
on: ["push"]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64]
targetos: [darwin, linux]
include:
- targetos: darwin
arch: arm64
name: Tutorial ${{ matrix.arch }} for ${{ matrix.targetos }}
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
go-version: "1.21"
check-latest: true
env:
GOOS: ${{ matrix.targetos }}
GOARCH: ${{ matrix.arch }}

- name: Compile Tutorial
run: |
go mod download
cd cmd/Tutoriald
go build .
- uses: actions/upload-artifact@v3
with:
name: Tutoriald ${{ matrix.targetos }} ${{ matrix.arch }}
path: cmd/Tutoriald/Tutoriald
21 changes: 21 additions & 0 deletions .github/workflows/go-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Integration tests
on:
push:
branches:
- main
pull_request:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.21"
check-latest: true
- name: Tests
run: |
cd integration
go test -v ./... -count=1
20 changes: 20 additions & 0 deletions .github/workflows/go-unit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Unit tests
on:
push:
branches:
- main
pull_request:
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.21"
check-latest: true
- name: Tests
run: |
make test
19 changes: 19 additions & 0 deletions .github/workflows/lint-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Lint PR
on:
pull_request_target:
types:
- opened
- edited
- synchronize
permissions:
contents: read
jobs:
lint:
permissions:
pull-requests: read
statuses: write
runs-on: ubuntu-latest
steps:
- uses: amannn/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34 changes: 34 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Lint
on:
push:
branches:
- main
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
- "**/go.mod"
- "**/go.sum"
pull_request:
paths:
- "**/*.go"
- "go.mod"
- "go.sum"
- "**/go.mod"
- "**/go.sum"
merge_group:
permissions:
contents: read
jobs:
golangci:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: "1.21"
check-latest: true
- name: run linting
run: |
make lint
189 changes: 165 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,34 +1,175 @@
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
#!/usr/bin/make -f

VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//')
COMMIT := $(shell git log -1 --format='%H')
DOCKER := $(shell which docker)
BUILDDIR ?= $(CURDIR)/build
LEDGER_ENABLED ?= true

# ********** Golang configs **********

export GO111MODULE = on

GO_MAJOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
GO_MINOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)

# don't override user values
ifeq (,$(VERSION))
VERSION := $(shell git describe --exact-match 2>/dev/null)
# if VERSION is empty, then populate it with branch's name and raw commit hash
ifeq (,$(VERSION))
VERSION := $(BRANCH)-$(COMMIT)
# ********** process build tags **********

build_tags = netgo
ifeq ($(LEDGER_ENABLED),true)
ifeq ($(OS),Windows_NT)
GCCEXE = $(shell where gcc.exe 2> NUL)
ifeq ($(GCCEXE),)
$(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false)
else
build_tags += ledger
endif
else
UNAME_S = $(shell uname -s)
ifeq ($(UNAME_S),OpenBSD)
$(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988))
else
GCC = $(shell command -v gcc 2> /dev/null)
ifeq ($(GCC),)
$(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false)
else
build_tags += ledger
endif
endif
endif
endif

# Update the ldflags with the app, client & server names
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=tutorial \
-X github.com/cosmos/cosmos-sdk/version.AppName=tutoriald \
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT)
ifeq (cleveldb,$(findstring cleveldb,$(TUTORA_BUILD_OPTIONS)))
build_tags += gcc cleveldb
else ifeq (rocksdb,$(findstring rocksdb,$(TUTORA_BUILD_OPTIONS)))
build_tags += gcc rocksdb
endif
build_tags += $(BUILD_TAGS)
build_tags := $(strip $(build_tags))

whitespace :=
whitespace := $(whitespace) $(whitespace)
comma := ,
build_tags_comma_sep := $(subst $(whitespace),$(comma),$(build_tags))

# ********** process linker flags **********

ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=cosmapp \
-X github.com/cosmos/cosmos-sdk/version.AppName=tutoriald \
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)"

ifeq (cleveldb,$(findstring cleveldb,$(TUTORA_BUILD_OPTIONS)))
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=cleveldb
else ifeq (rocksdb,$(findstring rocksdb,$(TUTORA_BUILD_OPTIONS)))
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=rocksdb
endif
ifeq (,$(findstring nostrip,$(TUTORA_BUILD_OPTIONS)))
ldflags += -w -s
endif
ifeq ($(LINK_STATICALLY),true)
ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static"
endif
ldflags += $(LDFLAGS)
ldflags := $(strip $(ldflags))

BUILD_FLAGS := -tags '$(build_tags)' -ldflags '$(ldflags)'
# check for nostrip option
ifeq (,$(findstring nostrip,$(TUTORA_BUILD_OPTIONS)))
BUILD_FLAGS += -trimpath
endif

all: lint test install


###############################################################################
### Build ###
###############################################################################

install: enforce-go-version
@echo "Installing tutoriald..."
go install -mod=readonly $(BUILD_FLAGS) ./cmd/tutoriald

build: enforce-go-version
@echo "Building tutoriald..."
go build $(BUILD_FLAGS) -o $(BUILDDIR)/ ./cmd/tutoriald

enforce-go-version:
@echo "Go version: $(GO_MAJOR_VERSION).$(GO_MINOR_VERSION)"
ifneq ($(GO_MINOR_VERSION),21)
@echo "Go version 1.20 is required"
@exit 1
endif

clean:
rm -rf $(CURDIR)/artifacts/

distclean: clean
rm -rf vendor/


###############################################################################
### Linting ###
###############################################################################
golangci_lint_cmd=golangci-lint
golangci_version=v1.52.2

lint:
@echo "--> Running linter"
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(golangci_version)
@$(golangci_lint_cmd) run --timeout=10m

lint-fix:
@echo "--> Running linter"
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(golangci_version)
@$(golangci_lint_cmd) run --fix --out-format=tab --issues-exit-code=0

BUILD_FLAGS := -ldflags '$(ldflags)'
format:
@go install mvdan.cc/gofumpt@latest
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@$(golangci_version)
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -path "./tests/mocks/*" -not -name "*.pb.go" -not -name "*.pb.gw.go" -not -name "*.pulsar.go" -not -path "./crypto/keys/secp256k1/*" | xargs gofumpt -w -l
$(golangci_lint_cmd) run --fix
.PHONY: format

###########
# Install #
###########
###############################################################################
### Localnet ###
###############################################################################

all: install
start-localnet: build
rm -rf ~/.tutoriald
./build/tutoriald init liveness --chain-id cosmos-1 --default-denom uatom
./build/tutoriald config set client chain-id cosmos-1
./build/tutoriald config set client keyring-backend test
./build/tutoriald keys add val1
./build/tutoriald keys add alice
./build/tutoriald keys add bob
./build/tutoriald genesis add-genesis-account val1 10000000000000000000000000uatom
./build/tutoriald genesis add-genesis-account alice 1000000000000000000uatom
./build/tutoriald genesis add-genesis-account bob 1000000000000000000uatom
./build/tutoriald genesis gentx val1 1000000000uatom --chain-id cosmos-
./build/tutoriald genesis collect-gentxs
sed -i.bak'' 's/minimum-gas-prices = ""/minimum-gas-prices = "0.025uatom"/' ~/.tutoriald/config/app.toml
./build/tutoriald start
###############################################################################
### Tests & Simulation ###
###############################################################################
PACKAGES_UNIT=$(shell go list ./... | grep -v -e '/tests/e2e')
PACKAGES_E2E=$(shell cd tests/e2e && go list ./... | grep '/e2e')
TEST_PACKAGES=./...
TEST_TARGETS := test-unit test-e2e

install:
@echo "--> ensure dependencies have not been modified"
@go mod verify
@echo "--> installing tutoriald"
@go install $(BUILD_FLAGS) -mod=readonly ./cmd/tutoriald
test-unit: ARGS=-timeout=5m -tags='norace'
test-unit: TEST_PACKAGES=$(PACKAGES_UNIT)
test-e2e: ARGS=-timeout=25m -v
test-e2e: TEST_PACKAGES=$(PACKAGES_E2E)
$(TEST_TARGETS): run-tests

init:
./scripts/init.sh
run-tests:
ifneq (,$(shell which tparse 2>/dev/null))
@echo "--> Running tests"
@go test -mod=readonly -json $(ARGS) $(TEST_PACKAGES) | tparse
else
@echo "--> Running tests"
@go test -mod=readonly $(ARGS) $(TEST_PACKAGES)
endif
28 changes: 0 additions & 28 deletions README.md

This file was deleted.

Loading

0 comments on commit 4b87887

Please sign in to comment.