renovatebot / renovate

Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io
https://mend.io/renovate
GNU Affero General Public License v3.0
16.89k stars 2.21k forks source link

Add Bitrise ( CI provider ) manager #21957

Closed secustor closed 1 month ago

secustor commented 1 year ago

What would you like Renovate to be able to do?

Bitrise is a platform which provides CI services for mobile apps.

Bitrise uses step definitions which are defined in yaml files with the name bitrise.yaml.

Users of Bitrise are:

If you have any ideas on how this should be implemented, please tell us here.

Steps are hosted and managed by repos with following pattern: https://github.com/bitrise-steplib/steps-{{step reference}}.

format_version: 11
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: android
app:
  envs:
  - MY_NAME: My Name
workflows:
  test:
    steps:
    - script@1.1.5:
        inputs:
        - content: echo "Hello ${MY_NAME}!"

Should result in a dependency with github-release datasource and bitrise-steplib/steps-script as packageName.

If default_step_lib_source deviates from https://github.com/bitrise-io/bitrise-steplib.git, skipReason should be set as we have no datasource to extract the folders in a generic way.

Is this a feature you are interested in implementing yourself?

Maybe

github-actions[bot] commented 1 year ago

Hi there,

You're asking us to support a new package manager. We need to know some basic information about this package manager first. Please copy/paste the new package manager questionnaire, and fill it out in full.

Once the questionnaire is filled out we'll decide if we want to support this new manager.

Good luck,

The Renovate team

secustor commented 1 year ago

@ubiratansoares As discussed, could you fill out the questionnaire? Thx!

ubiratansoares commented 1 year ago

@secustor On my list! 🔥

ubiratansoares commented 1 year ago

@secustor : Let me know if I missed anything!


Did you read our documentation on adding a package manager?

Basics

Name of package manager

What language does this support?

How popular is this package manager?

Does this language have other (competing?) package managers?


Package File Detection

What type of package files and names does it use?

Mainly one YAML file called by bitrise.yml. A working example can be found on this DuckDuckGo fork

What fileMatch pattern(s) should be used?

The most suitable to match exactly bitrise.y(a)ml at root folder

Is it likely that many users would need to extend this pattern for custom file names?

Is the fileMatch pattern likely to get many "false hits" for files that have nothing to do with package management?


Parsing and Extraction

Can package files have "local" links to each other that need to be resolved?

Is there a reason why package files need to be parsed together (in serial) instead of independently?

What format/syntax is the package file in?

How do you suggest parsing the file?

Several options may work here

Does the package file structure distinguish between different "types" of dependencies? e.g. production dependencies, development dependencies, etc?

List all the sources/syntaxes of dependencies that can be extracted

Describe which types of dependencies above are supported and which will be implemented in future


Versioning

What versioning scheme does the package file(s) use?

SemVer (Major.Minor.Patch)

Does this versioning scheme support range constraints, e.g. ^1.0.0 or 1.x?


Lookup

Is a new datasource required? Provide details

We may need a new data source since we have two options for getting CI steps and their respective versions. It'll depend on how we want to crawl data about Bitrise Steps.

Will users need the capability to specify a custom host/registry to look up? Can it be found within the package files, or within other files inside the repository, or would it require Renovate configuration?

Do the package files have any "constraints" on the parent language (e.g. supports only v3.x of Python) or platform (Linux, Windows, etc.) that should be used in the lookup procedure?

Will users need the ability to configure language or other constraints using Renovate config?


Artifacts

Are lock files or checksum files used? Are they mandatory?

Other

Is there anything else to know about this package manager?

I don't think so, but happy to go for anything that's missing!

renovate-release commented 1 month ago

:tada: This issue has been resolved in version 38.7.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket: