docs: def publish_pages(name, paths, git_repo, published_repo, extra_message=''):
      """Publish helm chart index to github pages"""
      version = last_modified_commit(*paths)
      checkout_dir = '{}-{}'.format(name, version)
      check_call([
          'git', 'clone', '--no-checkout',
          git_remote(git_repo), checkout_dir],
          echo=False,
      )
      check_call(['git', 'checkout', 'gh-pages'], cwd=checkout_dir)
  
      # package the latest version into a temporary directory
      # and run helm repo index with --merge to update index.yaml
      # without refreshing all of the timestamps
      with TemporaryDirectory() as td:
          check_call([
              'helm', 'package', name,
              '--destination', td + '/',
          ])
  
          check_call([
              'helm', 'repo', 'index', td,
              '--url', published_repo,
              '--merge', os.path.join(checkout_dir, 'index.yaml'),
          ])
  
          # equivalent to `cp td/* checkout/`
          # copies new helm chart and updated index.yaml
          for f in os.listdir(td):
              shutil.copy2(
                  os.path.join(td, f),
                  os.path.join(checkout_dir, f)
              )
      check_call(['git', 'add', '.'], cwd=checkout_dir)
      if extra_message:
          extra_message = '\n\n%s' % extra_message
      else:
          extra_message = ''
      check_call([
          'git',
          'commit',
          '-m', '[{}] Automatic update for commit {}{}'.format(name, version, extra_message)
      ], cwd=checkout_dir)
      check_call(
          ['git', 'push', 'origin', 'gh-pages'],
          cwd=checkout_dir,
      )