{"id":32176224,"url":"https://github.com/conda-forge/conda-smithy","last_synced_at":"2026-02-13T01:53:14.929Z","repository":{"id":30216198,"uuid":"33767206","full_name":"conda-forge/conda-smithy","owner":"conda-forge","description":"The tool for managing conda-forge feedstocks.","archived":false,"fork":false,"pushed_at":"2026-02-04T21:08:48.000Z","size":16216,"stargazers_count":176,"open_issues_count":419,"forks_count":215,"subscribers_count":19,"default_branch":"main","last_synced_at":"2026-02-05T00:02:16.849Z","etag":null,"topics":["continuous-integration","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://conda-forge.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/conda-forge.png","metadata":{"funding":{"github":"numfocus","custom":"https://numfocus.org/donate-to-conda-forge"},"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-11T07:38:36.000Z","updated_at":"2026-02-04T21:08:53.000Z","dependencies_parsed_at":"2023-12-28T04:25:39.214Z","dependency_job_id":"86953015-ba03-48a1-ba36-d0a523ca0db5","html_url":"https://github.com/conda-forge/conda-smithy","commit_stats":{"total_commits":3543,"total_committers":126,"mean_commits":28.11904761904762,"dds":0.8103302286198137,"last_synced_commit":"6b684d173bee6732aac415c521c3dc7fbcbfdd21"},"previous_names":[],"tags_count":273,"template":false,"template_full_name":null,"purl":"pkg:github/conda-forge/conda-smithy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda-forge%2Fconda-smithy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda-forge%2Fconda-smithy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda-forge%2Fconda-smithy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda-forge%2Fconda-smithy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conda-forge","download_url":"https://codeload.github.com/conda-forge/conda-smithy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conda-forge%2Fconda-smithy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29392342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T00:53:09.511Z","status":"ssl_error","status_checked_at":"2026-02-13T00:53:09.126Z","response_time":55,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continuous-integration","hacktoberfest"],"created_at":"2025-10-21T19:55:57.629Z","updated_at":"2026-02-13T01:53:14.924Z","avatar_url":"https://github.com/conda-forge.png","language":"Python","funding_links":["https://github.com/sponsors/numfocus","https://numfocus.org/donate-to-conda-forge"],"categories":[],"sub_categories":[],"readme":"Overview\n--------\n\n`conda-smithy` is a tool for combining a conda recipe with configurations to build using freely hosted CI services into a single repository, also known as a feedstock.\n`conda-smithy` is still a work-in-progress, but when complete, `conda-smithy` will:\n\n+ Create a git repo with a conda recipe and the files to run conda builds via CI\n  services.\n+ Register the repo on github and push it.\n+ Connect the repo to the CI services travis-ci.com, appveyor.com, circleci.com, dev.azure.com\n  (For travis-ci.com, configure your org or user to enable the service for all repos)\n\n[![tests](https://github.com/conda-forge/conda-smithy/workflows/tests/badge.svg)](https://github.com/conda-forge/conda-smithy/actions?query=workflow%3Atests)\n[![Coverage Status](https://coveralls.io/repos/github/conda-forge/conda-smithy/badge.svg?branch=main)](https://coveralls.io/github/conda-forge/conda-smithy?branch=main)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nInstallation\n------------\n\nThe easiest way to install conda-smithy is to use conda and conda-forge:\n\n```\nconda install -n root -c conda-forge conda-smithy\n```\n\nTo install conda-smithy from source, see the requirements file in `requirements.txt`, clone this\nrepo, and `python -m pip install .`.\n\nSetup\n-----\n\nYou need a token from github, travis-ci.com, appveyor.com and circleci.com to try out\n`conda-smithy`. The commands which need this will tell you where to get these tokens and where to\nplace them. If you need help getting tokens please ask on the\n[conda-forge google group](https://groups.google.com/forum/?hl=en#!forum/conda-forge).\n\nYou should be able to test parts of `conda-smithy` with whatever tokens you have.\nFor example, you should be able to `conda smithy register-github` without the CI service tokens.\nRe-rendering an existing feedstock is also possible without CI service tokens set.\n\nRe-rendering an existing feedstock\n----------------------------------\n\nPeriodically feedstocks need to be upgraded to include new features. To do\nthis we use `conda-smithy` to go through a process called re-rendering.\nMake sure you have installed `conda-smithy` before proceeding.\nRe-rendering an existing feedstock is possible without CI service tokens set.\n\n1. `cd \u003cfeedstock directory\u003e`\n2. `conda smithy rerender [--commit]`\n3. Commit and push all changes\n\nOptionally one can commit the changes automatically with `conda-smithy` version `1.4.1+`.\nTo do this just use the `--commit`/`-c` option. By default this will open an editor to make a commit.\nIt will provide a default commit message and show the changes to be added. If you wish to do this\nautomatically, please just use `--commit auto`/`-c auto` and it will use the stock commit message.\n\nMaking a new feedstock\n----------------------\n\n1. **Make the feedstock repo:** `conda smithy init\n\u003cdirectory_of_conda_recipe\u003e`.     For a recipe called `foo`, this creates a\ndirectory called `foo-feedstock`, populates it with CI setup skeletons, adds the recipe under\n`recipe` and initializes it as a git repo.\n\n2. **Create a github repo:** `conda smithy register-github --organization conda-forge ./foo-feedstock`.\nThis requires a github token. You can try it out with a github user account\ninstead of an organization by replacing the organization argument with\n`--user github_user_name`. If you are interested in adding teams for your feedstocks,\nyou can provide the `--add-teams` option to create them. This can be done when creating\nthe feedstock or after.\n\n3. **Register the feedstock with CI services:**\n`conda smithy register-ci --organization conda-forge --feedstock_directory ./foo-feedstock`.\nThis requires tokens for the CI services. You can give the name of a user instead\nof organization with `--user github_user_name`. By default this command requires an Anaconda/Binstar token\nto be available in `~/.conda-smithy/anaconda.token`, or as BINSTAR_TOKEN in the environment. This can be opted\nout of by specifying `--without-anaconda-token`, as such execpted package uploads will not be attempted.\n     * For Azure, you will have to create a service connection with the same name as your github user or org\n        `https://dev.azure.com/YOUR_ORG/feedstock-builds/_settings/adminservices`\n     * For Azure builds, you will have to export the environment variable `AZURE_ORG_OR_USER` to point to your Azure org\n     * If this is your first build on Azure, make sure to add [Library Variable Group](https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops\u0026tabs=yaml%2Cbatch#share-variables-across-pipelines) containing your BINSTAR_TOKEN for automated anaconda uploads.\n\n4. **Specify the feedstock channel and label:**\n   Optionally, you can specify source channels and choose a channel to upload to in `recipe/conda_build_config.yaml`.\n     ```yaml\n     channel_sources:\n       - mysourcechannel1,mysourcechannel2,conda-forge,defaults\n     channel_targets:\n       - target_channel target_label\n     ```\n   Default source channels are `conda-forge,defaults`. Default for channel targets is `conda-forge main`.\n\n5. **Specify your branding in the README.md:**\n   Optionally, you can specify the branding on the README.md file by adding the following the `conda-forge.yml` file:\n   ```\n   github:\n     user_or_org: YOUR_GITHUB_USER_OR_ORG\n   ```\n\n6. **Re-render the feedstock:** ``conda smithy rerender --feedstock_directory ./foo-feedstock``\n\n7. **Commit the changes:** ``cd foo-feedstock \u0026\u0026 git commit``, then push ``git push upstream master``.\n\nRunning a build\n---------------\n\nWhen everything is configured you can trigger a build with a push to the feedstock repo on github.\n\nDeveloping conda-smithy\n-----------------------\n\nTo develop conda smithy, use your favortite conda-based environment manager and create an environment based on the `environment.yml`.\n\n```\n$ conda env create\n```\n\nReleasing conda-smithy\n----------------------\n\nBefore making a release, consult `@conda-forge/core` and wait some time for objections.\n\nTo release a new version of conda-smithy, you can use the\n[rever](https://regro.github.io/rever-docs/index.html) release managment tool.\nRun `rever` in the root repo directory with the version number you want to release.\nFor example,\n\n```sh\n$ rever 0.1.2\n```\n\n\nConda-smithy in a nutshell\n--------------------------\n\n#### xkcd 1319: Automation\n\n[![xkcd 1319: Automation](https://imgs.xkcd.com/comics/automation.png)](https://xkcd.com/1319/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconda-forge%2Fconda-smithy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconda-forge%2Fconda-smithy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconda-forge%2Fconda-smithy/lists"}