在Github上自动上传生成的文档

时间:2017-01-04 15:28:30

标签: java git bash github travis-ci

我有一个关于Github的Javadoc评论的大型Java项目。 Travis CI与之相关联。成功之后,我想生成项目的文档并将其推送到名为“doc”的分支上!

在Travis CI成功构建后启动了一个bash脚本:

#!/usr/bin/env bash

# If error, return 0
set -e

# Repo
REPOSITORY="git@github.com:xxx/yyy"

# Clone repo to work in (repo_clone dir)
git clone ${REPOSITORY} repo_clone
cd repo_clone

# Go into doc branch, create it if not exist (first time only)
git checkout doc || git checkout --orphan doc

git config user.name "Travis CI"
git config user.email "doc@backtothefuture.go"

# Generation of doc
javadoc -private -sourcepath "src/main/java:src/main/ressources" \
      -d doc \
      marche.traitement.exceptions \
      marche.traitement.label \
      marche.traitement.marche \
      marche.traitement.participant \
      marche.traitement.production \
      marche.traitement.produits

# Add new dir (all dir but only doc/ is impacted
git add .

git commit -m "There is the doc Marty !"

git remote add origin ${REPOSITORY}

# Push
git push origin doc

但有时候我有这个错误

fatal: remote origin already exists.

有时这一个:

error: src refspec doc does not match any.
error: failed to push some refs to 'git@github.com:GeeksdelaCave/aidons-les-fermiers.git'

取决于未成年人的适应性。

如何解决?

3 个答案:

答案 0 :(得分:0)

我不会测试这个,但我认为这会奏效。如果checkout分支已存在于遥控器上,则第一个push和第一个doc会出错,但没有结果:

...
git checkout -b doc || git checkout doc

# Add new dir (all dir but only doc/ is impacted
git add .

git commit -m "There is the doc Marty !"

git push -u origin doc
git push

答案 1 :(得分:0)

克隆存储库时会自动设置origin远程。所以

之后
git clone ${REPOSITORY} repo_clone

您已经有一个名为origin的远程指向git@github.com:xxx/yyy。这解释了第一个错误。

答案 2 :(得分:0)

我有一个执行此操作的脚本。 您可以找到我的示例here

可以在此处找到原始代码:

#!/bin/bash

# Source of file: http://benlimmer.com/2013/12/26/automatically-publish-javadoc-to-gh-pages-with-travis-ci/
if [ "$TRAVIS_REPO_SLUG" == "WPIRoboticsProjects/GRIP" ] && [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "master" ] && [[ "$TRAVIS_OS_NAME" != "osx" ]]; then

  echo -e "Generating javadoc...\n"
  ./gradlew aggregateJavadocs

  echo -e "Publishing javadoc...\n"

  cp -R build/docs/javadoc $HOME/javadoc-latest

  cd $HOME
  git config --global user.email "travis@travis-ci.org"
  git config --global user.name "travis-ci"
  git clone --quiet --branch=gh-pages https://${GH_TOKEN}@github.com/WPIRoboticsProjects/grip gh-pages #> /dev/null

  cd gh-pages
  git rm -rf ./javadoc
  cp -Rf $HOME/javadoc-latest ./javadoc
  git add -f .
  git commit -m "Lastest javadoc on successful travis build $TRAVIS_BUILD_NUMBER auto-pushed to gh-pages"
  git push -fq origin gh-pages #> /dev/null

  echo -e "Published Javadoc to gh-pages.\n"

fi