-
Notifications
You must be signed in to change notification settings - Fork 30
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
invoke colcon instead of ament_tools #132
Conversation
Not stating an opinion here but I think it would be more fair to compare build time instead of the time including repeating flaky tests: ament build time: 00:21:30 |
With "build" time I was referring to the time the Jenkins build takes. I would expect both builds to have a similar rate of flakiness and would be surprised if they preferred happen in the |
94e439b
to
7b63bb9
Compare
Is this able to build connext without crashing on the code generator ? I see that the windows job is not using connext |
At least the builds I ran on Jenkins didn't had that problem. But since the problem happened only very rarely in the first place I don't think I can answer that question after just a few builds.
|
I think I'm missing information to review this so forgive if the following questions have been answered elsewhere and are planned to be addressed (pointers appreciated) If it's not desired to have the console output displayed by default in colcon. Is there a plan to add What is the plan for Why is |
Yes, we could make that the default. I can add more commits to this PR - I was mostly worried when also altering the job generation (to use different defaults and change the naming of some of the parameters) it might get too much for a review.
I would keep that separate (to not make a single PR address too many things at the same time) and keep the current default value passing it to all packages.
|
So if we merge this we don't build or test security anymore, is that correct ?
I understand the concern for the review, nicely crafted commits should allow to reduce the review burden. If we want to convince ourselves about the job generation, what about a set of test jobs generated with the new config and manually triggered ? I think that the behavior of the jobs should be the same after merging this PR, so not having console output or not building/testing part of our stack is a blocker for merging this in my opinion. |
No, that is not the case. Currently the default job parameters contain
I updated the PR to change the default parameters to match the same behavior for e.g. output handling (see https://github.com/ros2/ci/pull/132/files#diff-42a7cd652d15099c3f6b6c27e05dce31R82).
I intentionally didn't include any other job configuration changes in this PR. So I don't think we need to generate any temporary jobs. You can simply run trigger the current job using this branch and using the default values from this patch:
|
I must have misunderstood the description of this PR then "built without SECURITY=ON since that require changing the handling of the job parameters"
👍 , without that change our jobs would have been broken: https://ci.ros2.org/job/ci_linux/4197/ |
I tried to run a job with these arguments and the job crashed on argument parsing: https://ci.ros2.org/job/ci_windows/4301/ |
6ed5ea1
to
d36619a
Compare
cd30776
to
dc6cc3a
Compare
Rebased to fix conflicts with the recently merged PR. |
ros2_batch_job/__main__.py
Outdated
if sys.platform != 'win32': | ||
colcon_script = os.path.join(venv_path, 'bin', 'colcon') | ||
else: | ||
colcon_script = 'c:\\python36\\Scripts\\colcon.exe' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean that we will now need to update the ci scripts on new python minor version?
Could we infer that from the environment ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If that can be done automatically even better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 4fe9cfd.
rmdir /S /Q ws workspace | ||
|
||
echo "# BEGIN SECTION: Determine arguments" | ||
set "PATH=%PATH:"=%" | ||
set "PATH=!PATH:"=!" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: Can you clarify why we need to use !
everywhere now ? and how this plays with the delayed expansion?
Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using %
didn't work for me. I didn't spend too much effort trying to figure out why. Using !
made it work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, I was wondering if this didnt work before you enabled the delayed expansion but would have worked after enabling it.
That's fine, I'm not planning on looking into it to find out
@@ -24,33 +24,37 @@ | |||
|
|||
|
|||
def build_and_test_and_package(args, job): | |||
print('# BEGIN SUBSECTION: ament build') | |||
print('# BEGIN SUBSECTION: build') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is "BEGIN SUBSECTION: colcon build" in the other file. I suggest homogenizing by just using "build", "test" and "test-result" everywhere
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in 78d6cab.
This looks good to me now. 👍 Not sure if we prefer to roll this out before the weekend to have the time to see all jobs types running with it before Monday or if on the opposite we want to be around to monitor the jobs after deploying this |
I am planning on merging this in an hour so that the nightlies can run and there is time over the weekend to fix minor issues. Imo that is preferred over potentially disturbing everyone during the week. If the problems are too big (or my time too short) I will just revert it before the nightlies Sunday evening and will try again some time later... Let me know if you have any objections. |
To summarize the current state:
Neither of the failing tests strikes me as likely being related to this patch. |
If I may add my perspective on the current state: The composition tests have always been a bit flaky with fastrtps, but since April 21 they started failing regularly again, including with connext. Perhaps because of the same cause as ros2/build_farmer#114 (whatever it is). It may have been caused by something unrelated to colcon and the timing was just a coincidence, but AFAICS colcon hasn't been ruled out yet. The packaging jobs are green but the output from them is not yet usable (fix ready in #158 but overlays not tested yet). Users of nightlies also haven't been informed of the switch that has occurred. |
Few additions that may help us segregate the failures: It indeed looks like the various fixes in testing and packaging yesterday reduced the number of failures
👍 from today's meeting, @nuclearsandwich is about to disable them
👍 not related to this patch, these failures are due to OpenCV libraries not being installed properly on the build machines:
Packaging jobs are green, but the packaging artifacts are still unusable ATM. @dhood has been investigating and @mjcarroll @sloretz are testing the ones from #158 to see if the resulting workspaces can be source and used as underlays |
I couldn't find anywhere in the docs where we point users to the nightly packaging jobs. Do you have a pointer for me? I am more than happy to add a note for the changed script name. |
I don't intended to merge this patch - it will stay "in progress" until the direction is decided. I will keep the branch up-to-date though to allow anyone to opt-in to use this on CI.
With this branch you can set
CI_SCRIPTS_BRANCH
tocolcon
in the job parameters to usecolcon
for the build. When using this branch you need to change the default value forCI_AMENT_BUILD_ARGS
from:to
--executor parallel
).colcon
usesargparse
without custom parsing of greedy arguments the-D
needs to be prefixed with a space so thatargparse
doesn't consider it an argument. The--cmake-args
argument itself will then take care of removing the leading space. The terminating--
is not needed anymore.I also often use the option
--event-handler console_cohesion+
to print the output of each package "on block" once the package has finished. That makes sure the output is not interleaves but the build log still contains "all" the information.built withoutthe PR has been updated to change the default parameters to keep security on the same way as beforeSECURITY=ON
since that require changing the handling of the job parametersComparison of two Linux CI builds using different build tools:
ament_tools
: 1 hr 5 mincolcon
: 47 min (27% faster)