Dependency upgrade check #28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Dependency upgrade check | |
| on: | |
| schedule: | |
| - cron: '0 6 * * *' # daily at 06:00 UTC | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| upgrade: | |
| name: Upgrade and test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: actions/setup-go@v6.3.0 | |
| with: | |
| go-version: stable # always latest released Go | |
| check-latest: true | |
| - name: Upgrade all dependencies | |
| id: upgrade | |
| run: | | |
| go get -u -t ./... | |
| go mod tidy | |
| if git diff --quiet go.mod go.sum; then | |
| echo "changed=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "changed=true" >> "$GITHUB_OUTPUT" | |
| echo "=== go.mod diff ===" | |
| git diff go.mod | |
| fi | |
| - name: Check go version drift | |
| id: godrift | |
| run: | | |
| mod_go=$(grep '^go ' go.mod | awk '{print $2}') | |
| runtime_go=$(go env GOVERSION | sed 's/go//') | |
| if [ "$mod_go" != "$runtime_go" ]; then | |
| echo "go.mod go=$mod_go but runtime=$runtime_go" | |
| echo "drifted=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "drifted=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Run tests (if deps changed or go version drifted) | |
| if: steps.upgrade.outputs.changed == 'true' || steps.godrift.outputs.drifted == 'true' | |
| run: go test ./... -count=1 -race | |
| - name: Check for newer golangci-lint | |
| id: lintdrift | |
| run: | | |
| pinned=$(grep 'GOLANGCI_LINT_VERSION:' .github/workflows/ci.yml | awk '{print $2}') | |
| latest=$(curl -fsSL https://api.github.com/repos/golangci/golangci-lint/releases/latest | jq -r '.tag_name') | |
| echo "pinned=$pinned latest=$latest" | |
| echo "latest=$latest" >> "$GITHUB_OUTPUT" | |
| if [ "$pinned" != "$latest" ]; then | |
| echo "drifted=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "drifted=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Run golangci-lint (new version or on dep/go changes) | |
| if: steps.lintdrift.outputs.drifted == 'true' || steps.upgrade.outputs.changed == 'true' || steps.godrift.outputs.drifted == 'true' | |
| uses: golangci/golangci-lint-action@v9.2.0 | |
| with: | |
| version: ${{ steps.lintdrift.outputs.latest }} |