travis-ci如何推送到主分支

时间:2018-08-20 07:30:51

标签: github travis-ci

我有一个连接到Github的travis-ci项目,该项目试图更新Github存储库中的内容并将其推回到Github(包括master和gh-page分支)中。

但是,尽管我的travis-ci日志文件说一切正常,但我只看到gh-pages分支已更新,但看不到master分支。

我的travis.yml文件是

language: node_js
node_js: stable

language: python
python: 3.6

# Travis-CI Caching
cache:
  directories:
    - node_modules
    - pip

# S: Build Lifecycle
install:
  - npm install
  - npm install -g gulp
  - python -m pip install requests
  - python -m pip install bs4
  - python -m pip install lxml

before_script:
  - cd archive_builder
  - python build_archive.py
  - cd ..

script:
  - gulp dist

after_script:
  - cd dist
  - git init
  - git config user.name "my git name"
  - git config user.email "my git email"
  - git add -A
  - git commit -m "travis -- update gh-page"
  - git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:gh-pages
  - sh ../purgeCF.sh $CF_ZONE $CF_KEY $CF_EMAIL

  - cd ..
  - git add -A
  - git commit -m "travis -- update master files"
  - git push --quiet "https://${GH_TOKEN}@${GH_REF}" HEAD:master

# E: Build LifeCycle

branches:
  only:
    - master
env:
 global:
   - GH_REF: github.com/mygitname/myprojectname.git

在此脚本中,我首先使用gulp更新和构建网站源文件,并将其存储在“ dist”文件夹中。然后,将“ dist”中的内容推送到gh-pages分支,并将其他所有内容推送到我的master分支。

凭据与Travis一起存储为安全密钥,并且应该可以正常工作。

要推送“ dist /”,我在“ dist /”下创建了一个新的“ .git /”,并强制将其推送为新的。

要推送其他所有内容,我无法完成,因为根存储库已经包含“ .git”文件夹,并且我不想丢失以前的提交。应该可以。

感谢帮助。

2 个答案:

答案 0 :(得分:2)

即使 @gary wang 方法有效,也有很多更简单的方法可以直接推入GitHub master分支。

只需在部署部分下添加 target_branch 变量,然后将其分配给 master

有关Travis CI GitHub页面部署的文档:Documentation page

.travis.yml 的内容示例:

language: node_js
...
...
...
deploy:
  provider: pages
  skip_cleanup: true
  keep_history: true
  github_token: $github_token  # Your GitHub token set in Travis CI console
  target_branch: master        # Add this line - To push into GitHub master branch
  on:
    branch: staging            # Your GitHub repo default branch

此方法已经过测试,可以按预期工作。

答案 1 :(得分:0)

我发现大多数文章或答案都在谈论如何部署到gh-pages分支,并且大多数方法都不适合我,我将在travis上调试此问题几天,我将列出如何在travis上掌握主菜单的关键步骤

  

例如下面是我的文档存储库脚本,travis会自动更新readme.md。

  1. 生成github令牌,您可以参考文章https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/

  2. 设置环境变量

    GH_REF githu.com/clownvary/docs.git您的存储库地址

    GITHUB_API_KEY ***********您在第1步中生成的令牌

  3. 脚本

    os: osx
    language: node_js
    cache:
      directories:
        - node_modules
    node_js:
      - 'lts/*'
    before_install:
      - git pull
      - brew install tree
    install:
      - npm install
    script:
      - npm run updateReadme
    after_success:
      - git config user.email "travis@travis.org"
      - git config user.name "travis" # this email and name can be set anything you like
      - git add README.md
      - git commit --allow-empty -m "updated README.md"
      - git push https://clownvary:${GITHUB_API_KEY}@${GH_REF} HEAD:master  #clownvary is my username on github, you need to use yourself , do not use travis or others.
    

希望这可以为您提供帮助