我想使用bitbucket作为本地服务器和我要部署到的实时服务器之间的中间件。
我正在使用windows服务器2012和iis 8。我正在做一个ASP.NET MVC 5项目。
基本上,我希望重新创建Azure的相同工作流,以实现持续集成:
在本地处理应用程序,然后将更改提交到bitbucket中的master(不一定)分支,服务器随后将与master分支同步以反映更改。
我假设起点是在本地和live服务器上都有一个bitbucket库的副本,但是我很难把本地和live服务器链接到bitbucket。
2条答案
按热度按时间s5a0g9ez1#
以下是场景:您有一个. NET核心应用程序,它位于Bitbucket存储库中,您使用IIS将其托管在Windows服务器上,并且您希望使用Bitbucket管道设置CI/CD。2如果是这种情况,请继续阅读。
在你过于兴奋之前,请确保已经满足了以下先决条件:
首先,在项目的根目录下创建一个
bitbucket-pipelines.yml
文件。在文件的顶部指定你想要使用的镜像。在这种情况下,选择dotnet/core/sdk:3.1镜像,它允许你在后面的步骤中运行dotnet命令。
然后使用pipelines关键字,设置管道中的第一步。
default关键字设置了一个默认步骤,如果分支名称不匹配或文件中没有指定的分支,该步骤将执行。如果您希望将步骤限制在某些分支,您可以使用branches关键字进行指定,如下所示。
step关键字引入了管道中的第一步,并在script下运行列表中的命令,name只是你给步骤的一个名字。使用缓存来缓存外部依赖项并加快构建时间。你可以阅读更多关于缓存here的信息。
接下来,运行dotnet命令来恢复、构建和发布您的项目。$BITBUCKET_CLONE_DIR是一个环境变量,它指示管道运行时项目被克隆的路径。为了确保发布的文件在该目录中,我将publish命令中的输出设置为克隆目录中名为"release"的目录($BITBUCKET_CLONE_DIR/release)。
对象是在步骤中创建的已保存文件。对象可以从一个步骤传递到另一个步骤。您需要在下一步中使用对象将其移动到服务器。
在第二步中,将使用deployment关键字,以便该步骤使用特定于该环境的配置运行。您可以在资料档案库设置中为每个部署设置变量。管道atlassian/scp-deploy使用scp(安全复制协议)将发布的文件移动到服务器。该管道需要一些必要的参数才能通过SSH连接到服务器。
此管道的文档可在here中找到。
SSH密钥将另存为资料档案库设置并添加到默认位置,scp管道会自动检查并使用该位置(如果存在)。该管道有一个可选的SSH_KEY参数,允许您使用特定密钥。如果使用此方法,则需要首先将专用密钥编码为base64。
在最后一步中,需要在服务器上执行批处理脚本。这是必要的,因为在将管道发布的文件移动到服务器中的项目目录之前,我们需要停止IIS服务,并在完成此操作后重新启动IIS。
在我的例子中,我需要运行一个批处理脚本,因为Windows服务器版本不支持运行Bash脚本,并且必须创建一个自定义管道才能这样做。(服务器必须安装WSL).不过,如果你和我在同一条船上,您可以使用我创建的accessefm/bat-script-runner管道或创建您自己的自定义管道。创建自定义管道的文档可以在here中找到。
就是这样!一个简单的解决方案,只使用Bitbucket管道将. NET核心应用程序部署到服务器上。请记住,这是一个基本的示例,您可能需要增强管道,以便按照您的团队标准工作。
Answer credit Miguel A. Delgado
cu6pst1q2#
你应该用Jenkins。
我使用Jenkins创建了一个“自动夜间构建”,它从我的BitBucket repo中提取文件,运行构建,然后将这些文件移动到服务器。
它是免费的,而且它很棒,很容易设置!
https://jenkins.io/