Comments (11)
This could probably be solved exactly as we handle the optional go generate
step in go-check
(see https://github.com/protocol/.github#configuration for a description):
.github/templates/.github/workflows/go-check.yml
Lines 20 to 25 in 7f2aaae
from .github.
Thanks for sharing all this info! It's going to be super helpful. I think we have all we need to proceed with this. I cannot commit us to a specific date just yet - I'd aim at landing it ahead of the next major Go version release though.
from .github.
What's the motivation?
(In general, I think it would be good to copy the relevant parts of the Slack conversation here, since Slack is getting garbage collected after a while)
from .github.
In the Slack thread, I asked for the motivation and if using https://pkg.go.dev/cmd/go#hdr-Build_constraints might be enough to satisfy the use case. I'll update here again once we have more information.
from .github.
Pros:
- it doesn't add a lot of code complexity: the most common 32-bit build error is an const int overflow, followed by field alignments, which is super easy to fix
- if our stack is supposed to build on 32 bit machines, all of its libraries should be tested on 32 bit as well
Cons:
- it's another build job, and if the number of builders is limited, this increases build time (will be solved by using PL-hosted runners)
from .github.
@galargh @marten-seemann many thanks for capturing an issue on this.
The rationale is that some of the libraries used in the projects we work on unfortunately have overflow issues. These are relatively easy to fix but landing the fix is out of our control in third-party code bases.
Re using build constraints it has to be applied per .go file correct? if so it makes it quite cumbersome to do. On a side node I have tried doing this here. For larger packages like this adding this per file is more of a hassle. So in that repo we ended up dropping the 32-bit build by directly modifying the workflow which of course results in periodic autogenerated PRs to revert it back.
from .github.
That makes sense to me. If the library is out of our control (and upstreaming a fix is not feasible), disabling the workflow makes sense. Adding a build constraints to all .go files seems suboptimal indeed.
from .github.
This might be out of the scope; but thinking out loud I wondered if it is possible to introduce a convention in the unified CI builds to signal things like "do not run 32-bit tests". Maybe this could be a comment of sorts in the go-test.yml
workflow? or could come from a well known file in root of the repo or in .github
folder?
In terms of urgency, this is a nice thing to have for us; it's not too much trouble to just close off autogenerated PRs in the meantime. I understand it might take a lot of effort to make this an opt-in feature so please don't let me keep you from more important work :) Many thanks
from .github.
ah excellent! that's exactly what I had in mind
from .github.
Much obliged thank you all
from .github.
Implemented in #412
from .github.
Related Issues (20)
- `gorelease` output contains module downloads
- Allow JS test customization HOT 1
- Remove set-output and save-state commands from workflows HOT 1
- 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
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.