Comments (7)
Just one nit: make sure editing the Go version in go.mod happens before you re-run all the checks like tidy, fix, gofmt, etc. Tidy will definitely change behavior with the version being declared as 1.17, and it's likely tools like fix will start doing the same in the future too.
from .github.
Sounds like a good checklist. Changes to gofmt should be rare, but they do sometimes happen. go fix
is similarly not used for major versions these days, but I think it will start being used again soon, as heavier changes are done to the std lib and language.
When you bump the Go version in go.mod, you should also re-run go mod tidy
, because the meaning of a tidied module can change with each Go version. For example, 1.17 introduces "lazy module loading", which will add more indirect lines to go.mod, and that's turned on if your installed Go version is 1.17 or later and the Go version in go.mod is 1.17 or later. So bumping the Go version in go.mod to 1.17 but not re-running tidy would leave the module untidied.
It's also possible that go vet
would also start failing due to new checks, but nothing we can automate there.
from .github.
Thanks, I edited the list.
from .github.
What I would like to do is set a label "go-version-update" on the PR, and only execute these steps if that label is set.
The problem is that we don't get access to the PR metadata because we're triggering our workflow on push to master, since GitHub Actions doesn't have a dedicated "PR merged" event.
from .github.
I confirmed that the GitHub Event JSON doesn't contain any references to the PR that is being merged, other than the commit message, which consistently is of the form Merge pull request #XX from YY
.
We could parse that message to extract XX
from that, and then use the GitHub API to look up that Pull Request. Needless to say, this is a lot more hacky than I wish this would be.
from .github.
A coming PR is going to implement this. A future PR will document the steps to do every six months in the README.
from .github.
I think this can be considered documented in code by now. Here's a link to a dedicated workflow which performs Go version upgrades in repositories enrolled in Unified CI - https://github.com/pl-strflt/uci/blob/main/.github/workflows/update-go.yml.
from .github.
Related Issues (20)
- Add github action for nightly build HOT 2
- Support protected branches for the js release flow
- can't use GitHub secrets in repo-specific setup HOT 3
- uCI Release: Go v1.20.0 HOT 13
- Go test -cover breaks certain tests HOT 3
- Cache go modules and build cache HOT 2
- Better go linters HOT 2
- default + required in reusable workflow seems to be broken HOT 5
- Automerge might starve other workflows HOT 1
- Unified CI config update job broken on all js repos HOT 1
- draft release notes not updated on force push HOT 1
- patch release incorrectly cut on master, not on release branch
- Commit messages in auto-merged PRs do not follow conventional commits HOT 1
- Disable codecov annotations on PRs HOT 2
- Release Check workflow not comparing the correct versions for Golang RCs
- Thoughts about the future of Unified CI HOT 3
- Find stale repositories should also error on inaccessible repos HOT 1
- Releaser workflow marks latest releases incorrectly
- Configure workflows triggered on pull_request to run on base change HOT 1
- proposal: better go test outputs HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from .github.