-
Notifications
You must be signed in to change notification settings - Fork 18
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
CI specific configuration file validation #171
Comments
Somewhat - we have the example repos running with the template. We would recognize if they start failing.
This is true. Even though this is not very likely, it is ofc possible. Auto-updating is problematic since it may break existing workflows. And unfortunately, Travis does not allow referring to an external source for
As said, this is complicated. If the user made local changes, e.g. to include additional system libs, we would overwrite those.
Not 100% sadly. System lib installation is always the problem. This differs for each OS system and cannot be done within R. Hence the user needs to interact with the respective CI yaml file. Even if we would forward this externally, the names of such libraries would differ e.g. on Ubuntu/Windows/macOS. |
I thought about this for a while. A function providing a manual update approach using the template files stored on GH would definitely be useful. For all others - I am wondering if there is a way that this function could act smart in that it would scrape potential system libs added by the user and readds it to the YAML after updating. |
Regarding CI YAML validation: CI systems usually have their own linter which can be accessed via the API, e.g.
See #194 for a sketch regarding updating local YAML files. |
I'd conclude that evaluating YAML files against upstream changes of the CI provider is out of scope for {tic}. Some providers do not even provide a yaml validation mechanism via their API. I think most of this part can be solved by implementing an update mechanisms as proposed in #194. Also we should recognize early enough in {tic} and users should maybe update once in a while. |
Is there any way to validate if a travis / appveyor script is still complying to a template? My hypothesis of how things could fail:
travis
changes something in their default specification, so to continue to use the current specification, we now need to explicitly specify the key value (e.g. an environment variable). However, all projects usingtic
have a.travis.yml
file in their root that has no link to an upstream repo from which it could get updated. Hence, there is no way for these projects to update their CI, in worst case, they will fail silently or loudly.appveor
depreciates a stage / keyword in their markup language. When hard depreciation sets in after soft depreciation, all projects that usetic
will fail with aninvalid YML specification
error.To prevent this from happening, tic should check if the ci file such as
.travis.yml
are up to date with a template that is stored somewhere (ideally this check could be part ofa simple pre-push hook). If it is not, we should ask people to kindly update their yml file for the respective service. Also, sincetic.R
should contain all abstractions, there would actually be no reason for anyone to have specific information in the.travis.ci
, correct? Maybe my solution is an overkill though. What do you think?The text was updated successfully, but these errors were encountered: