From 067e378b0690d955293a93eef741d4b004dbc2c3 Mon Sep 17 00:00:00 2001 From: Shahzad Lone Date: Mon, 10 Jun 2024 12:18:05 -0400 Subject: [PATCH] ci(i): Add action to ensure tidyness (#2697) ## Relevant issue(s) Resolves ##2695 ## Description ### Backstory - A commit (c42e7ee6) broke mod tidy command recently - Which was fixed in the next commit in this PR: https://github.com/sourcenetwork/defradb/pull/2548 - Some head scratching was done to find out that mod tidy needed a minimum version, hence the current pinned mod tidy There are 2 things being checked within the new added action: 1) That the backstory doesn't happen again (`make tidy` isn't broken). 2) `make tidy` is ran and up to date. NOTE: `(2)` above I am not sure if we want to keep, or not I would be okay with just `(1)`. However here are some reasons why you would want `(2)`: - always be in `tidy state` - one less command to do at release stage. ## How has this been tested? - Action that failed when `make tidy` was broken: https://github.com/sourcenetwork/defradb/actions/runs/9422665720/job/25959440810?pr=2697 - Action that failed when `make tidy` was not up to date (i.e. not tidy): https://github.com/sourcenetwork/defradb/actions/runs/9422726089/job/25959622978?pr=2697 Specify the platform(s) on which this was tested: - WSL2 --- .github/workflows/check-tidy.yml | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/workflows/check-tidy.yml diff --git a/.github/workflows/check-tidy.yml b/.github/workflows/check-tidy.yml new file mode 100644 index 0000000000..979052cb5b --- /dev/null +++ b/.github/workflows/check-tidy.yml @@ -0,0 +1,59 @@ +# Copyright 2024 Democratized Data Foundation +# +# Use of this software is governed by the Business Source License +# included in the file licenses/BSL.txt. +# +# As of the Change Date specified in that file, in accordance with +# the Business Source License, use of this software will be governed +# by the Apache License, Version 2.0, included in the file +# licenses/APL.txt. + +# This workflow checks that go mod tidy command we have set for the specific +# go version is not broken, for example `go mod tidy -go=1.21.3`. This +# can cause some head scratching at times, so better catch this in the PR. +# +# Inaddition to that also checks that we are currently in a `tidy` state. +name: Check Tidy Workflow + +on: + pull_request: + branches: + - master + - develop + + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + branches: + - master + - develop + +jobs: + check-tidy: + name: Check mod tidy job + + runs-on: ubuntu-latest + + steps: + + - name: Checkout code into the directory + uses: actions/checkout@v3 + + - name: Setup Go environment explicitly + uses: actions/setup-go@v3 + with: + go-version: "1.21" + check-latest: true + + # This checks mod tidy is not broken. + - name: Check mod tidy + run: make tidy + + # This checks mod tidy is up to date. + - name: Check no new changes exist + uses: tj-actions/verify-changed-files@v20 + with: + fail-if-changed: true + files: | + go.mod + go.sum