{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/posts/2019/08/20/use-travis-ci/",
    "result": {"data":{"site":{"siteMetadata":{"siteUrl":"https://codeand.fun"}},"mdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Use Travis CI\",\n  \"date\": \"2019-08-20T00:30:27.000Z\",\n  \"tags\": [\"CI/CD\", \"Hexo\"],\n  \"categories\": [\"Blog\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\\u4ECA\\u5929\\u7B80\\u5355\\u4F7F\\u7528\\u4E86\\u4E00\\u4E0B\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://travis-ci.org\"\n  }, \"Travis CI\"), \"\\u3002\"), mdx(\"h2\", null, \"\\u8D77\\u56E0\"), mdx(\"p\", null, \"\\u56E0\\u4E3A\\u642D\\u5EFA\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/wuxiaobai24/django-blog\"\n  }, \"Django-blog\"), \"\\u65F6\\uFF0C\\u6BCF\\u6B21\\u66F4\\u65B0\\u4E00\\u6B21\\u4EE3\\u7801\\uFF0C\\u5C31\\u9700\\u8981\\u624B\\u52A8\\u767B\\u9646\\u5230\\u670D\\u52A1\\u5668\\u4E0A\\u8FDB\\u884C\\u4E00\\u7CFB\\u5217\\u64CD\\u4F5C\\u6765\\u91CD\\u542F\\u670D\\u52A1\\uFF0C\\u611F\\u89C9\\u8FC7\\u4E8E\\u9EBB\\u70E6\\u4E14\\u5BB9\\u6613\\u51FA\\u9519\\uFF0C\\u56E0\\u6B64\\u60F3\\u4F7F\\u7528 CI/CD \\u5DE5\\u5177\\u6765\\u81EA\\u52A8\\u5316\\u8FD9\\u4E00\\u8FC7\\u7A0B\\u3002\"), mdx(\"p\", null, \"\\u6240\\u4EE5\\u8FD9\\u91CC\\u5C31\\u7B80\\u5355\\u4E86\\u89E3\\u4E86\\u4E00\\u4E0B CI/CD\\uFF0C\\u5E76\\u5C1D\\u8BD5\\u4F7F\\u7528 \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://travis-ci.org\"\n  }, \"Travis CI\"), \" \\u6765\\u5B9E\\u73B0 Hexo \\u7684\\u81EA\\u52A8\\u5316\\u90E8\\u7F72\\u3002\"), mdx(\"p\", null, \"\\u4F46\\u8003\\u8651\\u5230 Travis CI \\u662F\\u4E00\\u4E2A SaaS \\u670D\\u52A1\\uFF0C\\u9700\\u8981\\u5F00\\u53D1\\u670D\\u52A1\\u5668\\u7684\\u6743\\u9650\\u6765\\u5B8C\\u6210\\u90E8\\u7F72\\uFF0C\\u6240\\u4EE5\\u540E\\u9762\\u5E94\\u8BE5\\u4F1A\\u5148\\u5C06\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Django-blog\"), \"\\u7684\\u90E8\\u7F72\\u65B9\\u5F0F\\u8F6C\\u6362\\u6210\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Docker\"), \"\\u7684\\u65B9\\u5F0F\\uFF0C\\u7136\\u540E\\u5728\\u642D\\u5EFA\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Drone\"), \"\\u6216\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Jenkins\"), \"\\u6765\\u5B8C\\u6210 CI/CD\"), mdx(\"h2\", null, \"CI/CD\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"CI(Continuous Integration)\\u5373\", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6301\\u7EED\\u96C6\\u6210\"), \"\\uFF0C\\u4E2A\\u4EBA\\u7406\\u89E3\\u662F\\u5728\\u63D0\\u4EA4\\u4EE3\\u7801\\u540E\\u8FDB\\u884C\\u4E00\\u4E9B\\u4E86\\u6D4B\\u8BD5\\u6765\\u786E\\u4FDD\\u4EE3\\u7801\\u7684\\u6B63\\u786E\\u6027\\uFF0C\\u4FDD\\u8BC1\\u6BCF\\u4E2A\\u5F00\\u53D1\\u8005\\u6BCF\\u6B21\\u63D0\\u4EA4\\u90FD\\u4F1A\\u8FDB\\u884C\\u6D4B\\u8BD5\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"CD(Continuous Deploy)\\u5373\", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u81EA\\u52A8\\u90E8\\u7F72\"), \"\\uFF0C\\u4E2A\\u4EBA\\u7406\\u89E3\\u662F\\u5728\\u5B8C\\u6210\\u4E86\\u6D4B\\u8BD5\\u540E\\u5C06\\u4EE3\\u7801\\u81EA\\u52A8\\u5316\\u7684\\u90E8\\u7F72\\u5230\\u670D\\u52A1\\u5668\\u4E0A\\uFF0C\\u8FD9\\u6837\\u5C31\\u4E0D\\u9700\\u8981\\u5F00\\u53D1\\u8005\\u6216\\u8FD0\\u7EF4\\u6765\\u624B\\u52A8\\u8FDB\\u884C\\u4EE3\\u7801\\u62C9\\u53D6\\uFF0C\\u8BBE\\u7F6E\\u914D\\u7F6E\\uFF0C\\u91CD\\u542F\\u670D\\u52A1\\u7B49\\u64CD\\u4F5C\\u4E86\\uFF0C\\u800C\\u662F\\u5C06\\u5176\\u81EA\\u52A8\\u5316\\u3002\", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u8FD9\\u4E2A\\u4E1C\\u897F\\u5176\\u5B9E\\u5C31\\u662F\\u6211\\u60F3\\u8981\\u7684\"))), mdx(\"h2\", null, \"Travis CI\"), mdx(\"p\", null, \"\\u8981\\u4F7F\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Travis CI\"), \"\\u6765\\u5B8C\\u6210\\u81EA\\u52A8\\u5316\\u90E8\\u7F72\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"hexo\"), \"\\u53EF\\u4EE5\\u5206\\u4E3A\\u4EE5\\u4E0B\\u51E0\\u4E2A\\u6B65\\u9AA4\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"Travis CI\"), \"\\u7F51\\u7AD9\\u4E0A\\u5C06 repo \\u52A0\\u5165\\u6784\\u5EFA\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5728Github\\u751F\\u6210\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"Github Access Token\"), \"\\u5E76\\u5C06\\u5176\\u52A0\\u5165\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"Travis CI\"), \"\\u7684\\u73AF\\u5883\\u53D8\\u91CF\\u4E2D\\uFF0C\\u8FD9\\u91CC\\u4F7F\\u7528\\u7684\\u53D8\\u91CF\\u540D\\u662F\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"GITHUB_TOKEN\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5728repo\\u4E0A\\u6DFB\\u52A0\\u4E00\\u4E2A\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"Travis CI\"), \"\\u7684\\u914D\\u7F6E\\u6587\\u4EF6\\uFF1A\")), mdx(\"p\", null, \"\\u4E0B\\u9762\\u662F\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \".travis.yml\"), \"\\u914D\\u7F6E\\u6587\\u4EF6\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"yaml\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-yaml\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"langaue\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" node_js\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"node_js\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" stable\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"branches\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"only\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" save\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"before_install\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" npm install \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"g hexo\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"cli\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" git clone https\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"//github.com/smduan/next.git themes/next\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"install\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" npm install\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" npm install hexo\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"deployer\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"git \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"save\\n    \\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"script\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" mv _next_config.yml themes/next/_config.yml\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" hexo clean\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" hexo generate\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"after_script\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" git config user.name \\\"wuxiaobai24\\\"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" git config user.email \\\"wuxiaobai24@foxmail.com\\\"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" sed \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \"i \\\"s/GITHUB_TOKEN/$\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"GITHUB_TOKEN\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"/g\\\" ./_config.yml\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"-\"), \" hexo deploy\"))));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"今天简单使用了一下 Travis CI 。 起因 因为搭建 Django-blog 时，每次更新一次代码，就需要手动登陆到服务器上进行一系列操作来重启服务，感觉过于麻烦且容易出错，因此想使用 CI…","frontmatter":{"title":"Use Travis CI","tags":["CI/CD","Hexo"],"date":"2019-08-20T00:30:27.000Z","categories":["Blog"]},"fields":{"slug":"/posts/2019/08/20/use-travis-ci/"}}},"pageContext":{"slug":"/posts/2019/08/20/use-travis-ci/"}},
    "staticQueryHashes": ["163584858","1656825683","63159454"]}