Commit c2ac5316 authored by Paul McCarthy's avatar Paul McCarthy 🚵
Browse files

MNT: Very confused. Add username/password to internal channel URL

parent 3e047d50
...@@ -6,20 +6,21 @@ ...@@ -6,20 +6,21 @@
# #
import os.path as op import os.path as op
import os import os
import sys import sys
import errno import errno
import shlex import shlex
import time import time
import tempfile import tempfile
import contextlib as ctxlib import urllib.parse as urlparse
import subprocess as sp import contextlib as ctxlib
import subprocess as sp
import yaml import yaml
__version__ = '0.16.9' __version__ = '0.17.0'
"""Current version of the fsl-ci-rules.""" """Current version of the fsl-ci-rules."""
...@@ -133,6 +134,14 @@ def dumpyaml(o): ...@@ -133,6 +134,14 @@ def dumpyaml(o):
return yaml.dump(o, sort_keys=False) return yaml.dump(o, sort_keys=False)
def add_credentials(url, username, password):
"""Returns a URL with the username/password added."""
username = urlparse.quote_plus(username)
password = urlparse.quote_plus(password)
scheme, path = url.split('://')
return f'{scheme}://{username}:{password}@{path}'
class CaptureStdout: class CaptureStdout:
"""Context manager which captures stdout and stderr. """ """Context manager which captures stdout and stderr. """
......
...@@ -13,7 +13,8 @@ import urllib.parse as urlparse ...@@ -13,7 +13,8 @@ import urllib.parse as urlparse
from fsl_ci import (sprun, from fsl_ci import (sprun,
indir, indir,
fprint) fprint,
add_credentials)
from fsl_ci.versioning import generate_staging_version from fsl_ci.versioning import generate_staging_version
from fsl_ci.platform import get_platform_shortcut_if_not_applicable from fsl_ci.platform import get_platform_shortcut_if_not_applicable
from fsl_ci.conda import load_meta_yaml from fsl_ci.conda import load_meta_yaml
...@@ -119,6 +120,8 @@ def main(): ...@@ -119,6 +120,8 @@ def main():
token = os.environ['FSL_CI_API_TOKEN'] token = os.environ['FSL_CI_API_TOKEN']
staging = os.environ['STAGING'].lower() == 'true' staging = os.environ['STAGING'].lower() == 'true'
internal = 'FSLCONDA_INTERNAL' in os.environ internal = 'FSLCONDA_INTERNAL' in os.environ
username = os.environ.get('FSLCONDA_INTERNAL_CHANNEL_USERNAME', None)
password = os.environ.get('FSLCONDA_INTERNAL_CHANNEL_PASSWORD', None)
skip_platforms = os.environ.get('FSLCONDA_SKIP_PLATFORM', '') skip_platforms = os.environ.get('FSLCONDA_SKIP_PLATFORM', '')
skip_platforms = skip_platforms.split() skip_platforms = skip_platforms.split()
...@@ -145,11 +148,12 @@ def main(): ...@@ -145,11 +148,12 @@ def main():
# we output to _platform_, rather thah platform. # we output to _platform_, rather thah platform.
output_dir = op.join(os.getcwd(), 'conda_build', f'_{platform}_') output_dir = op.join(os.getcwd(), 'conda_build', f'_{platform}_')
if internal: pubchan = os.environ['FSLCONDA_PUBLIC_CHANNEL_URL']
channel_urls = [os.environ['FSLCONDA_INTERNAL_CHANNEL_URL'], intchan = os.environ['FSLCONDA_INTERNAL_CHANNEL_URL']
os.environ['FSLCONDA_PUBLIC_CHANNEL_URL']] if username is not None:
else: intchan = add_credentials(intchan, username, password)
channel_urls = [os.environ['FSLCONDA_PUBLIC_CHANNEL_URL']] if internal: channel_urls = [intchan, pubchan]
else: channel_urls = [pubchan]
os.makedirs(output_dir) os.makedirs(output_dir)
......
...@@ -12,7 +12,7 @@ import os ...@@ -12,7 +12,7 @@ import os
import sys import sys
import glob import glob
from fsl_ci import sprun from fsl_ci import sprun, add_credentials
from fsl_ci.platform import get_platform_shortcut_if_not_applicable from fsl_ci.platform import get_platform_shortcut_if_not_applicable
from fsl_ci.conda import (load_meta_yaml, from fsl_ci.conda import (load_meta_yaml,
get_project_repository_and_revision) get_project_repository_and_revision)
...@@ -55,6 +55,11 @@ def create_test_env(env_dir, build_dir): ...@@ -55,6 +55,11 @@ def create_test_env(env_dir, build_dir):
internal = 'FSLCONDA_INTERNAL' in os.environ internal = 'FSLCONDA_INTERNAL' in os.environ
intchannel = os.environ['FSLCONDA_INTERNAL_CHANNEL_URL'] intchannel = os.environ['FSLCONDA_INTERNAL_CHANNEL_URL']
pubchannel = os.environ['FSLCONDA_PUBLIC_CHANNEL_URL'] pubchannel = os.environ['FSLCONDA_PUBLIC_CHANNEL_URL']
username = os.environ.get('FSLCONDA_INTERNAL_CHANNEL_USERNAME', None)
password = os.environ.get('FSLCONDA_INTERNAL_CHANNEL_PASSWORD', None)
if username is not None:
intchannel = add_credentials(intchannel, username, password)
if internal: pkgchannels = [intchannel, pubchannel] if internal: pkgchannels = [intchannel, pubchannel]
else: pkgchannels = [pubchannel] else: pkgchannels = [pubchannel]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment