区别;1、wharf harbor2、inhabitant dweller3、path trail
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区别;1、wharf harbor2、inhabitant dweller3、path trail相关的知识,希望对你有一定的参考价值。
wharf harbor 仅是同类词的两个基本的,还有很多, 如下面所列.
简单的,你可以理解为:harbor为里可以有很多wharf.
wharf 码头
dock码头
pier码头
jetty码头
port港口
harbor海港
quay码头
quayside码头周围
dockside码头前沿
waterfront水边地
landing stage浮动码头
landing着陆
moor荒野
berth停泊处
The ship steamed into theharbor.
船驶入了港湾。
Theharboris being up with silt.
那海港被淤泥阻塞了。
The pilot steered for theharbor.
领航员掌舵驶向港囗。
It is not right to harbor vindictive feelings.
怀有报复的念头是不对的。
The ship was allowed to unload cargo on thewharf.
那艘船被允许在码头上卸货。
We walked her to thewharfand put her aboard the ship.
我们陪她走到码头,将她安顿到船上。
The mob riotously assembled at the ferrywharf.
暴徒在渡口骚乱地纠集在一起。
One who owns or manages awharf.
码头老板拥有或管理码头者
The ship lies alongside thewharf.
那艘船停靠在码头边。
inhabitant dweller区别:
表达大地方,如星球, 国家的居民时用inhabitant;
表达小地方,如区, 山脚,某些天然洞穴或独特建筑的居民时用dweller;
有时他们可以混用;
A native orinhabitantof Bavaria.
巴伐利亚人巴伐利亚本土人或居民
A native orinhabitantof Europe.
欧洲人出生于欧洲的人,欧洲居民
A native orinhabitantof Geneva, Switzerland.
日内瓦人瑞士日内瓦的本地人或居民
A native orinhabitantof Greece.
希腊人土生土长的希腊人和希腊的居住者
A native orinhabitantof Ethiopia.
埃塞俄比亚人埃塞俄比亚的土著和居民
A native orinhabitantof Haiti.
海地人海地土著居民或本地居民
A native orinhabitantof Latvia.
拉脱维亚人拉脱维亚土著人或拉脱维亚居民
Dwellers here live a happy life now.
现在这里居民的生活很幸福。
The traffic noise is a constant irritation to citydwellers.
车辆的噪音对城市居民是永无止境的骚扰。
Thedwelleris the only architect.
居住者才是唯一的建筑师。
There exist a lot of cavedwellersin this area.
在这个地方有很多穴居者。
path trail区别:
path=通道;
trail=踪迹;
They cleaved apaththrough the wilderness.
他们在荒原中开辟出一条路。
She squelched along the muddypath.
她沿着泥泞小径格吱格吱地走。
He was destined to plod thepathof toil.
他注定要在艰辛的道路上跋涉。
Thepathleads to a hill bare of vegetation.
这条小道通向一座没有草木的小山。
Thepathof civilization is paved with tin cans.
文明的大道,是铺满了空罐头。
Every day he trod the samepathto school.
他每天都走同一条路上学。
The boy hops the ditch and run down thepath.那男孩跳过沟,沿著小路奔去。
The mountainpathis narrow and rugged.
狭隘的山路崎岖不平。
A bullet describes a curvedpathin the air.
子弹在空中作曲线运动。
Thepathled through the trees to the river.
那条小路穿过树林通向河边。
The dogs found thetrailof the rabbit.
猎狗发现了兔子的踪迹。
The hounds found thetrailof the fox.
猎犬发现了狐狸的踪迹。
They were chosen to scout thetrail.
他们被选去探路。
They made atrailof protests against the decision.
他们对该项决定提出了一连串抗议。
A ski trail densely packed with snow.
滑雪道积着一层厚厚的雪的滑雪道
At break of day the hikers were already on thetrail.
黎明时分,那些徒步旅行者已经上路。
Left a trail of broken promises.
留下一串无用的诺言
The lawyer is on thetrailof new proof in the case.
律师正在寻找关于案件的新证据。
The sheriff ordered the suspicious looking stranger to hit thetrail.
警察局长命令样子可疑的陌生人马上走。
wharf是用来在港口里或者河岸上固定平台,让船停靠的。
2.感觉区别不大,字典中解释也基本相同,都可以指居住在某地的人或者是动物。查了下外国人的讨论,也是这样的。参考:http://www.englishforums.com/English/TenantResidentCitizenInhabitant-Dweller/cjpqh/post.htm
http://forum.wordreference.com/showthread.php?t=1599299
3.区别也不大,一般情况下可以混用。
不过在某些特殊情况下,各有自己的含义,比如在一些法律文件中:
https://www.revisor.mn.gov/statutes/?id=169.011
Subd. 6.Bicycle path.
"Bicycle path" means a bicycle facility designed for exclusive or preferential use by persons using bicycles and constructed or developed separately from the roadway or shoulder.
专门用来使用自行车的路,叫做path
Subd. 7.Bicycle route.
The term "bicycle route" means a roadway or shoulder signed to encourage bicycle use.
有标志支持自行车使用的,叫做route
Subd. 8.Bicycle trail.
"Bicycle trail" means a bicycle route or bicycle path developed by the commissioner of natural resources under section 85.016.
由commissioner of natural resources依照 section 85.016建造的route和path,叫做trail
所以我认为,这些细微的区分只有对相关专业人士才有区别,平时使用的时候可以进行同义替换。
CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台
构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台
CI/CD是什么?
- CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法
- CI/CD 的核心概念是持续集成、持续交付和持续部署
- 作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)
持续集成(CI)/持续交付(CD)的优势
持续集成
/持续交付
是现代软件开发周期的基础- 在传统的软件开发方法中,每个功能更新或修复错误都会每隔一段时间进行发布,这显著增加了在部署时耦合更改的机会
持续集成
/持续交付
可以解决所有这些问题,并使整个过程更易于管理和高效。- 在现代软件开发实践中,持续集成(CI)/持续交付(CD)是构建、测试应用程序并将其部署到生产中的基础。
- 持续交付(CD)有助于降低风险,并通过
自动化
来自不同项目开发人员的多个代码更改来实现生产一致性。 - 另一方面,
持续交付
使开发人员能够无缝地将集成代码交付到生产中,从而提供快速有效的自动化流程,以向客户轻松发布新功能和更新 持续集成
/持续交付
管道的优势:- 管理较小的代码更改
- 故障隔离可在短期内防止错误
- 缩短平均解决时间(MTTR)
- 提高测试可靠性
- 加快释放速度
- 减少积压
- 推动客户实现
- 加强团队的透明沟通和责任感
- 降低成本
- 易于维护和更新
- 结论
- 部署CI / CD流程后,您可能会在开发人员工作流程中实现更平滑的过渡
- 关键是,测试质量首先需要在工作流程中引起很多注意,这使您成为其他人可以效仿的灯塔
- 无论您的产品交付有多快和连续,没有质量意识都没有关系
- 当CI / CD管道的更多步骤可以自动化时,质量也意味着更快的质量发布
自动化部署流程图
- 首先,开发人员每天进行代码提交,提交到Git仓库
- 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK, Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程
- 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问 应用
Git Github Gitlab的区别
Git
是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。- 是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Github
是在线的基于Git的代码托管服务。GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,只有付费账户可以创建私有的代码仓库。Gitlab
解决这个问题,可以在上面创建免费的私人repo。
前言:一些自己想说的话
- 关于实验的开头,本意想使用
Docker
部署Jenkins
,但是在调试Maven
和JDK
的时候一直报错 - 从7月8号到7月9号的凌晨4点,一直报错,各种解决方案已经被我翻烂了…各种问题接踵而至…
- 于是带着懵逼询问了专业人士,朋友让我使用传统的方式,好家伙,话不多说上操作
- 用
Docker
部署的流程就放这把,可以直接跳过,只是作为一个笔记!
#下载Jenkins镜像
[root@jenkins ~]# docker pull jenkins/jenkins:lts-jdk11
#创建Jenkins挂载路径
[root@jenkins ~]# mkdir -p /docker/jenkins
#对此目录开放权限,否则容器启动时会报错
[root@jenkins ~]# chmod 777 /docker/jenkins/
#启动容器
[root@jenkins ~]# docker run -itd -p 8080:8080 -p 50000:50000 --restart always -v /docker/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:lts-jdk11
#通过文件形式查看解锁密码
[root@jenkins ~]# cat /docker/jenkins/secrets/initialAdminPassword
8bf67325c495443a869b249d1f4bb853
#通过日志形式查看解锁密码
[root@jenkins ~]# docker logs -f jenkins
8bf67325c495443a869b249d1f4bb853
部署Docker+Jenkins+Git+Harbor流水线自动化CI/CD
CentOS Linux release 7.5.1804 (Core)
- 主机规划
主机 | IP地址 |
---|---|
Git-server | 192.168.100.20 |
Harbor | 192.168.100.30 |
Jenkins | 192.168.100.40 |
安装部署Git
#安装Git
[root@git-server ~]# yum -y install git
[root@git-server ~]# git --version
git version 1.8.3.1
#创建用户并配置密码
[root@git-server ~]# useradd git
[root@git-server ~]# passwd git
#进入Git用户
[root@git-server ~]# su - git
#创建git仓库目录
[git@git-server ~]$ mkdir /home/git/demo.git
[git@git-server ~]$ cd /home/git/demo.git/
#初始化git仓库
[git@git-server demo.git]$ git --bare init
#查看初始化后的仓库
[git@git-server demo.git]$ ls
branches config description HEAD hooks info objects refs
安装Harbor
- Docker具体安装步骤参考我的另一篇博客:Docker基础+Docker安装
#下载harbor安装包
[root@harbor ~]# wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz
[root@harbor ~]# tar xf harbor-offline-installer-v1.9.1.tgz -C /usr/src/
#启动Docker并开机自启
[root@harbor ~]# systemctl start docker && systemctl enable docker
#当前已经安装Docker
[root@harbor ~]# docker --version
Docker version 20.10.7, build f0df350
#安装Docker-compose
#由于官方镜像是国外的太慢,使用国内镜像下载
[root@git ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#为compose授权
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose
[root@harbor ~]# docker-compose version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
#安装并运行harbor
[root@harbor ~]# cd /usr/src/harbor/
#编辑配置文件
[root@harbor harbor]# vim harbor.yml
#主机修改为本机IP地址
hostname: 192.168.100.30
#检测并创建harbor需要文件
[root@harbor harbor]# ./prepare
#安装harbor
[root@harbor harbor]# ./install.sh
Now you should be able to visit the admin portal at http://192.168.100.30
#添加http仓库信任,默认不信任镜像仓库
[root@harbor ~]# vim /etc/docker/daemon.json
{"insecure-registries":["192.168.100.30"]}
[root@harbor ~]# systemctl restart docker
- 新建项目
- 查看推送镜像要求
#下载官方Tomcat镜像
[root@harbor ~]# docker pull tomcat
#根据网站提示为Tomcat镜像打标签
[root@harbor ~]# docker tag tomcat:latest 192.168.100.30/pakho/tomcat:v1
#登陆Harbor镜像仓库
[root@harbor ~]# docker login 192.168.100.30 -uadmin -pHarbor12345
#上传镜像
[root@harbor ~]# docker push 192.168.100.30/pakho/tomcat:v1
- 刷新网页查看
- 镜像存在,说明上传镜像成功!
- 镜像存在,说明上传镜像成功!
安装Jenkins
- 测试能否正常拉取代码
#安装Git测试是否能够拉取代码
[root@jenkins ~]# yum -y install git
#拉取Java项目
[root@jenkins ~]# git clone https://github.com/407777853/java-demo
#修改项目默认仓库路径
[root@jenkins ~]# cd java-demo/
[root@jenkins java-demo]# vim .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@192.168.100.20:/home/git/demo.git #指明本地镜像仓库
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
#添加本地版本仓库
[root@jenkins java-demo]# git add .
#声明上传作者及邮箱
[root@jenkins java-demo]# git config --global user.email "1064981253@qq.com"
[root@jenkins java-demo]# git config --global user.name "pakho"
#提交代码到本地仓库,-m 一般为开发人员本次修改的BUG注释
[root@jenkins java-demo]# git commit -m "java"
#上传代码至远程Git仓库,并为本项目主分支
[root@jenkins java-demo]# git push origin master
#创建秘钥对
[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id git@192.168.100.20
#执行拉取免密测试
[root@jenkins ~]# mkdir test
[root@jenkins ~]# cd test/
[root@jenkins test]# git clone git@192.168.100.20:/home/git/demo.git
Cloning into 'demo'...
remote: Counting objects: 183, done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 183 (delta 7), reused 173 (delta 4)
Receiving objects: 100% (183/183), 1.12 MiB | 0 bytes/s, done.
Resolving deltas: 100% (7/7), done.
- 安装
Jenkins
- 提前安装
Docker
,参照:Docker基础+Docker安装
- 提前安装
[root@jenkins ~]# docker --version
Docker version 20.10.7, build f0df350
#安装Java
[root@jenkins ~]# tar xf jdk-8u291-linux-x64.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
#将JDK改名为Java
[root@jenkins local]# mv jdk1.8.0_291/ jdk
#添加环境变量
[root@jenkins ~]# vim /etc/bashrc
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
#刷新配置文件
[root@jenkins ~]# source /etc/bashrc
#验证是否安装成功
[root@jenkins ~]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
#安装Maven
[root@jenkins ~]# yum install -y maven
#官网下载Jenkins最新安装包
[root@jenkins ~]# wget https://get.jenkins.io/war-stable/2.289.2/jenkins.war
#前台运行Jenkins,如果希望后台运行可以安装Tomcat或其他操作
[root@jenkins ~]# java -jar jenkins.war
#运行中会产生默认Jenkins密码
31cce3f846b54efa8d9f150a468cbc92
#通过文件夹查看密码
[root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
31cce3f846b54efa8d9f150a468cbc92
#Jenkins添加信任Harbor仓库
[root@jenkins ~]# vim /etc/docker/daemon.json
{"insecure-registries":["192.168.100.30"]
[root@jenkins ~]# systemctl restart docker
#浏览器访问
http://192.168.100.40:8080
- 登录进入以后,将默认
Jenkins
下载源替换为国内源
#Jenkins.war路径下有个隐藏文件
[root@jenkins ~]# ls -a
.jenkins
[root@jenkins ~]# cd .jenkins/updates/
[root@jenkins updates]# sed -i 's/http:\\/\\/updates.jenkinsci.org\\/download/https:\\/\\/mirrors.tuna.tsinghua.edu.cn\\/jenkins/g' default.json && sed -i 's/http:\\/\\/www.google.com/https:\\/\\/www.baidu.com/g' default.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
#提交后浏览器输入重启Jenkins
http://192.168.100.40:8080/restart
- 安装插件
PS
:由于实验做了无数遍,可能清除环境不是很彻底,有些默认的插件没有清理干净- 需要下载安装
Git
和Pipeline
插件,我这里以为安装了Docker
在Jenkins
上需要安装Docker
版本的,可以忽略!
- 创建凭据
#查看Jenkins主机私钥
[root@jenkins ~]# cat .ssh/id_rsa
- 生成凭据
- 新建项目
- 添加流水线脚本
node {
// 拉取代码
stage('Git Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '70ddbc0b-8fb4-4a17-8d70-5bb3a720da7d', url: 'git@192.168.100.20:/home/git/demo.git']]])
}
// 代码编译
stage('Maven Build') {
sh '''
/usr/bin/mvn clean package -Dmaven.test.skip=true
'''
}
// 项目打包到镜像并推送到镜像仓库
stage('Build and Push Image') {
sh '''
REPOSITORY=192.168.100.30/pakho/tomcat-java-demo:${Branch}
echo '
FROM 192.168.100.30/pakho/tomcat:v1
MAINTAINER pakho<1064981253@qq.com>
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
' > Dockerfile
docker build -t $REPOSITORY .
docker login 192.168.100.30 -u admin -p Harbor12345
docker push $REPOSITORY
'''
}
// 部署到Docker主机
stage('Deploy to Docker') {
sh '''
REPOSITORY=192.168.100.30/pakho/tomcat-java-demo:${Branch}
docker rm -f java-demo |true
docker image rm $REPOSITORY |true
docker login 192.168.100.30 -u admin -p Harbor12345
docker run -d --name java-demo -p 88:8080 $REPOSITORY
'''
}
}
- 部署测试
#同时Jenkins日志抓取到部署成功的日志信息
2021-07-09 15:06:37.699+0000 [id=199] INFO o.j.p.workflow.job.WorkflowRun#finish: JAVA #1 completed: SUCCESS
- 模拟程序员修改代码后的再次构建
#基于刚才的测试路径
[root@jenkins demo]# pwd
/root/test/demo
#修改代码
[root@jenkins demo]# vim src/main/resources/templates/index.ftl
whatToType: "学生管理系统v2",
[root@jenkins demo]# git add .
[root@jenkins demo]# git config --global user.email "1064981253@qq.com"
[root@jenkins demo]# git config --global user.name "pakho"
[root@jenkins demo]# git commit -m "v2"
[master f0150ea] v2
1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins demo]# git push origin master
Counting objects: 13, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 553 bytes | 0 bytes/s, done.
Total 7 (delta 3), reused 0 (delta 0)
To git@192.168.100.20:/home/git/demo.git
f0150ea..6663acd master -> master
- 执行二次构建
- 至此,实验完成!
- 镜像仓库
Harbor
上也会有对应构建的镜像
关于实验的一些总结
- 实验做了很久,失败了无数次,环境搭了无数次,关键在于脚本的编写
- 网上有很多相似的实验,但是脚本拷贝过来修改了无数次,大都报错,对于脚本修改的地方,主要为
Dockerfile
文件 - 之前采用
cat
<<EOF
的形式,一直在部署Docker
时报错,改为echo
方式,成功执行!
以上是关于区别;1、wharf harbor2、inhabitant dweller3、path trail的主要内容,如果未能解决你的问题,请参考以下文章