我的Bitbucket存储库中启用了管道,我需要运行Angular 2构建并在每次构建后部署dist文件夹(在执行构建命令后创建)。
我在bitbucket-pipelines.yml文件中有以下内容:
image: node:4.6.0
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- npm install
- npm run build:prod
我在互联网上找到了这段代码:
- apt-get update
- apt-get -qq install git-ftp
- git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD ftp://123.456.789.123/timount/angular_app
我使用pem文件通过SSH客户端登录我的服务器。那么上面的代码片段有用吗?如果没有,我如何在上面的命令中使用pem文件?
为了更清楚,npm run build:prod
命令实际上创建了dist文件夹,需要在上述位置的服务器上部署。我怎样才能做到这一点?
答案 0 :(得分:5)
image: node:8.7.0 pipelines: default: - step: name: Installation caches: - node script: - npm install - step: name: Building script: - npm install -g @angular/cli #need to install angular-cli to make build - npm run build --aot - step: name: Deployment script: - apt-get update - apt-get install ncftp - ncftpput -v -u "$FTP_USERNAME" -p "$FTP_PASSWORD" -R $FTP_HOST $FTP_SITE_ROOT dist/* - echo Finished uploading /dist files to $FTP_HOST$FTP_SITE_ROOT
答案 1 :(得分:2)
我认为Git FTP不是你想要的。如果你看一下their website产品的原因就是只部署更改的文件。我怀疑每次构建时都会重新创建dist
文件夹。即使情况并非如此,他们也会说:
通过将提交ID存储在日志中来跟踪上传的文件 服务器上的文件。它使用Git来确定哪些本地文件 改变。
Bitbucket Pipelines实例是短暂的,因此无处存储日志。这破坏了使用git-ftp
的动机。我想你可以将日志推到某个地方并检索它,但如果值得花时间,我会感到惊讶。
我认为你想要做的事情并没有什么特别之处 - Angular和Git恰好参与其中,但你只是想把一个文件夹从一台机器移到另一台机器上。有大量的软件产品可以帮助您,但scp
代表安全复制,是许多Linux发行版中包含的更受欢迎的软件产品之一(您正在构建什么Docker容器)关?)。你可以看到很多例子here,但基本上我认为你想做的事情归结为:
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
(取自this StackOverflow question)
的例子请注意,您必须确保您要访问的服务器是公共可访问的,否则无法从Pipelines构建路由到目标计算机(据我所知)
答案 2 :(得分:0)
正如我在update()
中发布的那样,虽然git-ftp
仅设计为部署跟踪的文件更改,但实际上可以在每次提交时部署整个dist
文件夹,即使这些文件未被追踪。
您首先需要在仓库的根目录中创建一个名为.git-ftp-include
的文件,并在dist文件夹的路径中添加一行,以确保将!
添加到该行的开头:
!.vuepress/dist/
然后运行以下命令:
git ftp push --all --syncroot .vuepress/dist/
--all
上传所有文件(甚至没有更改的文件),而--syncroot
仅上传指定文件夹中的文件(将它们上传到根文件夹)。