老铁们,大家好,相信还有很多朋友对于bitbucket tag和GitHub 的 Fork 是什么意思的相关问题不太懂,没关系,今天就由我来为大家分享分享bitbucket tag以及GitHub 的 Fork 是什么意思的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
Mac下配置node.js的开发环境阿里云,daocloud的docker是啥os/docker 注意事项Jenkins 环境变量GitHub 的 Fork 是什么意思Mac下配置node.js的开发环境##一、搭建本地开发环境
1、[安装HomeBrew](http://brew.sh/index_zh-cn.html)
安装命令
>/usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
卸载命令
>ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
2、[使用HomeBrew安装node.js](http://nodejs.cn/download/package-manager/#osx)
3、安装express
>npminstall-gexpress
>
>npminstall-gexpress-generator
4、安装WebStorm
[WebStorm11](https://pan.baidu.com/s/1c1PeBao)(2016.1)
破解方法:启动选择Licenseserver,输入“http://idea.qinxi1992.cn”。
5、[使用HomeBrew安装并启动MongoDB](http://blog.csdn.net/fsw0723/article/details/17040999)
####注意事项及相关报错:
1、通过express-V查看express版本号
express版本号小于4.0,使用nodeapp运行。
express版本号大于4.0,使用npmstart或nodebin/www运行
2、brewinstallmongodb报错“Error:Permissiondenied-/usr/local/var”
在“/usr/local/”下创建文件夹“var”即可
##二、配置服务端
1、[配置并启动服务器](https://aws.amazon.com/cn/?sc_channel=PS&sc_campaign=acquisition_CN&sc_publisher=baidu&sc_medium=brandzone&sc_content=pc&sc_detail=title&sc_category=pc&sc_segment=101&sc_matchtype=exact&sc_country=CN)
2、连接服务器
1)、使用密钥连接
>ssh-i~/.ssh/server.pemec2-user@{公共ip}
2)、使用密码登陆,如没有开启密码登陆方式,参考三
>sshec2-user@{公有ip}
3、启用密码登陆方式
1)、创建root密码:
>sudopasswdroot
2)、切换root身份,并编辑sshd_config文件
>suroot
>
>vim/etc/ssh/sshd_config
搜索PasswordAuthenticationno,把no改为yes。
3)、重启sshd
>/sbin/servicesshdrestart
4)、给用户ec2-user添加密码
>passwdec2-user
5)、新开一个窗口,验证登录密码
>sshec2-user@{公有ip}
4)、安装node.js、npm
>gitclonehttps://github.com/nodejs/node.git
>
>cdnode
>
>gittag-l
>
>gitcheckoutv6.3.0
>
>./configure
>
>make
>
>sudomakeinstall
5、安装express
修改sudoers文件
>suroot
>vim/etc/sudoers
找到“secure_path”,然后添加node、npm的安装路径“:/usr/local/bin”
安装express、express-generator
>sudonpminstall-gexpress
>
>sudonpminstall-gexpress-generator
5)、[安装、启动mongodb](https://docs.mongodb.com/master/tutorial/install-mongodb-on-amazon/?_ga=1.67701784.882863290.1470383187)
####注意事项:
1、启动亚马逊服务器之前,先选择地区,默认是美国东部的佛吉尼亚北部(建议选择亚太区的)。启动之后不可更改。
2、WebStorm程序默认使用端口3000,建议直接开启服务器的端口3000。
##三、服务端运行
1、用WebStorm创建一个NodeJsExpressApp的项目
不需要写什么,空的就好。
2、上传到服务端,介绍四种上传方式。
+用WebStorm连接服务端
第一步、Tools->Deployment->configruation
第二步、配置Connection
![image](http://upload-images.jianshu.io/upload_images/2477695-37378cc996619eb8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第三步、配置Mappings
![image](http://upload-images.jianshu.io/upload_images/2477695-cc0bb70d28406924.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
+通过gitpush到oschina、bitbucket等,再通过gitpull到服务器
只需要在Mac端、服务端安装git即可。推荐[Git@OSC](https://git.oschina.net/),可免费创建100个项目。
+在亚马逊云服务器配置GitLab
[服务端配置GItLab,选择“CentOS6”](https://about.gitlab.com/downloads/#centos6)
安装完成在浏览器输入服务器地址,根据提示输入root密码。如果出现502错误,检查服务器8080端口是否开启。亚马逊配置的Gitlab不是很稳定,不推荐。
+使用ftp工具
每次上传都是全部,速度很慢,不推荐。
3、运行并查看效果
终端连接服务器,并进入项目目录,输入nodeapp,然后在浏览器输入服务器地址,打开“ExpressWelcomtoExpress”界面。(WebStorm工程端口号默认3000)
阿里云,daocloud的docker是啥os/docker 注意事项Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括Google、Microsoft、VMware等业界行业领导者。同时,Docker在开发者社区也是一石激起千层浪,许多如我之码农纷纷开始关注、学习和使用Docker,许多企业,尤其是互联网企业,也在不断加大对Docker的投入,大有掀起一场容器革命之势。
Docker镜像命名解析
镜像是Docker最核心的技术之一,也是应用发布的标准格式。无论你是用dockerpullimage,或者是在Dockerfile里面写FROMimage,从Docker官方Registry下载镜像应该是Docker操作里面最频繁的动作之一了。那么在我们执行dockerpullimage时背后到底发生了什么呢?在回答这个问题前,我们需要先了解下docker镜像是如何命名的,这也是Docker里面比较容易令人混淆的一块概念:Registry,Repository,TagandImage。
下面是在本地机器运行dockerimages的输出结果:
我们可以发现我们常说的“ubuntu”镜像其实不是一个镜像名称,而是代表了一个名为ubuntu的Repository,同时在这个Repository下面有一系列打了tag的Image,Image的标记是一个GUID,为了方便也可以通过Repository:tag来引用。
那么Registry又是什么呢?Registry存储镜像数据,并且提供拉取和上传镜像的功能。Registry中镜像是通过Repository来组织的,而每个Repository又包含了若干个Image。
Registry包含一个或多个Repository
Repository包含一个或多个Image
Image用GUID表示,有一个或多个Tag与之关联
那么在哪里指定Registry呢?让我们再拉取一个更完整命名的镜像吧:
上面我试图去拉取一个ubuntu镜像,并且指定了Registry为我本机搭建的私有Registry。下面是DockerCLI中pull命令的代码片段(docker/api/client/command.go中的CmdPull函数)
在运行时,上面的taglessRemote变量会被传入localhost:5000/ubuntu。上面代码试图从taglessRemote变量中解析出Registry的地址,在我们的例子中,它是localhost:5000。
那我们回过头再来看看下面这个耳熟能详的pull命令背后的故事吧:
我们跟着上面的示例代码,进一步进入解析函数ResolveRepositoryName的定义代码片段(docker/registry/registry.go)
我们发现,DockerCLI会判断传入的taglessRemote参数的第一部分中是否包含’.’或者':’,如果存在则认为第一部分是Registry地址,否则会使用Docker官方默认的Registry(即index.docker.io其实这里是一个IndexServer,和Registry的区别留在后面再去深究吧),即上面代码中高亮的部分。背后的故事还没有结束,如果你向DockerHub上传过镜像,应该记得你上传的镜像名称格式为user-name/repository:tag,这样用户Bob和用户Alice可以有相同名称的Repository,通过用户名前缀作为命名空间隔离,比如Bob/ubuntu和Alice/ubuntu。官方镜像是通过用户名library来区分的,具体代码片段如下(docker/api/client/command.go中的CmdPull函数)
我们回过头再去看Docker命令行中解析Tag的逻辑吧(docker/api/client/command.go中的CmdPull函数):
代码会试着在用户输入的Image名称中找’:‘后面的tag,如果不存在,会使用默认的‘DEFAULTTAG’,即‘latest’。
也就是说在我们的例子里面,命令会被解析为下面这样(注意,下面的命令不能直接运行,因为DockerCLI不允许明确指定官方Registry地址)
配置RegistryMirror
Docker之所以这么吸引人,除了它的新颖的技术外,围绕官方Registry(DockerHub)的生态圈也是相当吸引人眼球的地方。在DockerHub上你可以很轻松下载到大量已经容器化好的应用镜像,即拉即用。这些镜像中,有些是Docker官方维护的,更多的是众多开发者自发上传分享的。而且你还可以在DockerHub中绑定你的代码托管系统(目前支持Github和Bitbucket)配置自动生成镜像功能,这样DockerHub会在你代码更新时自动生成对应的Docker镜像,是不是很方便?
不幸的是DockerHub并没有在国内放服务器或者用国内的CDN,下载个镜像20分钟最起码,我等码农可耗不起这么长时间,老板正站在身后催着我们搬运代码呢。为了克服跨洋网络延迟,一般有两个解决方案:一是使用私有Registry,另外是使用RegistryMirror,我们下面一一展开聊聊.
方案一就是搭建或者使用现有的私有Registry,通过定期和DockerHub同步热门的镜像,私有Registry上保存了一些镜像的副本,然后大家可以通过dockerpullprivate-registry.com/user-name/ubuntu:latest,从这个私有Registry上拉取镜像。因为这个方案需要定期同步DockerHub镜像,因此它比较适合于使用的镜像相对稳定,或者都是私有镜像的场景。而且用户需要显式的映射官方镜像名称到私有镜像名称,私有Registry更多被大家应用在企业内部场景。私有Registry部署也很方便,可以直接在DockerHub上下载Registry镜像,即拉即用,具体部署可以参考官方文档。
方案二是使用RegistryMirror,它的原理类似于缓存,如果镜像在Mirror中命中则直接返回给客户端,否则从存放镜像的Registry上拉取并自动缓存在Mirror中。最酷的是,是否使用Mirror对Docker使用者来讲是透明的,也就是说在配置Mirror以后,大家可以仍然输入dockerpullubuntu来拉取DockerHub镜像,除了速度变快了,和以前没有任何区别。
了以更便捷的方式对接DockerHub生态圈,使用RegistryMirror自然成为我的首选。接下来我就和大家一起看看Docker使用Mirror来拉取镜像的过程。下面的例子,我使用的是由DaoCloud提供的RegistryMirror服务,在申请开通Mirror服务后你会得到一个Mirror地址,然后我们要做的就是把这个地址配置在DockerServer启动脚本中,重启Docker服务后Mirror配置就生效了(如何获得Mirror服务可以参考本篇文章的附录)
Ubuntu下配置DockerRegistryMirror的命令如下:
sudoecho“DOCKER_OPTS=\”\$DOCKER_OPTS–registry-mirror=http://your-id.m.daocloud.io-d\””>>/etc/default/docker
sudoservicedockerrestart
如果你是用的Boot2Docker,配置命令为:
#进入Boot2DockerStartShell,并执行
sudosu
echo“EXTRA_ARGS=\”–registry-mirror=http://your-id.m.daocloud.io\””>>/var/lib/boot2docker/profile
exit
#重启Boot2Docker
配置好RegistryMirror后,就可以拉取Docker镜像了,经我测试,使用DaoCloud的Mirror后,拉取常见镜像的速度可以达到1.5M左右,具体速度在你的网络环境可能会略有不同。
我们来看看配置了RegistryMirror后,Docker拉取镜像的过程吧。首先是CLI拉取镜像命令代码片段(docker/api/client/command.go中的CmdPull函数)
首先,DockerCLI会试图获得授权,在我们的例子中会向https://index.docker.io/v1请求认证,认证完成后,认证服务器会返回一个对应的Token。注意,这里用户认证与配置的RegistryMirror完全无关,这样我们就不用担心使用Mirror的安全问题了。接着DockerCLI会调用DockerServer(即Dockerdaemon程序)的创建镜像命令,DockerServer随之会执行具体的拉取镜像动作,代码片段如下(docker/graph/pull.go的pullRepository函数)
从代码中可以发现,如果配置了RegistryMirror,DockerServer会首先从Mirror中拉取镜像,如果Mirror拉取失败会退而求其次从镜像中指定的Registry拉取。大家又可以松口气了,就算配置的RegistryMirror失效,也不会影响用户拉取镜像,只不过速度就。。。
镜像拉下来后,就可以运行容器了
Jenkins 环境变量BRANCH_NAMEForamultibranchproject,thiswillbesettothenameofthebranchbeingbuilt,forexampleincaseyouwishtodeploytoproductionfrommasterbutnotfromfeaturebranches;ifcorrespondingtosomekindofchangerequest,thenameisgenerallyarbitrary(refertoCHANGE_IDandCHANGE_TARGET).
BRANCH_IS_PRIMARYForamultibranchproject,iftheSCMsourcereportsthatthebranchbeingbuiltisaprimarybranch,thiswillbesetto"true";elseunset.SomeSCMsourcesmayreportmorethanonebranchasaprimarybranchwhileothersmaynotsupplythisinformation.
CHANGE_IDForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothechangeID,suchasapullrequestnumber,ifsupported;elseunset.
CHANGE_URLForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothechangeURL,ifsupported;elseunset.
CHANGE_TITLEForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothetitleofthechange,ifsupported;elseunset.
CHANGE_AUTHORForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettotheusernameoftheauthoroftheproposedchange,ifsupported;elseunset.
CHANGE_AUTHOR_DISPLAY_NAMEForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothehumannameoftheauthor,ifsupported;elseunset.
CHANGE_AUTHOR_EMAILForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettotheemailaddressoftheauthor,ifsupported;elseunset.
CHANGE_TARGETForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothetargetorbasebranchtowhichthechangecouldbemerged,ifsupported;elseunset.
CHANGE_BRANCHForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothenameoftheactualheadonthesourcecontrolsystemwhichmayormaynotbedifferentfromBRANCH_NAME.ForexampleinGitHuborBitbucketthiswouldhavethenameoftheoriginbranchwhereasBRANCH_NAMEwouldbesomethinglikePR-24.
CHANGE_FORKForamultibranchprojectcorrespondingtosomekindofchangerequest,thiswillbesettothenameoftheforkedrepoifthechangeoriginatesfromone;elseunset.
TAG_NAMEForamultibranchprojectcorrespondingtosomekindoftag,thiswillbesettothenameofthetagbeingbuilt,ifsupported;elseunset.
TAG_TIMESTAMPForamultibranchprojectcorrespondingtosomekindoftag,thiswillbesettoatimestampofthetaginmillisecondssinceUnixepoch,ifsupported;elseunset.
TAG_UNIXTIMEForamultibranchprojectcorrespondingtosomekindoftag,thiswillbesettoatimestampofthetaginsecondssinceUnixepoch,ifsupported;elseunset.
TAG_DATEForamultibranchprojectcorrespondingtosomekindoftag,thiswillbesettoatimestampintheformatasdefinedbyjava.util.Date#toString()(e.g.,WedJan100:00:00UTC2020),ifsupported;elseunset.
JOB_DISPLAY_URLURLthatwillredirecttoaJobinapreferreduserinterface
RUN_DISPLAY_URLURLthatwillredirecttoaBuildinapreferreduserinterface
RUN_ARTIFACTS_DISPLAY_URLURLthatwillredirecttoArtifactsofaBuildinapreferreduserinterface
RUN_CHANGES_DISPLAY_URLURLthatwillredirecttoChangelogofaBuildinapreferreduserinterface
RUN_TESTS_DISPLAY_URLURLthatwillredirecttoTestResultsofaBuildinapreferreduserinterface
CIStaticallysettothestring"true"toindicatea"continuousintegration"executionenvironment.
BUILD_NUMBERThecurrentbuildnumber,suchas"153".
BUILD_IDThecurrentbuildID,identicaltoBUILD_NUMBERforbuildscreatedin1.597+,butaYYYY-MM-DD_hh-mm-sstimestampforolderbuilds.
BUILD_DISPLAY_NAMEThedisplaynameofthecurrentbuild,whichissomethinglike"#153"bydefault.
JOB_NAMENameoftheprojectofthisbuild,suchas"foo"or"foo/bar".
JOB_BASE_NAMEShortNameoftheprojectofthisbuildstrippingofffolderpaths,suchas"foo"for"bar/foo".
BUILD_TAGStringof"jenkins-${JOB_NAME}-${BUILD_NUMBER}".Allforwardslashes("/")intheJOB_NAMEarereplacedwithdashes("-").Convenienttoputintoaresourcefile,ajarfile,etcforeasieridentification.
EXECUTOR_NUMBERTheuniquenumberthatidentifiesthecurrentexecutor(amongexecutorsofthesamemachine)that’scarryingoutthisbuild.Thisisthenumberyouseeinthe"buildexecutorstatus",exceptthatthenumberstartsfrom0,not1.
NODE_NAMENameoftheagentifthebuildisonanagent,or"master"ifrunonmaster.
NODE_LABELSWhitespace-separatedlistoflabelsthatthenodeisassigned.
WORKSPACETheabsolutepathofthedirectoryassignedtothebuildasaworkspace.
WORKSPACE_TMPAtemporarydirectoryneartheworkspacethatwillnotbebrowsableandwillnotinterferewithSCMcheckouts.Maynotinitiallyexist,sobesuretocreatethedirectoryasneeded(e.g.,mkdir-ponLinux).Notdefinedwhentheregularworkspaceisadriveroot.
JENKINS_HOMETheabsolutepathofthedirectoryassignedonthemasternodeforJenkinstostoredata.
JENKINS_URLFullURLofJenkins,likehttp://server:port/jenkins/(note:onlyavailableifJenkinsURLsetinsystemconfiguration).
BUILD_URLFullURLofthisbuild,likehttp://server:port/jenkins/job/foo/15/(JenkinsURLmustbeset).
JOB_URLFullURLofthisjob,likehttp://server:port/jenkins/job/foo/(JenkinsURLmustbeset).
GIT_COMMITThecommithashbeingcheckedout.
GIT_PREVIOUS_COMMITThehashofthecommitlastbuiltonthisbranch,ifany.
GIT_PREVIOUS_SUCCESSFUL_COMMITThehashofthecommitlastsuccessfullybuiltonthisbranch,ifany.
GIT_BRANCHTheremotebranchname,ifany.
GIT_LOCAL_BRANCHThelocalbranchnamebeingcheckedout,ifapplicable.
GIT_CHECKOUT_DIRThedirectorythattherepositorywillbecheckedoutto.ThiscontainsthevaluesetinCheckouttoasub-directory,ifused.
GIT_URLTheremoteURL.Iftherearemultiple,willbeGIT_URL_1,GIT_URL_2,etc.
GIT_COMMITTER_NAMETheconfiguredGitcommittername,ifany,thatwillbeusedforFUTUREcommitsfromthecurrentworkspace.ItisreadfromtheGlobalConfiguser.nameValuefieldoftheJenkinsConfigureSystempage.
GIT_AUTHOR_NAMETheconfiguredGitauthorname,ifany,thatwillbeusedforFUTUREcommitsfromthecurrentworkspace.ItisreadfromtheGlobalConfiguser.nameValuefieldoftheJenkinsConfigureSystempage.
GIT_COMMITTER_EMAILTheconfiguredGitcommitteremail,ifany,thatwillbeusedforFUTUREcommitsfromthecurrentworkspace.ItisreadfromtheGlobalConfiguser.emailValuefieldoftheJenkinsConfigureSystempage.
GIT_AUTHOR_EMAILTheconfiguredGitauthoremail,ifany,thatwillbeusedforFUTUREcommitsfromthecurrentworkspace.ItisreadfromtheGlobalConfiguser.emailValuefieldoftheJenkinsConfigureSystempage.
MERCURIAL_REVISIONFullIDofrevisioncheckedout.
MERCURIAL_REVISION_SHORTAbbreviatedIDofrevisioncheckedout.
MERCURIAL_REVISION_NUMBERNumberofrevisioncheckedout(notportableacrossclones).
MERCURIAL_REVISION_BRANCHBranchofrevisioncheckedout,ifnotcheckingoutbybranchhead.
MERCURIAL_REPOSITORY_URLURLofrepository.
GitHub 的 Fork 是什么意思GitHub中Fork即是服务端的仓库克隆,包含了原来的仓库(即upstreamrepository,上游仓库)所有内容,如分支、Tag、提交;代码托管服务(如Github、BitBucket)提供了方便的完成Fork操作的功能(在仓库页面点一下Fork按钮)。这样有了一个你自己的可以自由提交的仓库,然后可以通过的PullRequest把你的提交贡献回原仓库。
而对于原仓库Owner来说,鼓励别人Fork自己的仓库,通过PullRequest给自己的仓库做贡献,也能提高了自己仓库的知名度。
关于本次bitbucket tag和GitHub 的 Fork 是什么意思的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
本文地址:http://www.cj8845.cn/13473.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。