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

Add TravisCI Task #188

Closed
1 of 4 tasks
RLittlesII opened this issue Dec 14, 2017 · 9 comments
Closed
1 of 4 tasks

Add TravisCI Task #188

RLittlesII opened this issue Dec 14, 2017 · 9 comments
Labels
Milestone

Comments

@RLittlesII
Copy link
Contributor

RLittlesII commented Dec 14, 2017

I want to add a TravisCI task similar to the AppVeyor task to make Travis a first class citizen in Cake.Recipe.

  • Add TravisCI task
  • Manipulate the dependency graph based on CI system
  • Provide a BuildParameter to designate which CI system is primary
  • Add additional criteria to tasks to execute on the correct CI system
@RLittlesII
Copy link
Contributor Author

@gep13 Now that I have my cross platform builds working with Cake.Recipe, I am going to be looking into this. I have a few design questions.

  1. How can we structure this so we can execute multiple builds concurrently, and not have them stepping over each other?
  2. Should this truly be a duplication of the AppVeyor offering? Or should we move more towards a detection of the system your executing on?

If you want other's to weight in, please add them to the conversation.

@gep13
Copy link
Member

gep13 commented Mar 23, 2018

@RLittlesII said...
How can we structure this so we can execute multiple builds concurrently, and not have them stepping over each other?

I am not clear on how/why they would step over each other. Can you elaborate here?

@RLittlesII said...
Or should we move more towards a detection of the system your executing on?

Ooo, I like this idea. We can get information about what CI system, if any, we are running on, and we can piece together what tasks should be executed based on which one it is. 👍

@RLittlesII
Copy link
Contributor Author

@gep13

How can we structure this so we can execute multiple builds concurrently, and not have them stepping over each other?

What I mean is, if I have my repository build on AppVeyor and TravisCI at the same time when they hit the Upload Code Coverage step, which one wins? At this point, which CI system is the "primary" and which others are just verifying that it builds on multiple platforms?

But the thought on the second one, may be the answer to this issue. 😁

@gep13
Copy link
Member

gep13 commented Mar 23, 2018

Ah, I see what you mean.

On Cake, the way we handle this is that of the many CI servers that we build Cake on, only one of them performing certain tasks. i.e. the publishing, the uploading of artifacts, etc. In our case, we have chosen AppVeyor as the primary CI server, and it does everything. The other CI servers simply perform the compile, testing and publishing steps, to ensure that everything works, but they never do any of the publishing steps.

@RLittlesII
Copy link
Contributor Author

Which is what I am driving towards. We would need a way in Cake.Recipe to designate the primary. Currently AppVeyor is set as the primary based on the task dependency chain. With some of the add ins I am working on, I would want Travis to be the primary because I want to run my integration tests only on Mac OSX or they will fail (i.e. Fastlane and Homebrew).

Is there currently a way around that? As I understand it, Cake.Recipe is currently coupled to AppVeyor.

@gep13
Copy link
Member

gep13 commented Mar 23, 2018

At the minute, I think it is fair to say that Cake.Recipe "prefers" AppVeyor, and some tasks that are included in the default execution wouldn't work if you tried to run them anywhere else.

However, there is nothing to stop us manipulating the task dependency graph, based on what CI system it is running on, in the same way that we manipulate it to choose between doing .net core build and a normal .net build. We likely want to add some additional criterias to tasks to ensure that tasks only run when they are meant to (if they don't already have them).

@RLittlesII
Copy link
Contributor Author

So the task list seems as follows:

  1. Add TravisCI task
  2. Manipulate the dependency graph based on CI system
  3. Provide a BuildParameter to designate which CI system is primary (not sure if this is needed)
  4. Add additional criteria to tasks to execute on the correct CI system

This sound accurate?

@gep13
Copy link
Member

gep13 commented Mar 23, 2018

Sounds about right to me 👍

@gep13
Copy link
Member

gep13 commented Jul 7, 2020

@RLittlesII with the change to a BuildProvider mechanism, and the implementation of one for Travis CI, I think we are in a position to say that this is not good, right? If so, we can go ahead and close this out.

@AdmiringWorm AdmiringWorm removed this from the 2.0.0 milestone Jul 9, 2020
@AdmiringWorm AdmiringWorm added this to the 2.0.0 milestone Jul 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants