diff --git a/.github/mergify.yml b/.github/mergify.yml new file mode 100644 index 0000000..321eeca --- /dev/null +++ b/.github/mergify.yml @@ -0,0 +1,20 @@ +queue_rules: + - name: default + conditions: + - "#approved-reviews-by>=1" + - base=main + - label=automerge + +pull_request_rules: + - name: automerge to main with label automerge and branch protection passing + conditions: + - "#approved-reviews-by>=1" + - base=main + - label=automerge + actions: + queue: + name: default + method: merge + commit_message_template: | + {{ title }} (#{{ number }}) + {{ body }} diff --git a/.github/workflows/golangci.yml b/.github/workflows/golangci.yml new file mode 100644 index 0000000..0130ee9 --- /dev/null +++ b/.github/workflows/golangci.yml @@ -0,0 +1,26 @@ +name: golangci-lint +on: + push: + tags: + - v* + branches: + - main + pull_request: +permissions: + contents: read + # Optional: allow read access to pull request. Use with `only-new-issues` option. + # pull-requests: read +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v5 + with: + go-version: '1.22.2' + - uses: actions/checkout@v4 + - name: golangci-lint + uses: golangci/golangci-lint-action@v3.7.0 + with: + version: v1.54.2 + args: --timeout 10m diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..972b6ea --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,60 @@ +name: Tests / Code Coverage +# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report +# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed +on: + pull_request: + push: + branches: + - main + +jobs: + + split-test-files: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Create a file with all the pkgs + run: go list ./... | grep -v e2e > pkgs.txt + - name: Split pkgs into 2 files + run: split -d -n l/2 pkgs.txt pkgs.txt.part. + # cache multiple + - uses: actions/upload-artifact@v4 + with: + name: '${{ github.sha }}-00' + path: ./pkgs.txt.part.00 + - uses: actions/upload-artifact@v4 + with: + name: '${{ github.sha }}-01' + path: ./pkgs.txt.part.01 + + tests: + runs-on: ubuntu-latest + needs: split-test-files + strategy: + fail-fast: false + matrix: + part: ['00', '01'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: '1.22.2' + - uses: technote-space/get-diff-action@v6.1.2 + with: + PATTERNS: | + **/**.go + go.mod + go.sum + - uses: actions/download-artifact@v4 + with: + name: '${{ github.sha }}-${{ matrix.part }}' + if: env.GIT_DIFF + - name: test & coverage report creation + run: | + cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='ledger test_ledger_mock' + if: env.GIT_DIFF + - uses: actions/upload-artifact@v4 + with: + name: '${{ github.sha }}-${{ matrix.part }}-coverage' + path: ./${{ matrix.part }}profile.out + \ No newline at end of file