diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e36cbce --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,41 @@ +name: Build +on: [push] +jobs: + tests: + runs-on: ubuntu-latest + env: + SOLC_SWITCH_GITHUB_TOKEN: ${{ secrets.SOLC_SWITCH_GITHUB_TOKEN }} + FULL_NODE_TEST_URL: ${{ secrets.FULL_NODE_TEST_URL }} + ARCHIVE_NODE_TEST_URL: ${{ secrets.ARCHIVE_NODE_TEST_URL }} + ETHERSCAN_API_KEYS: ${{ secrets.ETHERSCAN_API_KEYS }} + steps: + - name: Checkout Source + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: Checkout submodules + run: make submodules + + - name: Install solc-select + run: | + python3 -m venv solgoenv + source solgoenv/bin/activate + pip3 install solc-select + pip3 install slither-analyzer + + - name: Setup solc + run: | + source solgoenv/bin/activate + solc-select install 0.8.25 + solc-select use 0.8.25 + + - name: Run Tests + run: | + source solgoenv/bin/activate + solc-select install 0.8.25 + solc-select use 0.8.25 + make build \ No newline at end of file diff --git a/.github/workflows/gosec.yml b/.github/workflows/gosec.yml new file mode 100644 index 0000000..16a8f61 --- /dev/null +++ b/.github/workflows/gosec.yml @@ -0,0 +1,33 @@ +name: Security +on: [push] +jobs: + tests: + runs-on: ubuntu-latest + env: + SOLC_SWITCH_GITHUB_TOKEN: ${{ secrets.SOLC_SWITCH_GITHUB_TOKEN }} + FULL_NODE_TEST_URL: ${{ secrets.FULL_NODE_TEST_URL }} + ARCHIVE_NODE_TEST_URL: ${{ secrets.ARCHIVE_NODE_TEST_URL }} + ETHERSCAN_API_KEYS: ${{ secrets.ETHERSCAN_API_KEYS }} + steps: + - name: Checkout Source + uses: actions/checkout@v3 + + # Install solc-select + - name: Install solc-select + run: | + python3 -m venv solgoenv + source solgoenv/bin/activate + pip3 install solc-select + pip3 install slither-analyzer + + # Install and set a specific version of solc + - name: Setup solc + run: | + source solgoenv/bin/activate + solc-select install 0.8.19 + solc-select use 0.8.19 + + - name: Run Gosec Security Scanner + uses: securego/gosec@master + with: + args: --exclude=G302,G304,G306,G107 ./... diff --git a/.github/workflows/goveralls.yml b/.github/workflows/goveralls.yml new file mode 100644 index 0000000..5a87d5e --- /dev/null +++ b/.github/workflows/goveralls.yml @@ -0,0 +1,59 @@ +name: Coverage +on: [push] +jobs: + + test: + runs-on: ubuntu-latest + env: + SOLC_SWITCH_GITHUB_TOKEN: ${{ secrets.SOLC_SWITCH_GITHUB_TOKEN }} + FULL_NODE_TEST_URL: ${{ secrets.FULL_NODE_TEST_URL }} + ARCHIVE_NODE_TEST_URL: ${{ secrets.ARCHIVE_NODE_TEST_URL }} + ETHERSCAN_API_KEYS: ${{ secrets.ETHERSCAN_API_KEYS }} + strategy: + fail-fast: false + matrix: + go: + - '1.22' + + steps: + - uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.go }} + - uses: actions/checkout@v3 + - run: make submodules + + # Install solc-select + - name: Install solc-select + run: | + python3 -m venv solgoenv + source solgoenv/bin/activate + pip3 install solc-select + pip3 install slither-analyzer + + # Install and set a specific version of solc + - name: Setup solc + run: | + source solgoenv/bin/activate + solc-select install 0.8.19 + solc-select use 0.8.19 + + - name: Run Coverage Profile + run: | + source solgoenv/bin/activate + go test -v -coverprofile=profile.cov ./... + + - name: Send coverage + uses: shogo82148/actions-goveralls@v1.7.0 + with: + path-to-profile: profile.cov + flag-name: Go-${{ matrix.go }} + parallel: true + + # notifies that all test jobs are finished. + finish: + needs: test + runs-on: ubuntu-latest + steps: + - uses: shogo82148/actions-goveralls@v1.7.0 + with: + parallel-finished: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..44f37f3 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,41 @@ +name: Tests +on: [push] +jobs: + tests: + runs-on: ubuntu-latest + env: + SOLC_SWITCH_GITHUB_TOKEN: ${{ secrets.SOLC_SWITCH_GITHUB_TOKEN }} + FULL_NODE_TEST_URL: ${{ secrets.FULL_NODE_TEST_URL }} + ARCHIVE_NODE_TEST_URL: ${{ secrets.ARCHIVE_NODE_TEST_URL }} + ETHERSCAN_API_KEYS: ${{ secrets.ETHERSCAN_API_KEYS }} + steps: + - name: Checkout Source + uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: '1.22' + + - name: Checkout submodules + run: make submodules + + - name: Install solc-select + run: | + python3 -m venv solgoenv + source solgoenv/bin/activate + pip3 install solc-select + pip3 install slither-analyzer + + - name: Setup solc + run: | + source solgoenv/bin/activate + solc-select install 0.8.25 + solc-select use 0.8.25 + + - name: Run Tests + run: | + source solgoenv/bin/activate + solc-select install 0.8.25 + solc-select use 0.8.25 + make test \ No newline at end of file diff --git a/README.md b/README.md index 3590174..bc6729d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ +[![Tests Status](https://github.com/unpackdev/fdb/actions/workflows/test.yml/badge.svg)](https://github.com/unpackdev/fdb/actions/workflows/test.yml) +[![Build Status](https://github.com/unpackdev/fdb/actions/workflows/build.yml/badge.svg)](https://github.com/unpackdev/fdb/actions/workflows/build.yml) +[![Security Status](https://github.com/unpackdev/fdb/actions/workflows/gosec.yml/badge.svg)](https://github.com/unpackdev/fdb/actions/workflows/gosec.yml) +[![Coverage Status](https://coveralls.io/repos/github/unpackdev/fdb/badge.svg?branch=main)](https://coveralls.io/github/unpackdev/fdb?branch=main) +[![Go Report Card](https://goreportcard.com/badge/github.com/unpackdev/fdb)](https://goreportcard.com/report/github.com/unpackdev/fdb) +[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) +[![PkgGoDev](https://pkg.go.dev/badge/github.com/unpackdev/fdb)](https://pkg.go.dev/github.com/unpackdev/fdb) +[![Discord](https://img.shields.io/discord/1109929011896909875.svg)](https://discord.gg/PdHVbuTQRX) + + # (f)db **NOTE: At this moment I am adding all possible faster ways, including TCP, to be able to do proper benchmarking first.