使用Bitbucket上的git将应用部署到Heroku

86

我想使用git在bitbucket上托管我的源代码,因为那里提供了免费的私有仓库。 我还想使用来自bitbucket的源代码在heroku上托管我的应用程序。

我能否使用github客户端和heroku toolbelt来实现?这种方法可行吗?Github很棒,但我不想让所有人都看到我的代码,并且我不想为私有仓库付费,因为这是一个小项目。


1
你是如何准确地解决你的问题的? :) - Matthias
1
其实很简单。只需要在 BitBucket 中创建一个仓库,然后将配置文件中的 origin 更改为该仓库的地址,你就可以尽情使用 BitBucket 了。 - Wasswa Samuel
1
在哪个配置文件中?我的具体问题如下..https://dev59.com/KGMl5IYBdhLWcg3wyJfy - Matthias
7个回答

67

使用Heroku部署应该不受您托管代码的位置的限制,因为Heroku CLI会为了部署而添加自己的git远程。事实上,您甚至可以从Heroku执行 git pull ,所以您理论上可以将Heroku用作私有git存储库(但不建议这样做)。至于使用GitHub客户端连接到bitbucket,则只需将存储库远程更改为客户端设置选项卡中bitbucket提供的URL即可。


6
我该在哪里更改远程URL? - MaxySpark
虽然Heroku文档对此有所说明:“Heroku主要为部署提供git服务,并提供从中克隆的能力作为一种便利。我们强烈建议您将代码存储在另一个git存储库(如GitHub)中,并将其视为规范。”(来源 - Fabien Snauwaert
@FabienSnauwaert同意。我绝对不建议使用Heroku git作为主要版本控制系统。我会看看是否可以更新我的答案以澄清这一点。感谢上面的引用。 - Xavier

35

补充一下zeiv的回答,他说它应该起作用:我可以证实它确实起作用。我们使用bitbucket进行git托管,并部署到heroku。您似乎无法将您的bitbucket存储库添加到您的heroku帐户中以显示提交历史记录,这个功能似乎目前仅限于github(heroku的问题;-)


19

Bitbucket现在支持Pipelines,这应该使在Heroku上部署变得非常容易。只需按照此教程操作:https://confluence.atlassian.com/bitbucket/deploy-to-heroku-872013667.html

bitbucket-pipelines.yml 只是将主分支推送到Heroku,看起来像这样:

image: node:6
clone:
  depth: full
pipelines:
  branches:
    master:
      - step:
          script:
            - git push -f https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git $BITBUCKET_BRANCH

你成功了吗?我仍然无法推送到Heroku :( - Alan Donizete
没事,只是我没注意到打错了一个字 :( ... 哈哈,谢谢。 - Alan Donizete
3
这个可以工作,但请确保使用来自 https://dashboard.heroku.com/account 的 API 密钥,而不是 heroku auth:token - katzmopolitan

15

回应Stefan的建议,这个方法完美地解决了问题。以下是我的步骤:

  1. 对我的WP博客每天重置、向任何访问http:// blog.example.com 的人呈现设置屏幕感到非常沮丧,因为没有wp-config.php。
  2. 登录bitbucket.org。
  3. 链接我的bitbucket和github账户。
  4. 从github上 fork 我之前连接到heroku遥控的“wp-blog”存储库。
  5. 克隆此新分支(“git clone https://myname@bitbucket.org/myname/wp-blog_config.git”)。
  6. 添加合适的 wp-config.php。
  7. 从这个新分支中添加我的heroku远程(“git remote add heroku git@heroku.com:adjective-noun-1234.git”)
  8. 提交并部署到heroku(“git push heroku master:master”)

4

2

我发现这个页面很有帮助

安装Heroku Toolbelt

如果您还没有,登录您的Heroku账户并按照提示创建一个新的SSH公钥。

$ heroku login

创建一个新的Git仓库
在新目录或现有目录中初始化一个git仓库。
$ cd my-project/
$ git init
$ heroku git:remote -a PROJECTNAME

部署你的应用程序

将代码提交到代码库并使用Git将其部署到Heroku。

$ git add .
$ git commit -am "make it better"
$ git push heroku master

现有的Git存储库

对于现有的存储库,只需添加Heroku远程即可。

$ heroku git:remote -a PROJECTNAME

10
那与Bitbucket有什么关联? - Laurent Michel

0

你可以将Bitbucket与Heroku集成,并自动化部署。

我创建了这个GitHub项目来展示将Bitbucket代码库部署到Heroku所需的最小设置。

部署的工作原理

  1. 假设你已经从Bitbucket代码库检出了一个分支,你只需要推送一次变更,这将触发Bitbucket上的流水线。
  2. Bitbucket流水线只需创建一个带有应用程序源代码的'tgz'文件,并将该包发送给Heroku。
  3. Heroku接收到TGZ文件后,解压缩并构建应用程序,然后部署生成的软件包。

Heroku应用程序配置

  1. 创建应用程序
  2. 创建一个API密钥,供Bitbucket调用Heroku的API
  3. 设置buildpack,使Heroku可以使用它来构建您的应用程序: 转到Heroku中的应用程序根页面 -> 设置 -> Buildpacks -> 添加Buildpack -> 'buildback_for_your_application'

Bitbucket存储库配置

  1. 您需要在存储库配置中启用管道执行:
    Bitbucket -> 存储库根页面 -> 存储库设置 -> 管道设置 -> 选中“启用管道”
  2. 设置由./bitbucket-pipelines.yml文件使用的环境变量:
    Bitbucket -> 存储库根页面 -> 存储库设置 -> 管道设置 -> 选中“存储库变量”,然后设置:
    • HEROKU_APP_NAME:您在Heroku中为应用程序指定的名称
    • HEROKU_API_KEY:您在Heroku中创建的API密钥,以允许对您的应用程序进行API请求。

文件

将以下文件设置在应用程序的根文件夹中

文件 使用者 描述
./bitbucket-pipelines.yml Bitbucket 定义了 Bitbucket 的管道规则。
./Procfile Heroku 告诉 Heroku 此应用程序从互联网接收请求,以及要执行的命令行是什么。
./system.properties Heroku 设置必须使用哪个 Java SDK 来运行此应用程序。

./bitbucket-pipelines.yml 示例

image: gradle:jdk17 # change the image to suit your application.

# The minimum steps required to deploy from Bitbucket to Heroku are:
# 1. create a TGZ file with the application source code
# 2. send that TGZ to Heroku        
pipelines:
  default:
    - step:
        name: Create TGZ from source code
        script:
          - tar --exclude='.git' -cvzf /tmp/app.tar.gz .
          - mv /tmp/app.tar.gz .
        artifacts:
          - app.tar.gz

    - step:
        name: Deploy source code TGZ to heroku
        deployment: production
        script:
          - pipe: atlassian/heroku-deploy:0.1.1
            variables:
              HEROKU_API_KEY: $HEROKU_API_KEY
              HEROKU_APP_NAME: $HEROKU_APP_NAME
              ZIP_FILE: app.tar.gz

./Procfile示例

web: java -jar build/libs/demo-application-0.0.1.jar

这个例子是针对一个从互联网接收请求的Java应用程序。根据您的应用程序进行更改。

./system.properties 示例

java.runtime.version=17

需要用于Java应用程序。根据您的应用程序进行更改。

您的应用程序必须在“$PORT”端口上侦听

Heroku在$PORT环境变量中设置一个随机端口号,并期望您的应用程序将在该端口上侦听。确保您的应用程序使用该环境变量来设置侦听端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接