Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-platform compatibility #502

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions .github/workflows/test_on_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,24 @@ jobs:
needs: permission
strategy:
matrix:
platform: [macos-latest, windows-latest, ubuntu-latest]
runs-on: ${{matrix.platform}}
platform: [macos-latest, windows-latest, ubuntu-latest, ubuntu-latest-x86]
runs-on: ${{ matrix.platform == 'ubuntu-latest-x86' && 'ubuntu-latest' || matrix.platform }}
env:
DBGSYNCLOG: trace
DBGSYNCON: true
steps:
- name: Setup Alpine Linux
if: matrix.platform == 'ubuntu-latest-x86'
uses: jirutka/setup-alpine@v1
with:
arch: x86
packages: >
golang
make
git
gcc
musl-dev

- name: Set up Go ^1.13
uses: actions/setup-go@v3
with:
Expand All @@ -51,7 +63,7 @@ jobs:
fetch-depth: 0

- name: Test without coverage
if: matrix.platform == 'macos-latest' || matrix.platform == 'windows-latest'
if: matrix.platform == 'macos-latest' || matrix.platform == 'windows-latest' || matrix.platform == 'ubuntu-latest-x86'
run: make test

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a step that does a uname -a and a go env just to be able to double check that it works?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can see that in the runner anyway, at the top...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that would be the case for the Alpine x86 job, since it seems to run on the same worker, no?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I didn't see that it only runs 3 out of the 4 entries in the matrix - according to the Standard Github Runners, the ubuntu-latest-x86 doesn't exist. So perhaps it's just ignored?

If you look at the checks from this PR, only 3 are run. And I cannot see anything about two tests being run on the ubuntu-latest.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the new workflow would be executed until the changes haven't been merged

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I'm confused:

  • according to the header, the synchronize type will launch the script every time you do a git push
  • I can't find your changes to the file .github/workflows/test_on_pr.yml anymore - did you remove the changes?

I do think it's a good idea to add the 32-bit test to the workflow. And if I'm not mistaken, the workflow has actually been run. It's just that the -x86 target doesn't exist. But I didn't test it.

Copy link
Contributor Author

@matteosz matteosz May 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, yes the synchronize make the CI to run for every git push, however the CI that is run is the one which is already on the master branch (or the drandmerge since it's the base branch now). Hence, I changed the workflow to execute separate jobs (thus avoiding the -x86 target issue) and the changes weren't detected either, so I moved the CI changes to a separate PR to merge before this one so we have the correct CI tests running.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, as I have too many things going on and couldn't decide where to start, I did this:

https://github.com/ineiti/test_ubuntu_32bits/blob/main/.github/workflows/test.yaml

some notes:

  • it's nicer to use a matrix, it keeps the things simpler and easier to extend
  • you don't use the shell: alpine.sh {0}, so I think you're still running it on 64-bits and not 32-bits
  • uname doesn't show it's 32-bits, so I used getconf LONG_BIT - thanks to stackoverflow
  • ChatGPT was useless in this endeavour...

I hope that helps...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will update the CI with that

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, a good CI-pipeline is worth putting some effort in!

- name: Test with coverage
Expand Down
18 changes: 15 additions & 3 deletions .github/workflows/test_on_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,24 @@ jobs:
test_and_coverage:
strategy:
matrix:
platform: [macos-latest, windows-latest, ubuntu-latest]
runs-on: ${{matrix.platform}}
platform: [macos-latest, windows-latest, ubuntu-latest, ubuntu-latest-x86]
runs-on: ${{ matrix.platform == 'ubuntu-latest-x86' && 'ubuntu-latest' || matrix.platform }}
env:
DBGSYNCLOG: trace
DBGSYNCON: true
steps:
- name: Setup Alpine Linux
if: matrix.platform == 'ubuntu-latest-x86'
uses: jirutka/setup-alpine@v1
with:
arch: x86
packages: >
golang
make
git
gcc
musl-dev

- name: Set up Go ^1.13
uses: actions/setup-go@v3
with:
Expand All @@ -26,7 +38,7 @@ jobs:
fetch-depth: 0

- name: Test without coverage
if: matrix.platform == 'macos-latest' || matrix.platform == 'windows-latest'
if: matrix.platform == 'macos-latest' || matrix.platform == 'windows-latest' || matrix.platform == 'ubuntu-latest-x86'
run: make test

- name: Test with coverage
Expand Down