我想使用git在bitbucket上托管我的源代码,因为那里提供了免费的私有仓库。 我还想使用来自bitbucket的源代码在heroku上托管我的应用程序。
我能否使用github客户端和heroku toolbelt来实现?这种方法可行吗?Github很棒,但我不想让所有人都看到我的代码,并且我不想为私有仓库付费,因为这是一个小项目。
我想使用git在bitbucket上托管我的源代码,因为那里提供了免费的私有仓库。 我还想使用来自bitbucket的源代码在heroku上托管我的应用程序。
我能否使用github客户端和heroku toolbelt来实现?这种方法可行吗?Github很棒,但我不想让所有人都看到我的代码,并且我不想为私有仓库付费,因为这是一个小项目。
使用Heroku部署应该不受您托管代码的位置的限制,因为Heroku CLI会为了部署而添加自己的git远程。事实上,您甚至可以从Heroku执行 git pull ,所以您理论上可以将Heroku用作私有git存储库(但不建议这样做)。至于使用GitHub客户端连接到bitbucket,则只需将存储库远程更改为客户端设置选项卡中bitbucket提供的URL即可。
补充一下zeiv的回答,他说它应该起作用:我可以证实它确实起作用。我们使用bitbucket进行git托管,并部署到heroku。您似乎无法将您的bitbucket存储库添加到您的heroku帐户中以显示提交历史记录,这个功能似乎目前仅限于github(heroku的问题;-)
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 auth:token
。 - katzmopolitan回应Stefan的建议,这个方法完美地解决了问题。以下是我的步骤:
我发现这个页面很有帮助
如果您还没有,登录您的Heroku账户并按照提示创建一个新的SSH公钥。
$ heroku login
$ 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
你可以将Bitbucket与Heroku集成,并自动化部署。
我创建了这个GitHub项目来展示将Bitbucket代码库部署到Heroku所需的最小设置。
转到Heroku中的应用程序根页面 -> 设置 -> Buildpacks -> 添加Buildpack -> 'buildback_for_your_application'
Bitbucket -> 存储库根页面 -> 存储库设置 -> 管道设置 -> 选中“启用管道”
Bitbucket -> 存储库根页面 -> 存储库设置 -> 管道设置 -> 选中“存储库变量”
,然后设置:
将以下文件设置在应用程序的根文件夹中
文件 | 使用者 | 描述 |
---|---|---|
./bitbucket-pipelines.yml | Bitbucket | 定义了 Bitbucket 的管道规则。 |
./Procfile | Heroku | 告诉 Heroku 此应用程序从互联网接收请求,以及要执行的命令行是什么。 |
./system.properties | Heroku | 设置必须使用哪个 Java SDK 来运行此应用程序。 |
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
web: java -jar build/libs/demo-application-0.0.1.jar
这个例子是针对一个从互联网接收请求的Java应用程序。根据您的应用程序进行更改。
java.runtime.version=17
需要用于Java应用程序。根据您的应用程序进行更改。
Heroku在$PORT
环境变量中设置一个随机端口号,并期望您的应用程序将在该端口上侦听。确保您的应用程序使用该环境变量来设置侦听端口。