Install pip packages from private GitHub repositories without an SSH agent.
Get it from pypi:
pip install pip_install_privatesOr install directly from GitHub:
pip install git+https://github.com/ByteInternet/pip-install-privates.git@master#egg=pip-install-privatesRun pip_install_privates --help for more information.
| Variable | Description |
|---|---|
GITHUB_TOKEN |
Your Personal Access Token for GitHub. Used for accessing private GitHub repositories. |
GITLAB_TOKEN or CI_JOB_TOKEN |
Your Personal Access Token for GitLab. Used for accessing private GitLab repositories. |
GITLAB_DOMAIN |
The domain of your custom GitLab instance, if not using the standard gitlab.com. |
GITHUB_ROOT_DIR |
The base directory on GitHub that will be transformed. |
PROJECT_NAMES |
Comma-separated list of project names used to identify which GitHub URLs should be transformed to GitLab URLs. |
To use pip_install_privates, you need a Personal Access Token from GitHub or GitLab.
- Generate a Personal Access Token from GitHub with the required scopes. Go to Settings → Personal access tokens and click "Generate new token". Make sure to give the "repo" permission ("Full control of private repositories"). Copy the generated token and store it somewhere safe.
- Store the token as an environment variable:
export GITHUB_TOKEN=your_github_token- On the left sidebar, select "Search or go to" and find your project.
- Select Settings > CI/CD.
- Expand "Token Access".
- Ensure the "Limit access to this project" toggle is enabled. This is enabled by default in new projects. It is a security risk to disable this feature, so project maintainers or owners should keep this setting enabled at all times.
- Select "Add group or project".
- Input the path to the group or project to add to the allowlist, and select "Add project".
- This will be used with CI_JOB_TOKEN.
When using a custom domain: 1. Generate a Personal Access Token from GitLab with the required scopes. 2. Store the token as an environment variable: 3. Specify your GitLab domain (if using a custom GitLab instance):
export GITLAB_DOMAIN=your.gitlab.domainUse GITHUB_ROOT_DIR and PROJECT_NAMES environment variables to automatically convert GitHub URLs to private GitLab URLs during installation.
- GITHUB_ROOT_DIR specifies the base directory on GitHub that the script will transform when applying the private tag. It acts as a root folder in URL transformations.
- "PROJECT_NAMES" is a comma-separated list of project names used to identify which GitHub URLs should be transformed to GitLab URLs. If a URL in the requirements.txt file contains any of the specified project names and starts with the specified GITHUB_ROOT_DIR, it will be transformed.
Example: - GitHub URL: git+ssh://[email protected]/ByteInternet/my-project.git@my_tag#egg=my_project - GITHUB_ROOT_DIR: ByteInternet - GITLAB_DOMAIN: your.gitlab.domain - PROJECT_NAMES: my-project,my-other-project # Wrap variable in "" pass in multiple project names on CI. - Transformed GitLab URL: git+https://gitlab-ci-token:[email protected]/ByteInternet/my-project.git@my_tag#egg=my_project
Execute the script with the following:
pip_install_privates --gitlab-token ${CI_JOB_TOKEN} --gitlab-domain ${GITLAB_DOMAIN} --github-root-dir ${GITHUB_ROOT_DIR} --project-names "${PROJECT_NAMES}" requirements/development.txtgit+ssh://[email protected]/your_org/[email protected]#egg=your_packageRun the script with the token:
pip_install_privates --token $GITHUB_TOKEN requirements.txtRun pip_install_privates --help for more information.
After performing git clone on the repository, create a virtual environment however you prefer. For example:
mkvirtualenv -a $PWD pip_install_privatesInstall the package, its dependencies, and dev dependencies:
pip install -e . -r requirements.txtRun tests for your specific Python version:
nosetestsOr for all Python versions:
toxThis software is brought to you by Hypernode, a web hosting provider based in Amsterdam, The Netherlands. We specialize in fast and secure Magento hosting and scalable cluster hosting.
Check out our GitHub page for more open source software or our site to learn about our products and technologies. Look interesting? Reach out about joining the team. Or just drop by for a cup of excellent coffee if you're in town!