使用管道将文件夹从Bitbucket存储库推送到公共服务器

cli*_*int 5 ftp bitbucket bitbucket-pipelines angular

我在Bitbucket存储库中启用了管道,每次构建后,我都需要运行Angular 2构建并在服务器中部署dist文件夹(在执行build命令后创建)。

我的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
Run Code Online (Sandbox Code Playgroud)

我在Internet上找到了以下代码片段:

- 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
Run Code Online (Sandbox Code Playgroud)

我使用pem文件通过SSH客户端登录到服务器。那么上面的代码片段有用吗?如果没有,如何在上述命令中使用pem文件?

为了更加清楚,npm run build:prod命令实际上创建了dist文件夹,该文件夹需要部署在上述位置的服务器上。我该如何实现?

Nik*_*y_R 5

1.将其写入bitbucket-pipelines.yml

图片:node:8.7.0
管道:
  默认:
    - 步:
        名称:安装
        快取:
          -节点
        脚本:
          -npm安装
    - 步:
        名称:建筑
        脚本:
          -npm install -g @ angular / cli#需要安装angular-cli进行构建
          -npm运行构建--aot
    - 步:
        名称:部署
        脚本:
          -易于获取更新
          -apt安装ncftp
          -ncftpput -v -u“ $ FTP_USERNAME” -p“ $ FTP_PASSWORD” -R $ FTP_HOST $ FTP_SITE_ROOT dist / *
          -echo完成将/ dist文件上传到$ FTP_HOST $ FTP_SITE_ROOT

2.配置您的bitbucket环境变量

在此处输入图片说明


Tob*_*ray 2

不是答案

我认为 Git FTP 不是您想要的。如果您查看他们的网站,您会发现它是一个产品的根本原因是仅部署已更改的文件。我怀疑dist每次构建时都会完整地重新创建您的文件夹。即使事实并非如此,他们也表示:

它通过将提交 ID 存储在服务器上的日志文件中来跟踪上传的文件。它使用 Git 来确定哪些本地文件已更改。

Bitbucket Pipelines 实例是短暂的,因此没有地方可以存储日志。git-ftp这根本就削弱了使用的动机。我想你可以将日志推到某个地方并检索它,但如果这值得你花时间,我会感到惊讶。

回答

我不认为你想要做的事情有什么特别之处 - Angular 和 Git 只是碰巧参与其中,但你只是试图将文件夹从一台机器移动到另一台机器。有大量的软件产品可以帮助您实现这一点,但是scp,代表安全复制,是许多 Linux 发行版中包含的更流行的产品之一(您正在构建什么 Docker 容器?)。您可以在这里看到很多示例,但本质上我认为您想要做的可以归结为:

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

(示例取自StackOverflow 问题

请注意,您必须确保您要访问的服务器可公开访问,否则无法从管道构建路由到目标计算机(据我所知)