Skip to content

Ensure release is run for arm64 e2e nightly tests#16230

Merged
ahrtr merged 2 commits intoetcd-io:mainfrom
jmhbnz:align-arm64-commands
Jul 18, 2023
Merged

Ensure release is run for arm64 e2e nightly tests#16230
ahrtr merged 2 commits intoetcd-io:mainfrom
jmhbnz:align-arm64-commands

Conversation

@jmhbnz
Copy link
Copy Markdown
Member

@jmhbnz jmhbnz commented Jul 13, 2023

Recently in #16152 we extended our arm64 nightly test coverage to include release-3.5 as a requirement for being able to announce tier1 support for arm64.

When these were merged the PASSES for the test command was PASSES='build e2e'. To truly have alignment between what we run for arm64 vs amd64 we need to update that to PASSES='build release e2e'.

Now that the first iteration of the tests have been merged and are passing successfully overnight I would now like to fix the alignment so both architectures run the exact same command.

This is a pre step before I can start work on #16176.

@jmhbnz jmhbnz changed the title [Draft] Ensure release is run for arm64 e2e nightly tests Ensure release is run for arm64 e2e nightly tests Jul 13, 2023
Copy link
Copy Markdown
Member Author

@jmhbnz jmhbnz left a comment

Choose a reason for hiding this comment

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

Note for reviewers - this change has been tested on: pull_request and is passing, refer: https://github.com/etcd-io/etcd/actions/runs/5540459409

Now switched back to on: schedule for merge 🙏🏻

@jmhbnz jmhbnz marked this pull request as ready for review July 13, 2023 08:22
@serathius
Copy link
Copy Markdown
Member

serathius commented Jul 13, 2023

Looks like release-35-arm64/test incorrectly fallbacks to downloading v3.3.0. https://screenshot.googleplex.com/Bq6FbvbfkeuvXLx

release pass downloads a older etcd binary. Either picked by providing a script, or tries to guess which to download.
Some tests like downgrade/upgrade tests, depend on this binary being present and are skipped otherwise.

If we want to improve periodics with the release pass we should think about how to validate that each branch downloaded a proper etcd binary and run the conditional tests.

@jmhbnz
Copy link
Copy Markdown
Member Author

jmhbnz commented Jul 14, 2023

Looks like release-35-arm64/test incorrectly fallbacks to downloading v3.3.0. https://screenshot.googleplex.com/Bq6FbvbfkeuvXLx

release pass downloads a older etcd binary. Either picked by providing a script, or tries to guess which to download. Some tests like downgrade/upgrade tests, depend on this binary being present and are skipped otherwise.

If we want to improve periodics with the release pass we should think about how to validate that each branch downloaded a proper etcd binary and run the conditional tests.

Great spotting. I was trying to avoid passing the MANUAL_VER=<version> parameter and instead rely on https://github.com/etcd-io/etcd/blob/release-3.5/test.sh#L639. Reviewing the shell script again I have a hunch what might be going wrong. When I get back this weekend I will do some more testing and update this pr 🙏🏻

@jmhbnz
Copy link
Copy Markdown
Member Author

jmhbnz commented Jul 16, 2023

Hey @serathius I've resolved the release e2e issue. It wasn't limited to the arm64 workflows either. The main e2e workflow was also hitting the fallback conditional, it just wasn't as problematic because that one was falling back to 3.5.0.

So long story short we have this snippet in test.sh

  UPGRADE_VER=$(git tag -l --sort=-version:refname "v3.5.*" | head -1 | cut -d- -f1)
  if [ -n "${MANUAL_VER:-}" ]; then
    # in case, we need to test against different version
    UPGRADE_VER=$MANUAL_VER
  fi
  if [[ -z ${UPGRADE_VER} ]]; then
    UPGRADE_VER="v3.5.0"
    log_warning "fallback to" ${UPGRADE_VER}
  fi

When running locally this works great and UPGRADE_VER would be defined, however by default actions/checkout does a shallow clone so running git tag doesn't list anything meaning UPGRADE_VER is empty and the fallback conditional is hit. To fix this we just need to pass the fetch-depth parameter to ensure we do a full clone and make tags available.

With this pr it's fixed now for both arm64 nightly e2e for main and release-3.5 and also standard e2e for main.

Note: For release-3.5 standard e2e we should probably backport the fix to https://github.com/etcd-io/etcd/blob/release-3.5/.github/workflows/e2e.yaml#L28 to avoid passing a static MANUAL_VER and instead just do full clone so that version will always be dynamic for previous release. If we have agreement on this I will create a good first issue for it.

@jmhbnz jmhbnz requested review from ahrtr and serathius July 17, 2023 19:14
Comment thread .github/workflows/e2e-arm64-template.yaml Outdated
Signed-off-by: James Blair <mail@jamesblair.net>
Comment thread scripts/test.sh Outdated
Comment thread scripts/test.sh Outdated
Copy link
Copy Markdown
Member

@ahrtr ahrtr left a comment

Choose a reason for hiding this comment

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

LGTM with a nit, pls feel free to keep it as it's.

thx @jmhbnz

Obtain tags from git ls-remote to avoid reliance on local repository state.

Signed-off-by: James Blair <mail@jamesblair.net>
Copy link
Copy Markdown
Member

@fuweid fuweid left a comment

Choose a reason for hiding this comment

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

LGTM

@ahrtr ahrtr merged commit 35628b9 into etcd-io:main Jul 18, 2023
@jmhbnz jmhbnz deleted the align-arm64-commands branch July 27, 2023 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants