当前位置: 首页 > 后端技术 > Node.js

-Github集成TravisCI:自动发布

时间:2023-04-03 19:31:31 Node.js

前言已有阮一峰老师的持续集成服务TravisCI教程,为什么要写这篇文章?原因有二:文章内容过时,文章覆盖面不够,没有写出一些实用的细节。由于以上原因,虽然作者可以在Github中快速集成TravisCI并成功构建,但是我在发布的时候踩了一些坑。终于发布成功了。所以,写这篇文章是为了补充更多的细节,帮助别人少走弯路。Text免费购买TravisCI应用点击https://github.com/marketplace/travis-ci,登录后即可免费购买(将TravisCI与开源项目集成是免费的)。选择关联仓库选择个人或组织名下需要关联TravisCI的Github仓库。如果想修改已经设置好的设置,可以在Github的Personalsettings->Applications中输入。写一个CI文件,在项目根目录下新建一个.travis.yml文件。触摸.travis.yml并将其发布到github页面。下面显示了一个可以发布到gh-pages的示例。可以稍作修改,通过复制粘贴使用。本示例包括:指定node.js版本使用yarn安装依赖,并为安装依赖构建缓存设置两个不包含敏感信息的环境变量设置一个包含敏感信息的环境变量构建生成的文件部署到githubpageslanguage:node_jsnode_js:-lts/*env:-API_SERVER=https://easy-mock.com/mock/5c1b3895fe5907404e654045/femessage-mockPUBLIC_PATH=http://levy.work/nuxt-element-dashboard/#默认是yarn,如果有yarn.lockinstall:-yarn#默认是yarntestscript:-yarnbuildcache:yarndeploy:provider:pagesskip-cleanup:truekeep-history:truelocal-dir:diston:branch:mastergithub-token:$GITHUB_TOKEN该文件描述如下。language:node_jsnode_js:-lts/*第1行指定构建环境为node.js第2、3行指定最新LTS版本的node.jsenv:-API_SERVER=xxxPUBLIC_PATH=xxx以上是设置两个环境变量。请注意,多个环境变量必须在一次构建中写在同一行,并以空格分隔。env:-API_SERVER=xxx-PUBLIC_PATH=xxx如果写成上面的形式,就会变成两次构建,每次只有一个环境变量。install:-yarnscript:-yarnbuildcache:Yarn指定使用yarn安装依赖,安装完成后执行yarnbuild命令;为了加快yarn依赖项的安装,启用了缓存。以下是最关键的部署配置。deploy:provider:pagesgithub-token:$GITHUB_TOKENskip-cleanup:truekeep-history:truelocal-dir:diston:branch:master第2行指定部署到GithubPages,即GithubPages的gh-pages分支仓库,请确保仓库的pages分支为gh-pages,相关操作可以看这里。第3行指定保留构建的文件。第4行指定每次部署都会添加一条新的提交记录并推送它,而不是使用gitpush--force第5行指定构建后要部署的目录。第6、7行指定master分支有提交行为,构建完成后会触发部署。第8行是部署需要的github-token,其中$GITHUB_TOKEN是一个变量,可以在TravisCI个人仓库的设置页面中设置。相关操作可以看这里发布到npm,然后给出一个发布node.js模块到npm的例子。主要是部署。这里不一样。npm_token--adddeploy.api_key--comon:branch:masterskip-cleanup:trueapi_key指npmtoken,登录npm后在个人中心生成。因为不能泄露,所以必须通过travisci加密的命令行工具来完成,执行如下命令travisencryptNPM_TOKEN--adddeploy.api_key--comcomplexexample下面是一个复杂的例子,也是实际的使用的配置,主要是master分支会在执行脚本命令环境变量前触发build读取shell,生成.env文件。构建成功后发布模块到npm,发布文档到gh-pagesbranches:only:-masterlanguage:node_jsnode_js:-lts/*git:depth:3install:-yarn--frozen-lockfilebefore_script:echoOSS_KEY=$OSS_KEY\\nOSS_SECRET=$OSS_SECRET\\nOSS_BUCKET=$=OSS_BUCKET\\nOSS_REGION=$OSS_REGION>.envscript:-yarnbuildcache:yarndeploy:-provider:pageslocal-dir:docsgithub-token:$GITHUB_TOKEN跳过真正清理:keep-history:true-provider:npmemail:levy9527@qq.comapi_key:$NPM_TOKENskip-cleanup:true相关操作使用travis命令行工具进行加密加密需要使用travis命令行工具,如果设置在travisciweb界面的环境变量,下面给出的mac环境下需要注意的地方可以直接跳过1.安装命令:brewinstalltr??avis否则可能会出问题2.一定要用https登录://travis-ci.org/github3。然后在项目的根目录下,执行命令travislogin--auto4。修改gitsettingvi.git/config确保[travis]slug=是你travis关联的仓库5.添加加密环境变量travisencryptgithub-token=xxx--adddeploy.github-token--com因为travisci我登录的域名是https://travis-ci.com,所以需要参数--com,默认是https://travis-ci.org,通过环境变量设置GITHUB_TOKEN首先创建一个TravisCI的新令牌并单击生成新令牌以设置权限以复制生成的令牌。(切记不要刷新或离开当前页面,否则token不可见,只能重新生成)登录TravisCI,进入要集成的项目设置页面。添加环境变量GITHUB_TOKEN注意这里的环境变量是bash设置的,读入.yml中,所以变量名要大写加下划线。这是bash的最佳实践。不要写成github-tokenGitHubPages查看gh-pages分支的部署进入仓库Settings->Options向下滚动,可以看到效果因为作者自定义了域名,所以地址不是默认的https://xxx.github.io/xxx