Merge pull request #3114 from dokku/dokku-git-rev
Enhanced core git plugin
This commit is contained in:
@@ -181,7 +181,6 @@ The following plugins are available and provided by Dokku maintainers. Where not
|
||||
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | 0.8.0+ |
|
||||
| [Dokku Registry](https://github.com/agco-adm/dokku-registry)<sup>1</sup> | [agco-adm][] | 0.4.0+ |
|
||||
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>2</sup> | [crisward][] | 0.4.0+ |
|
||||
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | 0.4.0+ |
|
||||
| [Global Certificates](https://github.com/josegonzalez/dokku-global-cert) | [josegonzalez][] | 0.5.0+ |
|
||||
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [Benjamin-Dobell][] | 0.4.0+ |
|
||||
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 0.4.0+ |
|
||||
@@ -250,6 +249,7 @@ The following plugins have been removed as their functionality is now in Dokku C
|
||||
| [Docker Options](https://github.com/dyson/dokku-docker-options) | [dyson][] | v0.3.17 (docker-options plugin) |
|
||||
| [Dokku Name](https://github.com/alex-sherwin/dokku-name) | [alex-sherwin][] | v0.4.2 (named containers plugin) |
|
||||
| [Events Logger](https://github.com/alessio/dokku-events) | [alessio][] | v0.3.21 (events plugin) |
|
||||
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | v0.12.0 (enhanced core git plugin) |
|
||||
| [Host Port binding](https://github.com/stuartpb/dokku-bind-port) | [stuartpb][] | v0.3.17 (docker-options plugin) |
|
||||
| [Link Containers](https://github.com/rlaneve/dokku-link) | [rlaneve][] | v0.3.17 (docker-options plugin) |
|
||||
| [List Containers](https://github.com/josegonzalez/dokku-list) | [josegonzalez][] | v0.3.14 (ps plugin) |
|
||||
|
||||
@@ -101,7 +101,6 @@ The following list config variables have special meaning and can be set in a var
|
||||
| `DOKKU_CHECKS_TIMEOUT` | `30` | `dokku config:set` | Wait this many seconds for each response before marking it as a failure.
|
||||
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
|
||||
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
|
||||
| `DOKKU_DEPLOY_BRANCH` | `master` | `dokku config:set` | Branch to deploy by default. |
|
||||
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
|
||||
| `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` | none | `dokku config:set` <br /> `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Disables removal of the ANSI prefix during deploys. Can be used in cases where the client deployer does not understand ansi escape codes. |
|
||||
| `DOKKU_DISABLE_APP_AUTOCREATION` | none | `dokku config:set` | Disables automatic creation of a non-existent app on deploy. |
|
||||
|
||||
@@ -15,7 +15,7 @@ git clone git@github.com:heroku/ruby-rails-sample.git
|
||||
Create the application on the Dokku host. You will need to ssh onto the host to run this command.
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
dokku apps:create ruby-rails-sample
|
||||
```
|
||||
|
||||
@@ -24,7 +24,7 @@ dokku apps:create ruby-rails-sample
|
||||
When you create a new app, Dokku by default *does not* provide any datastores such as MySQL or PostgreSQL. You will need to install plugins to handle that, but fortunately [Dokku has official plugins](/docs/community/plugins.md#official-plugins-beta) for common datastores. Our sample app requires a PostgreSQL service:
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
# install the postgres plugin
|
||||
# plugin installation requires root, hence the user change
|
||||
sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
|
||||
@@ -40,7 +40,7 @@ dokku postgres:create rails-database
|
||||
Once the service creation is complete, set the `POSTGRES_URL` environment variable by linking the service.
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
# each official datastore offers a `link` method to link a service to any application
|
||||
dokku postgres:link rails-database ruby-rails-sample
|
||||
```
|
||||
@@ -93,30 +93,12 @@ When the deploy finishes, the application's URL will be shown as seen above.
|
||||
Dokku supports deploying applications via [Heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) with [Herokuish](https://github.com/gliderlabs/herokuish#buildpacks) or using a project's [dockerfile](https://docs.docker.com/reference/builder/).
|
||||
|
||||
|
||||
### Deploying non-master branch
|
||||
|
||||
Dokku only supports deploying from its master branch, so if you'd like to deploy a different local branch use: ```git push dokku <local branch>:master```
|
||||
|
||||
An alternative is to use the `DOKKU_DEPLOY_BRANCH` application config value to specify a branch that should be deployed. The implicit default is master, and this can be modified both at the app and global level:
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
|
||||
# set it globally
|
||||
dokku config:set --global DOKKU_DEPLOY_BRANCH=some-branch
|
||||
|
||||
# override for a specific app
|
||||
dokku config:set ruby-rails-sample DOKKU_DEPLOY_BRANCH=some-branch
|
||||
```
|
||||
|
||||
You can also support pushing multiple branches using the [receive-branch](/docs/development/plugin-triggers.md#receive-branch) plugin trigger in a custom plugin.
|
||||
|
||||
### Skipping deployment
|
||||
|
||||
If you only want to rebuild and tag a container, you can skip the deployment phase by setting `$DOKKU_SKIP_DEPLOY` to `true` by running:
|
||||
|
||||
``` shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
dokku config:set ruby-rails-sample DOKKU_SKIP_DEPLOY=true
|
||||
```
|
||||
|
||||
@@ -125,7 +107,7 @@ dokku config:set ruby-rails-sample DOKKU_SKIP_DEPLOY=true
|
||||
If you need to re-deploy (or restart) your app:
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
dokku ps:rebuild ruby-rails-sample
|
||||
```
|
||||
|
||||
@@ -136,7 +118,7 @@ See the [process scaling documentation](/docs/deployment/process-management.md)
|
||||
Dokku uses git locally (i.e. not a docker image) to build its own copy of your app repo, including submodules. This is done as the `dokku` user. Therefore, in order to deploy private git submodules, you'll need to drop your deploy key in `/home/dokku/.ssh/` and potentially add github.com (or your VCS host key) into `/home/dokku/.ssh/known_hosts`. The following test should help confirm you've done it correctly.
|
||||
|
||||
```shell
|
||||
# on your Dokku host
|
||||
# on the Dokku host
|
||||
su - dokku
|
||||
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
|
||||
ssh -T git@github.com
|
||||
@@ -202,18 +184,22 @@ See the [user management documentation](/docs/deployment/user-management.md).
|
||||
|
||||
See the [nginx documentation](/docs/configuration/nginx.md#default-site).
|
||||
|
||||
## Deploying non-master branch
|
||||
|
||||
See the [git documentation](/docs/deployment/methods/git.md#changing-the-deploy-branch).
|
||||
|
||||
## Dockerfile deployment
|
||||
|
||||
See the [dockerfile documentation](/docs/deployment/methods/dockerfiles.md).
|
||||
|
||||
## Specifying a custom buildpack
|
||||
|
||||
See the [buildpack documentation](/docs/deployment/methods/buildpacks.md).
|
||||
|
||||
## Image tagging
|
||||
|
||||
See the [image tagging documentation](/docs/deployment/methods/images.md).
|
||||
|
||||
## Specifying a custom buildpack
|
||||
|
||||
See the [buildpack documentation](/docs/deployment/methods/buildpacks.md).
|
||||
|
||||
## Removing a deployed app
|
||||
|
||||
See the [application management documentation](/docs/deployment/application-management.md#removing-a-deployed-app).
|
||||
|
||||
62
docs/deployment/methods/git.md
Normal file
62
docs/deployment/methods/git.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# GIT Deployment
|
||||
|
||||
> Subcommands new as of 0.12.0
|
||||
|
||||
```
|
||||
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
||||
git:set <app> <key> (<value>) # Set or clear a git property for an app
|
||||
```
|
||||
|
||||
GIT-based deployment has been the traditional method of deploying applications in Dokku. As of v0.12.0, Dokku introduces a few ways to customize the experience of deploying via `git push`.
|
||||
|
||||
## Usage
|
||||
|
||||
### Changing the Deploy Branch
|
||||
|
||||
By default, Dokku will deploy code pushed to the `master` branch. In order to quickly deploy a different local branch, the following GIT command can be used:
|
||||
|
||||
```shell
|
||||
# on the local machine
|
||||
|
||||
# where `SOME_BRANCH_NAME` is the name of the branch
|
||||
git push dokku SOME_BRANCH_NAME:master
|
||||
```
|
||||
|
||||
In `0.12.0`, the correct way to change the deploy branch is to use the `git:set` Dokku subcommand.
|
||||
|
||||
```shell
|
||||
# on the Dokku host
|
||||
|
||||
# override for all applications
|
||||
dokku git:set --global deploy-branch SOME_BRANCH_NAME
|
||||
|
||||
# override for a specific app
|
||||
# where `SOME_BRANCH_NAME` is the name of the branch
|
||||
dokku git:set node-js-app deploy-branch SOME_BRANCH_NAME
|
||||
```
|
||||
|
||||
Pushing multiple branches can also be supportec by creating a [receive-branch](/docs/development/plugin-triggers.md#receive-branch) plugin trigger in a custom plugin.
|
||||
|
||||
### Configuring the GIT_REV Environment Variable
|
||||
|
||||
> New as of 0.12.0
|
||||
|
||||
Application deployments will include a special `GIT_REV` environment variable containing the current deployment sha being deployed. For rebuilds, this sha will remain the same.
|
||||
|
||||
To configure the name of the `GIT_REV` environment variable, run the `git:set` subcommand as follows:
|
||||
|
||||
```shell
|
||||
# on the Dokku host
|
||||
|
||||
# override for a specific app
|
||||
dokku git:set node-js-app rev-env-var DOKKU_GIT_REV
|
||||
```
|
||||
|
||||
This behavior can be disabled entirely on a per-app basis by setting the `rev-env-var` value to an empty string:
|
||||
|
||||
```shell
|
||||
# on the Dokku host
|
||||
|
||||
# override for a specific app
|
||||
dokku git:set node-js-app rev-env-var ""
|
||||
```
|
||||
Reference in New Issue
Block a user