@ -1,17 +1,19 @@ | |||
name: Check Markdown links | |||
# TODO: Re-enable when https://github.com/gaurav-nelson/github-action-markdown-link-check/pull/126 lands. | |||
on: | |||
push: | |||
branches: | |||
- master | |||
pull_request: | |||
branches: [master] | |||
jobs: | |||
markdown-link-check: | |||
runs-on: ubuntu-latest | |||
steps: | |||
- uses: actions/checkout@v3 | |||
- uses: gaurav-nelson/github-action-markdown-link-check@1.0.13 | |||
with: | |||
check-modified-files-only: 'yes' | |||
#name: Check Markdown links | |||
# | |||
#on: | |||
# push: | |||
# branches: | |||
# - master | |||
# pull_request: | |||
# branches: [master] | |||
# | |||
#jobs: | |||
# markdown-link-check: | |||
# runs-on: ubuntu-latest | |||
# steps: | |||
# - uses: actions/checkout@v3 | |||
# - uses: gaurav-nelson/github-action-markdown-link-check@v1.0.13 | |||
# with: | |||
# check-modified-files-only: 'yes' |
@ -1,24 +0,0 @@ | |||
name: Proto Check | |||
# Protobuf runs buf (https://buf.build/) lint and check-breakage | |||
# This workflow is only run when a file in the proto directory | |||
# has been modified. | |||
on: | |||
workflow_dispatch: # allow running workflow manually | |||
pull_request: | |||
paths: | |||
- "proto/*" | |||
jobs: | |||
proto-lint: | |||
runs-on: ubuntu-latest | |||
timeout-minutes: 4 | |||
steps: | |||
- uses: actions/checkout@v3 | |||
- name: lint | |||
run: make proto-lint | |||
proto-breakage: | |||
runs-on: ubuntu-latest | |||
timeout-minutes: 4 | |||
steps: | |||
- uses: actions/checkout@v3 | |||
- name: check-breakage | |||
run: make proto-check-breaking-ci |
@ -1,64 +0,0 @@ | |||
# This workflow (re)builds and pushes a Docker image containing the | |||
# protobuf build tools used by the other workflows. | |||
# | |||
# When making changes that require updates to the builder image, you | |||
# should merge the updates first and wait for this workflow to complete, | |||
# so that the changes will be available for the dependent workflows. | |||
# | |||
name: Build & Push Proto Builder Image | |||
on: | |||
pull_request: | |||
paths: | |||
- "proto/*" | |||
push: | |||
branches: | |||
- master | |||
paths: | |||
- "proto/*" | |||
schedule: | |||
# run this job once a month to recieve any go or buf updates | |||
- cron: "0 9 1 * *" | |||
env: | |||
REGISTRY: ghcr.io | |||
IMAGE_NAME: tendermint/docker-build-proto | |||
jobs: | |||
build: | |||
runs-on: ubuntu-latest | |||
steps: | |||
- uses: actions/checkout@v3 | |||
- name: Check out and assign tags | |||
id: prep | |||
run: | | |||
DOCKER_IMAGE="${REGISTRY}/${IMAGE_NAME}" | |||
VERSION=noop | |||
if [[ "$GITHUB_REF" == "refs/tags/*" ]]; then | |||
VERSION="${GITHUB_REF#refs/tags/}" | |||
elif [[ "$GITHUB_REF" == "refs/heads/*" ]]; then | |||
VERSION="$(echo "${GITHUB_REF#refs/heads/}" | sed -r 's#/+#-#g')" | |||
if [[ "${{ github.event.repository.default_branch }}" = "$VERSION" ]]; then | |||
VERSION=latest | |||
fi | |||
fi | |||
TAGS="${DOCKER_IMAGE}:${VERSION}" | |||
echo ::set-output name=tags::"${TAGS}" | |||
- name: Set up docker buildx | |||
uses: docker/setup-buildx-action@v1.6.0 | |||
- name: Log in to the container registry | |||
uses: docker/login-action@v1.14.1 | |||
with: | |||
registry: ${{ env.REGISTRY }} | |||
username: ${{ github.actor }} | |||
password: ${{ secrets.GITHUB_TOKEN }} | |||
- name: Build and publish image | |||
uses: docker/build-push-action@v2.9.0 | |||
with: | |||
context: ./proto | |||
file: ./proto/Dockerfile | |||
push: ${{ github.event_name != 'pull_request' }} | |||
tags: ${{ steps.prep.outputs.tags }} |
@ -0,0 +1,21 @@ | |||
name: Protobuf Lint | |||
on: | |||
pull_request: | |||
paths: | |||
- 'proto/**' | |||
push: | |||
branches: | |||
- master | |||
paths: | |||
- 'proto/**' | |||
jobs: | |||
lint: | |||
runs-on: ubuntu-latest | |||
timeout-minutes: 5 | |||
steps: | |||
- uses: actions/checkout@v3 | |||
- uses: bufbuild/buf-setup-action@v1.1.0 | |||
- uses: bufbuild/buf-lint-action@v1 | |||
with: | |||
input: 'proto' |
@ -1,14 +1,9 @@ | |||
# The version of the generation template (required). | |||
# The only currently-valid value is v1beta1. | |||
version: v1beta1 | |||
# The plugins to run. | |||
version: v1 | |||
plugins: | |||
# The name of the plugin. | |||
- name: gogofaster | |||
# The directory where the generated proto output will be written. | |||
# The directory is relative to where the generation tool was run. | |||
out: proto | |||
# Set options to assign import paths to the well-known types | |||
# and to enable service generation. | |||
opt: Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration,plugins=grpc,paths=source_relative | |||
out: ./proto/ | |||
opt: | |||
- Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types | |||
- Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration | |||
- plugins=grpc | |||
- paths=source_relative |
@ -0,0 +1,3 @@ | |||
version: v1 | |||
directories: | |||
- proto |
@ -1,20 +0,0 @@ | |||
# This Dockerfile defines an image containing tools for linting, formatting, | |||
# and compiling the Tendermint protos. | |||
FROM golang:1.17-alpine | |||
# Install a commonly used set of programs for use with our protos. | |||
# clang-extra-tools is included here because it provides clang-format, | |||
# used to format the .proto files. | |||
RUN apk add --no-cache build-base clang-extra-tools curl git | |||
ENV GOLANG_PROTOBUF_VERSION=1.3.1 \ | |||
GOGO_PROTOBUF_VERSION=1.3.2 | |||
# Retrieve the go protoc programs and copy them into the PATH | |||
RUN go install github.com/golang/protobuf/protoc-gen-go@v${GOLANG_PROTOBUF_VERSION} && \ | |||
go install github.com/gogo/protobuf/protoc-gen-gogo@v${GOGO_PROTOBUF_VERSION} && \ | |||
go install github.com/gogo/protobuf/protoc-gen-gogofaster@v${GOGO_PROTOBUF_VERSION} && \ | |||
mv "$(go env GOPATH)"/bin/* /usr/local/bin/ | |||
# Copy the 'buf' program out of the buildbuf/buf container. | |||
COPY --from=bufbuild/buf:latest /usr/local/bin/* /usr/local/bin/ |
@ -0,0 +1,7 @@ | |||
# Generated by buf. DO NOT EDIT. | |||
version: v1 | |||
deps: | |||
- remote: buf.build | |||
owner: gogo | |||
repository: protobuf | |||
commit: 4df00b267f944190a229ce3695781e99 |
@ -1,6 +1,8 @@ | |||
syntax = "proto3"; | |||
package tendermint.libs.bits; | |||
option go_package = "github.com/tendermint/tendermint/proto/tendermint/libs/bits"; | |||
message BitArray { | |||
int64 bits = 1; | |||
repeated uint64 elems = 2; | |||
@ -1,44 +0,0 @@ | |||
#!/usr/bin/env bash | |||
set -euo pipefail | |||
# By default, this script runs against the latest commit to the master branch | |||
# in the Tendermint spec repository. To use this script with a different version | |||
# of the spec repository, run it with the $VERS environment variable set to the | |||
# desired branch name or commit hash from the spec repo. | |||
: ${VERS:=master} | |||
echo "fetching proto files" | |||
# Get shortened ref of commit | |||
REF=$(curl -H "Accept: application/vnd.github.v3.sha" -qL \ | |||
"https://api.github.com/repos/tendermint/spec/commits/${VERS}" \ | |||
| cut -c -7) | |||
readonly OUTDIR="tendermint-spec-${REF}" | |||
curl -qL "https://api.github.com/repos/tendermint/spec/tarball/${REF}" | tar -xzf - ${OUTDIR}/ | |||
cp -r ${OUTDIR}/proto/tendermint/* ./proto/tendermint | |||
cp -r ${OUTDIR}/third_party/** ./third_party | |||
MODNAME="$(go list -m)" | |||
find ./proto/tendermint -name '*.proto' -not -path "./proto/tendermint/abci/types.proto" \ | |||
-exec sh ./scripts/protopackage.sh {} "$MODNAME" ';' | |||
# For historical compatibility, the abci file needs to get a slightly different import name | |||
# so that it can be moved into the ./abci/types directory. | |||
sh ./scripts/protopackage.sh ./proto/tendermint/abci/types.proto $MODNAME "abci/types" | |||
buf generate --path proto/tendermint --template ./${OUTDIR}/buf.gen.yaml --config ./${OUTDIR}/buf.yaml | |||
mv ./proto/tendermint/abci/types.pb.go ./abci/types | |||
echo "proto files have been compiled" | |||
echo "removing copied files" | |||
find ${OUTDIR}/proto/tendermint/ -name *.proto \ | |||
| sed "s/$OUTDIR\/\(.*\)/\1/g" \ | |||
| xargs -I {} rm {} | |||
rm -rf ${OUTDIR} |
@ -1,147 +0,0 @@ | |||
// Protocol Buffers for Go with Gadgets | |||
// | |||
// Copied from https://github.com/gogo/protobuf/blob/master/gogoproto/gogo.proto | |||
// | |||
// Copyright (c) 2013, The GoGo Authors. All rights reserved. | |||
// http://github.com/gogo/protobuf | |||
// | |||
// Redistribution and use in source and binary forms, with or without | |||
// modification, are permitted provided that the following conditions are | |||
// met: | |||
// | |||
// * Redistributions of source code must retain the above copyright | |||
// notice, this list of conditions and the following disclaimer. | |||
// * Redistributions in binary form must reproduce the above | |||
// copyright notice, this list of conditions and the following disclaimer | |||
// in the documentation and/or other materials provided with the | |||
// distribution. | |||
// | |||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
syntax = "proto2"; | |||
package gogoproto; | |||
import "google/protobuf/descriptor.proto"; | |||
option java_package = "com.google.protobuf"; | |||
option java_outer_classname = "GoGoProtos"; | |||
option go_package = "github.com/gogo/protobuf/gogoproto"; | |||
extend google.protobuf.EnumOptions { | |||
optional bool goproto_enum_prefix = 62001; | |||
optional bool goproto_enum_stringer = 62021; | |||
optional bool enum_stringer = 62022; | |||
optional string enum_customname = 62023; | |||
optional bool enumdecl = 62024; | |||
} | |||
extend google.protobuf.EnumValueOptions { | |||
optional string enumvalue_customname = 66001; | |||
} | |||
extend google.protobuf.FileOptions { | |||
optional bool goproto_getters_all = 63001; | |||
optional bool goproto_enum_prefix_all = 63002; | |||
optional bool goproto_stringer_all = 63003; | |||
optional bool verbose_equal_all = 63004; | |||
optional bool face_all = 63005; | |||
optional bool gostring_all = 63006; | |||
optional bool populate_all = 63007; | |||
optional bool stringer_all = 63008; | |||
optional bool onlyone_all = 63009; | |||
optional bool equal_all = 63013; | |||
optional bool description_all = 63014; | |||
optional bool testgen_all = 63015; | |||
optional bool benchgen_all = 63016; | |||
optional bool marshaler_all = 63017; | |||
optional bool unmarshaler_all = 63018; | |||
optional bool stable_marshaler_all = 63019; | |||
optional bool sizer_all = 63020; | |||
optional bool goproto_enum_stringer_all = 63021; | |||
optional bool enum_stringer_all = 63022; | |||
optional bool unsafe_marshaler_all = 63023; | |||
optional bool unsafe_unmarshaler_all = 63024; | |||
optional bool goproto_extensions_map_all = 63025; | |||
optional bool goproto_unrecognized_all = 63026; | |||
optional bool gogoproto_import = 63027; | |||
optional bool protosizer_all = 63028; | |||
optional bool compare_all = 63029; | |||
optional bool typedecl_all = 63030; | |||
optional bool enumdecl_all = 63031; | |||
optional bool goproto_registration = 63032; | |||
optional bool messagename_all = 63033; | |||
optional bool goproto_sizecache_all = 63034; | |||
optional bool goproto_unkeyed_all = 63035; | |||
} | |||
extend google.protobuf.MessageOptions { | |||
optional bool goproto_getters = 64001; | |||
optional bool goproto_stringer = 64003; | |||
optional bool verbose_equal = 64004; | |||
optional bool face = 64005; | |||
optional bool gostring = 64006; | |||
optional bool populate = 64007; | |||
optional bool stringer = 67008; | |||
optional bool onlyone = 64009; | |||
optional bool equal = 64013; | |||
optional bool description = 64014; | |||
optional bool testgen = 64015; | |||
optional bool benchgen = 64016; | |||
optional bool marshaler = 64017; | |||
optional bool unmarshaler = 64018; | |||
optional bool stable_marshaler = 64019; | |||
optional bool sizer = 64020; | |||
optional bool unsafe_marshaler = 64023; | |||
optional bool unsafe_unmarshaler = 64024; | |||
optional bool goproto_extensions_map = 64025; | |||
optional bool goproto_unrecognized = 64026; | |||
optional bool protosizer = 64028; | |||
optional bool compare = 64029; | |||
optional bool typedecl = 64030; | |||
optional bool messagename = 64033; | |||
optional bool goproto_sizecache = 64034; | |||
optional bool goproto_unkeyed = 64035; | |||
} | |||
extend google.protobuf.FieldOptions { | |||
optional bool nullable = 65001; | |||
optional bool embed = 65002; | |||
optional string customtype = 65003; | |||
optional string customname = 65004; | |||
optional string jsontag = 65005; | |||
optional string moretags = 65006; | |||
optional string casttype = 65007; | |||
optional string castkey = 65008; | |||
optional string castvalue = 65009; | |||
optional bool stdtime = 65010; | |||
optional bool stdduration = 65011; | |||
optional bool wktpointer = 65012; | |||
optional string castrepeated = 65013; | |||
} |