Updated github workflows
parent
f9a084323d
commit
52a051450d
|
@ -0,0 +1,66 @@
|
|||
env:
|
||||
GO_VERSION: 1.19
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "15 6 * * 1" # 6:15 UTC weekly on Monday
|
||||
|
||||
jobs:
|
||||
dep_update:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Update minor and patch-level dependencies
|
||||
run: go get -t -u ./...
|
||||
|
||||
- name: Tidy
|
||||
run: go mod tidy
|
||||
|
||||
- name: Create pull request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
title: "Update package dependencies + tidy"
|
||||
body: |
|
||||
This is a change initiated automatically on a weekly basis by a
|
||||
GitHub Action that updates the projects dependencies to their latest
|
||||
minor and patch-level versions. This lets us stay up to date
|
||||
incrementally so that updates are less effort to get merged compared
|
||||
to large monolithic updates, and gets us security updates more
|
||||
expediently.
|
||||
|
||||
If the build passes, you are probably A-OK to merge and deploy this.
|
||||
If not, try to dig into what's not working and see if you can fix it
|
||||
so that the dep train stays on its rails.
|
||||
|
||||
Note that although minor/patch level changes are handled
|
||||
automatically, notably major version changes like you'd find in
|
||||
stripe-go are not and those upgrades need to be performed manually.
|
||||
That should theoretically not be a problem if fixes are backported
|
||||
to all previous majors, but in practice they are often not, so it's
|
||||
worthwhile to occasionally look for new majors and integrate them.
|
||||
branch: "dep-update"
|
||||
commit-message: |
|
||||
Update package dependencies + tidy
|
||||
|
||||
Weekly update to the project's package dependencies initiated by an
|
||||
automatic GitHub Action running on cron. Keeps upgrades less of a
|
||||
monolithic task and lets security-related patches trickle in more
|
||||
quickly.
|
||||
author: "Bot <bot@iandavis.com>"
|
||||
committer: "Bot <bot@iandavis.com>"
|
||||
delete-branch: true
|
||||
draft: true
|
||||
reviewers: |
|
||||
iand
|
||||
assignees: |
|
||||
iand
|
|
@ -0,0 +1,48 @@
|
|||
env:
|
||||
GO_VERSION: 1.19
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
types: [opened, reopened,ready_for_review,synchronize]
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
name: Check
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
- name: Get StaticCheck
|
||||
run: go install honnef.co/go/tools/cmd/staticcheck@7586196b2bb05a248f1934d8087c759d05910e60 # Version 2022.1.2 (v0.3.2)
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Gomod
|
||||
run: |
|
||||
go mod tidy
|
||||
if [[ -n $(git ls-files --other --exclude-standard --directory -- go.sum) ]]; then
|
||||
echo "go.sum was added by go mod tidy"
|
||||
exit 1
|
||||
fi
|
||||
git diff --exit-code -- go.sum go.mod
|
||||
- name: Gofmt
|
||||
if: ${{ success() || failure() }} # run this step even if the previous one failed
|
||||
run: |
|
||||
out=$(gofmt -s -l .)
|
||||
if [[ -n "$out" ]]; then
|
||||
echo $out | awk '{print "::error file=" $0 ",line=0,col=0::File is not gofmt-ed."}'
|
||||
exit 1
|
||||
fi
|
||||
- name: Vet
|
||||
if: ${{ success() || failure() }} # run this step even if the previous one failed
|
||||
run: go vet ./...
|
||||
- name: StaticCheck
|
||||
if: ${{ success() || failure() }} # run this step even if the previous one failed
|
||||
run: staticcheck ./...
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
types: [opened, reopened,ready_for_review,synchronize]
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
name: Test
|
||||
jobs:
|
||||
test:
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.17.x, 1.18.x, 1.19.x]
|
||||
os: [ "ubuntu", "windows", "macos" ]
|
||||
runs-on: ${{ matrix.os }}-latest
|
||||
steps:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
- id: Cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/go/pkg/mod # Module download cache
|
||||
~/.cache/go-build # Build cache (Linux)
|
||||
~/Library/Caches/go-build # Build cache (Mac)
|
||||
'%LocalAppData%\go-build' # Build cache (Windows)
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
- name: Dependencies
|
||||
run: go mod download
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
- name: Test
|
||||
run: go test ./...
|
||||
- name: Test 32 bit
|
||||
if: ${{ matrix.os != 'macos' }} # can't run 32 bit tests on OSX.
|
||||
env:
|
||||
GOARCH: 386
|
||||
run: go test ./...
|
||||
- name: Test with race detector
|
||||
if: ${{ matrix.os == 'ubuntu' }} # speed things up. Windows and OSX VMs are slow
|
||||
run: go test -race ./...
|
Loading…
Reference in New Issue