Compare commits

...

91 Commits

Author SHA1 Message Date
Dokku Bot
6c3de8c628 Release 0.27.7
# History

## 0.27.7

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh
sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
```

### Bug Fixes

- #5238: @josegonzalez Respect dokku system user/group when setting storage permissions on installation

### New Features

- #5239: @josegonzalez Add builder-type and image-stage labels to all images

### Documentation

- #5241: @josegonzalez Clarify where logs are pulled from and general log shipping stance
- #5237: @josegonzalez Fix builder-pack:set command example

### Other

- #5235: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 220 to 221 in /tests/apps/php
2022-07-05 23:20:17 +00:00
Jose Diaz-Gonzalez
99dd31ceeb Merge pull request #5239 from dokku/builder-labels
Add builder-type and image-stage labels to all images
2022-07-05 19:06:26 -04:00
Jose Diaz-Gonzalez
b983afe9fa feat: add builder-type and image-stage labels to all images
This allows users to further introspect where an image came from, and therefore what - if any - custom logic to perform.
2022-07-05 15:09:59 -04:00
Jose Diaz-Gonzalez
ef64210821 Merge pull request #5241 from dokku/5234-log-docs
Clarify where logs are pulled from and general log shipping stance
2022-07-05 14:50:38 -04:00
Jose Diaz-Gonzalez
dcb880b0f2 docs: clarify log shipping stance
While it is unfortunate that we don't store logs locally, doing so is actually a fairly difficult ask. Rather than pretending the problem doesn't exist, we'll clarify how logs are currently fetched, as well as point users to integrations/tools that may make their lives easier.

Refs #5234
2022-07-05 14:49:21 -04:00
Jose Diaz-Gonzalez
b26aec249c Merge pull request #5235 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-221
chore(deps-dev): bump heroku/heroku-buildpack-php from 220 to 221 in /tests/apps/php
2022-07-05 14:16:45 -04:00
Jose Diaz-Gonzalez
3903b8a331 Merge pull request #5238 from dokku/storage-perms
Respect dokku system user/group when setting storage permissions on installation
2022-07-05 14:16:28 -04:00
Jose Diaz-Gonzalez
5f192ec3a1 fix: respect dokku system user/group when setting storage permissions on installation 2022-07-04 23:32:58 -04:00
Jose Diaz-Gonzalez
f42972fc3c Merge pull request #5237 from dokku/cnb-docs
Fix builder-pack:set command example
2022-07-04 23:31:18 -04:00
Jose Diaz-Gonzalez
f4f3d4adc6 docs: fix builder-pack:set command example 2022-07-04 23:30:38 -04:00
dependabot[bot]
7e0a8dca94 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 220 to 221.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v220...v221)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 13:15:04 +00:00
Dokku Bot
23322b6dde Release 0.27.6
# History

## 0.27.6

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.6/bootstrap.sh
sudo DOKKU_TAG=v0.27.6 bash bootstrap.sh
```

### Bug Fixes

- #5225: @josegonzalez Use original app name when setting include_labels for vector source
- #5228: @josegonzalez Always respect app.json formations in scale settings
- #5201: @josegonzalez Use pack as default builder for arm64 servers

### Documentation

- #5230: @josegonzalez Clarify usage of build args to set environment variables for Dockerfile deploys
- #5208: @asokoloski-m Fix typo in dockerfile builder docs
- #5206: @AxelTheGerman Added dokku-litestream to list of community plugins

### Other

- #5218: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 219 to 220 in /tests/apps/php
- #5222: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.10 to 11.0.11 in /tests/apps/java
- #5224: @josegonzalez Document that the community registry plugin should be uninstalled before upgrading past 0.24.x
- #5220: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.9 to 11.0.10 in /tests/apps/java
- #5212: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 218 to 219 in /tests/apps/php
- #5210: @dependabot[bot] chore(deps): bump monolog/monolog from 1.27.0 to 1.27.1 in /tests/apps/php
- #5204: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 217 to 218 in /tests/apps/php
2022-06-27 17:19:21 +00:00
Jose Diaz-Gonzalez
fbf136bbe3 Merge pull request #5218 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-220
chore(deps-dev): bump heroku/heroku-buildpack-php from 219 to 220 in /tests/apps/php
2022-06-27 12:28:40 -04:00
Jose Diaz-Gonzalez
952e7c6fda Merge pull request #5230 from dokku/josegonzalez-patch-2
Clarify usage of build args to set environment variables for Dockerfile deploys
2022-06-27 10:54:44 -04:00
Jose Diaz-Gonzalez
ae10527b8a docs: clarify usage of build args to set environment variables for Dockerfile deploys
While documented under Dockerfile deploys, developers looking at docs might not know to go to those docs to find this information out.
2022-06-27 10:53:09 -04:00
dependabot[bot]
b4d0456f5f chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 219 to 220.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v219...v220)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 14:47:33 +00:00
Jose Diaz-Gonzalez
3f28c24b57 Merge pull request #5225 from dokku/5221-inflected-app-name
Use original app name when setting include_labels for vector source
2022-06-27 10:46:25 -04:00
Jose Diaz-Gonzalez
9da3b4e155 Merge pull request #5228 from dokku/5205-sync-ps-with-app-json
Always respect app.json formations in scale settings
2022-06-27 10:46:13 -04:00
Jose Diaz-Gonzalez
dded26625b fix: always respect app.json formations in scale settings
Without this change, it was possible would end up in a state where we might still try to scale processes up that no longer exists.

Closes #5205
2022-06-26 14:33:19 -04:00
Jose Diaz-Gonzalez
515eb372a4 Merge pull request #5201 from dokku/5113-switch-to-pack
Use pack as default builder for arm64 servers
2022-06-25 01:17:11 -04:00
Jose Diaz-Gonzalez
abe06b3d84 docs: fix the error message to be slightly more readable 2022-06-25 01:16:53 -04:00
Jose Diaz-Gonzalez
229d97e502 Merge pull request #5222 from dokku/dependabot/maven/tests/apps/java/org.eclipse.jetty-jetty-servlet-11.0.11
chore(deps): bump jetty-servlet from 11.0.10 to 11.0.11 in /tests/apps/java
2022-06-25 01:15:27 -04:00
Jose Diaz-Gonzalez
51cd7fd85e fix: use original app name when setting include_labels for vector source
Closes #5221
2022-06-25 01:06:28 -04:00
Jose Diaz-Gonzalez
9a52cbdd27 Merge pull request #5224 from dokku/5223-uninstall-registry
Document that the community registry plugin should be uninstalled before upgrading past 0.24.x
2022-06-25 00:26:54 -04:00
Jose Diaz-Gonzalez
7d5c242fa9 docs: document that the community registry plugin should be uninstalled first
Without this, it's unknown what will happen.

Refs #5223
2022-06-25 00:26:31 -04:00
dependabot[bot]
e665243ae1 chore(deps): bump jetty-servlet in /tests/apps/java
Bumps [jetty-servlet](https://github.com/eclipse/jetty.project) from 11.0.10 to 11.0.11.
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-11.0.10...jetty-11.0.11)

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 15:11:04 +00:00
Jose Diaz-Gonzalez
6f79fb2e87 Merge pull request #5220 from dokku/dependabot/maven/tests/apps/java/org.eclipse.jetty-jetty-servlet-11.0.10
chore(deps): bump jetty-servlet from 11.0.9 to 11.0.10 in /tests/apps/java
2022-06-23 01:29:07 -04:00
dependabot[bot]
211f0ef049 chore(deps): bump jetty-servlet in /tests/apps/java
Bumps [jetty-servlet](https://github.com/eclipse/jetty.project) from 11.0.9 to 11.0.10.
- [Release notes](https://github.com/eclipse/jetty.project/releases)
- [Commits](https://github.com/eclipse/jetty.project/compare/jetty-11.0.9...jetty-11.0.10)

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-servlet
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 13:08:59 +00:00
Jose Diaz-Gonzalez
07aa343140 Merge pull request #5212 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-219
chore(deps-dev): bump heroku/heroku-buildpack-php from 218 to 219 in /tests/apps/php
2022-06-10 10:44:57 -04:00
dependabot[bot]
ab658ec274 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 218 to 219.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v218...v219)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-10 13:11:39 +00:00
Jose Diaz-Gonzalez
a2eab242b6 Merge pull request #5210 from dokku/dependabot/composer/tests/apps/php/monolog/monolog-1.27.1
chore(deps): bump monolog/monolog from 1.27.0 to 1.27.1 in /tests/apps/php
2022-06-09 10:28:27 -04:00
dependabot[bot]
321b94db19 chore(deps): bump monolog/monolog in /tests/apps/php
Bumps [monolog/monolog](https://github.com/Seldaek/monolog) from 1.27.0 to 1.27.1.
- [Release notes](https://github.com/Seldaek/monolog/releases)
- [Changelog](https://github.com/Seldaek/monolog/blob/1.27.1/CHANGELOG.md)
- [Commits](https://github.com/Seldaek/monolog/compare/1.27.0...1.27.1)

---
updated-dependencies:
- dependency-name: monolog/monolog
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-09 13:18:32 +00:00
Jose Diaz-Gonzalez
e17f87d62d Merge pull request #5208 from asokoloski-m/patch-1
Fix docs: incorrect command for app storage status
2022-06-08 11:05:29 -04:00
asokoloski-m
4fc23a8ffb Fix incorrect command for app storage status 2022-06-08 09:08:31 -05:00
Jose Diaz-Gonzalez
044027e31b Merge pull request #5206 from AxelTheGerman/patch-1
Added dokku-litestream
2022-06-05 22:08:39 -04:00
Jose Diaz-Gonzalez
e4be7e38ad Merge pull request #5204 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-218
chore(deps-dev): bump heroku/heroku-buildpack-php from 217 to 218 in /tests/apps/php
2022-06-05 22:07:06 -04:00
Axel Gustav
5a93e875a3 Added dokku-litestream
I recently created a plugin for SQLite replication via Litestream to S3. Been using it myself in production for a couple of weeks and was able to successfully restore a backed up DB so I guess it's ready for people to try and be added to this list.
2022-05-31 21:51:05 -07:00
dependabot[bot]
24fdc0a778 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 217 to 218.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v217...v218)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 13:14:40 +00:00
Jose Diaz-Gonzalez
3db3bfb150 feat: use pack as default builder for arm64 servers
Herokuish is not and will never be supported on arm servers, so attempting to use it will only fail builds.

Also fail when trying to default to herokuish on armhf instances. We can't default to pack as it's just not built for armhf/arm (only arm64).

Closes #5113
2022-05-29 16:41:42 -04:00
Dokku Bot
37036ec2fa Release 0.27.5
# History

## 0.27.5

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh
sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh
```

### Bug Fixes

- #5183: @josegonzalez Filter apps when verifying app names
- #5199: @josegonzalez Revert "fix: Vector fails to start container due to --watch-config flag"
- #5197: @holamendi fix: Vector fails to start container due to --watch-config flag
- #5192: @josegonzalez Confirm installation of universe packages when installing on ubuntu
- #5193: @josegonzalez Force-set correct permissions on env files
- #5181: @josegonzalez Ensure we default SSH_NAME to NAME when filtering apps

### New Features

- #5196: @josegonzalez Disable herokuish usage on both armhf and arm64 platforms
- #5194: @josegonzalez Upgrade base Dockerfile image to phusion/baseimage:focal-1.2.0

### Other

- #5200: @dependabot[bot] chore(deps): bump rack from 2.2.3 to 2.2.3.1 in /tests/apps/ruby
- #5198: @dependabot[bot] chore(deps): bump grunt from 1.5.2 to 1.5.3 in /tests/apps/multi
- #5187: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 216 to 217 in /tests/apps/php
2022-05-29 19:12:03 +00:00
Jose Diaz-Gonzalez
4b94a37f72 Merge pull request #5183 from dokku/user-access-to-app
Filter apps when verifying app names
2022-05-29 12:50:44 -04:00
Jose Diaz-Gonzalez
db4d8dba88 refactor: consolidate app name verification into golang binary
This change ensures we only have to change this logic once in order to get them to apply to both languages in the codebase.
2022-05-29 11:32:24 -04:00
Jose Diaz-Gonzalez
cc9d76aa11 fix: set globally 2022-05-29 00:00:26 -04:00
Jose Diaz-Gonzalez
97bbded5bb tests: set the PLUGIN_ENABLED_PATH for config tests 2022-05-28 23:23:25 -04:00
Jose Diaz-Gonzalez
a95e5d210d tests: test the command funcs to exercise app validation 2022-05-28 18:23:34 -04:00
Jose Diaz-Gonzalez
0f7b24fcc7 Merge pull request #5200 from dokku/dependabot/bundler/tests/apps/ruby/rack-2.2.3.1
chore(deps): bump rack from 2.2.3 to 2.2.3.1 in /tests/apps/ruby
2022-05-28 18:08:02 -04:00
dependabot[bot]
3a2e9973b6 chore(deps): bump rack from 2.2.3 to 2.2.3.1 in /tests/apps/ruby
Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-28 16:22:59 +00:00
Jose Diaz-Gonzalez
5b5f6031b2 Merge pull request #5198 from dokku/dependabot/npm_and_yarn/tests/apps/multi/grunt-1.5.3
chore(deps): bump grunt from 1.5.2 to 1.5.3 in /tests/apps/multi
2022-05-28 12:22:26 -04:00
Jose Diaz-Gonzalez
96a2ec01f5 fix: ensure go tests have PLUGIN_ENABLED_PATH set 2022-05-28 12:22:11 -04:00
dependabot[bot]
9473ac5f38 chore(deps): bump grunt from 1.5.2 to 1.5.3 in /tests/apps/multi
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: grunt
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-28 03:59:34 +00:00
Jose Diaz-Gonzalez
d803dbb84a fix: drop extra unnecessary validation of app name
The app name is already validated when calling subcommands, so no need to validate it yet again here.
2022-05-27 23:44:46 -04:00
Jose Diaz-Gonzalez
5981ff8e9b refactor: split out config logic to remove need to check app name for function-based usage
This MR splits out the logic such that there is now a binary that handles function based calls without validating the app name. We should only every check the app name for the subcommands and not internally. Internal calls should have their arguments taken at face value.
2022-05-27 23:28:59 -04:00
Jose Diaz-Gonzalez
b3d7174a7a fix: filter apps when verifying app names
This ensures folks can't interact with apps that are hidden from them via the filtering performed in app listing.
2022-05-27 23:28:59 -04:00
Jose Diaz-Gonzalez
9ea888f62e Merge pull request #5199 from dokku/revert-5197-fix-vector-start-container
Revert "fix: Vector fails to start container due to --watch-config flag"
2022-05-26 10:22:54 -04:00
Jose Diaz-Gonzalez
2ba5c9df50 Revert "fix: Vector fails to start container due to --watch-config flag" 2022-05-26 10:22:32 -04:00
Jose Diaz-Gonzalez
d30fb7b85c Merge pull request #5197 from holamendi/fix-vector-start-container
fix: Vector fails to start container due to --watch-config flag
2022-05-25 10:52:18 -04:00
Pablo Orellana
0a895b2d11 remove --watch-config argument on startVectorContainer 2022-05-25 07:44:38 +02:00
Jose Diaz-Gonzalez
20ed65efdd Merge pull request #5196 from dokku/herokuish-arm64
Disable herokuish usage on both armhf and arm64 platforms
2022-05-23 12:21:46 -04:00
Jose Diaz-Gonzalez
27769f54b0 feat: disable herokuish usage on both armhf and arm64 platforms
We will not provide support for herokuish on either as herokuish is meant to be Heroku-compatible, and the Heroku stack does not support arm. Use 'pack' or Dockerfiles for app building instead.
2022-05-22 17:12:52 -04:00
Jose Diaz-Gonzalez
0748b3eec8 Merge pull request #5194 from dokku/josegonzalez-patch-1
Upgrade base Dockerfile image to phusion/baseimage:focal-1.2.0
2022-05-22 16:39:05 -04:00
Jose Diaz-Gonzalez
469156ac98 Merge pull request #5187 from dokku/dependabot/composer/tests/apps/php/heroku/heroku-buildpack-php-217
chore(deps-dev): bump heroku/heroku-buildpack-php from 216 to 217 in /tests/apps/php
2022-05-21 14:42:49 -04:00
Jose Diaz-Gonzalez
6f5f3fa908 feat: upgrade base Dockerfile image to phusion/baseimage:focal-1.2.0 2022-05-21 13:42:45 -04:00
Jose Diaz-Gonzalez
fe84ec08a8 Merge pull request #5192 from dokku/5191-jammy-bootstrap
Confirm installation of universe packages when installing on ubuntu
2022-05-21 13:37:13 -04:00
Jose Diaz-Gonzalez
f6cd3f5c89 Merge pull request #5193 from dokku/5190-env-perms
Force-set correct permissions on env files
2022-05-21 13:37:03 -04:00
Jose Diaz-Gonzalez
88c1abc608 fix: force-set correct permissions on env files
If an env file is written as a root user - for example, during plugin install - the permissions on the file may change to root. This forces those permissions back to what they should be so that the dokku user can edit the files later on.

Closes #5190
2022-05-21 03:45:05 -04:00
Jose Diaz-Gonzalez
a937e6de50 fix: confirm installation of universe packages when installing on ubuntu
This fixes installs stalling on Ubuntu 22.04 because of necessary confirmation of the addition.

Closes #5191
2022-05-21 02:47:06 -04:00
dependabot[bot]
5d36264dd2 chore(deps-dev): bump heroku/heroku-buildpack-php in /tests/apps/php
Bumps [heroku/heroku-buildpack-php](https://github.com/heroku/heroku-buildpack-php) from 216 to 217.
- [Release notes](https://github.com/heroku/heroku-buildpack-php/releases)
- [Changelog](https://github.com/heroku/heroku-buildpack-php/blob/main/CHANGELOG.md)
- [Commits](https://github.com/heroku/heroku-buildpack-php/compare/v216...v217)

---
updated-dependencies:
- dependency-name: heroku/heroku-buildpack-php
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 13:20:54 +00:00
Jose Diaz-Gonzalez
af88aabfb6 Merge pull request #5181 from dokku/fix-user-auth-app
Ensure we default SSH_NAME to NAME when filtering apps
2022-05-15 22:18:08 -04:00
Jose Diaz-Gonzalez
4491142a7b fix: ensure we default SSH_NAME to NAME when filtering apps
This mirrors how SSH_NAME is populated for the user-auth trigger.
2022-05-15 21:19:11 -04:00
Dokku Bot
5df4bd710a Release 0.27.4
# History

## 0.27.4

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.4/bootstrap.sh
sudo DOKKU_TAG=v0.27.4 bash bootstrap.sh
```

### Documentation

- #5180: @Bilal-io fixes rst-versions height
2022-05-15 23:44:34 +00:00
Jose Diaz-Gonzalez
a41cb46b77 Merge pull request #5180 from Bilal-io/master
fixes rst-versions height
2022-05-15 18:29:18 -04:00
BK
7477f6438a fixes rst-versions height 2022-05-15 15:27:50 -07:00
Dokku Bot
ed2c4493a4 Release 0.27.3
# History

## 0.27.3

Install/update via the bootstrap script:

```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.3/bootstrap.sh
sudo DOKKU_TAG=v0.27.3 bash bootstrap.sh
```

### Bug Fixes

- #5178: @josegonzalez Fix app filtering for authenticated usage
- #5173: @bitjockey42 Add 22.04 to supported distro versions

### Documentation

- #5179: @Bilal-io Fixes to the Docs version switcher
- #5177: @josegonzalez docs: cleanup experimental warning in scheduler docs
- #5176: @josegonzalez Update installation requirements to mention arm64 and ubuntu 22.04
- #5174: @vladdoster Fix typos and phrasing in remote commands documentation
2022-05-15 21:52:19 +00:00
Jose Diaz-Gonzalez
2ed14fc81c Merge pull request #5179 from Bilal-io/master
Fixes to the Docs version switcher
2022-05-15 17:21:57 -04:00
BK
978e2fd702 Merge branch 'dokku:master' into master 2022-05-15 14:18:18 -07:00
BK
712954560a fixes version switcher height
The panel expands to a max-height of 600, and shrinks to 100vh - 100px on browsers with height smaller than 600px.
2022-05-15 14:17:25 -07:00
BK
5e648c29ed Fixes the overflow in the docs' version switcher
hides the scroll bar from the overflow switcher and displays a vertical scroll when the panel is expanded.
2022-05-15 14:13:54 -07:00
Jose Diaz-Gonzalez
ea84e4d5e4 Merge pull request #5178 from dokku/fix-app-filtering
Fix app filtering for authenticated usage
2022-05-15 17:11:34 -04:00
BK
f2a32ae0f6 Fix docs version switcher to display latest first
Changes the old sorting which displays master then the oldest to newest, so that it would display master followed by the newest version
2022-05-15 14:08:33 -07:00
Jose Diaz-Gonzalez
358b02ac39 fix: add missing app-list event 2022-05-15 15:52:30 -04:00
Jose Diaz-Gonzalez
268c318bc5 fix: ensure we do not filter apps for certain commands and triggers
Some things must pull *all* apps vs filtered apps (mostly things that write out config files or install triggers). Using an unflitered list is best.

Also, we default to filtering, which should be what most usage needs.
2022-05-15 15:47:13 -04:00
Jose Diaz-Gonzalez
f87cd22340 feat: allow returning an unfiltered list of users
This is useful for upgrades or commands that _must_ perform against all apps.
2022-05-15 15:33:19 -04:00
Jose Diaz-Gonzalez
b1223cd6cc Merge pull request #5177 from dokku/docs-experimental
docs: cleanup experimental warning in scheduler docs
2022-05-15 10:10:23 -04:00
Jose Diaz-Gonzalez
9fb4ce6cb4 docs: cleanup experimental warning in kubernetes docs 2022-05-15 10:10:16 -04:00
Jose Diaz-Gonzalez
d73eee201d docs: cleanup experimental warning in nomad docs 2022-05-15 10:09:39 -04:00
Jose Diaz-Gonzalez
dd900a3975 Merge pull request #5176 from dokku/josegonzalez-patch-1
Update installation requirements to mention arm64 and ubuntu 22.04
2022-05-15 10:06:42 -04:00
Jose Diaz-Gonzalez
9452699aaf docs: update installation requirements to mention arm64 and ubuntu 22.04 2022-05-15 10:05:54 -04:00
Jose Diaz-Gonzalez
f2081505eb Merge pull request #5174 from vladdoster/patch-1 2022-05-14 16:04:13 -04:00
vladislav doster
857724984e docs: fix typos & phrasing in remote-commands.md
- `interpretting` -> `interpreting`
- `overriden`      -> `overridden`
- correct article agreement
2022-05-14 14:29:45 -05:00
Jose Diaz-Gonzalez
4e36ab9361 Merge pull request #5173 from bitjockey42/add_2204_to_supported_distro_versions
Add 22.04 to supported distro versions
2022-05-14 03:26:03 -04:00
Bitjockey
b3ac4f36f7 Add 22.04 to supported distro versions 2022-05-14 03:13:29 -04:00
106 changed files with 872 additions and 347 deletions

View File

@@ -1,4 +1,4 @@
FROM phusion/baseimage:focal-1.1.0
FROM phusion/baseimage:focal-1.2.0
CMD ["/sbin/my_init"]

View File

@@ -1,5 +1,125 @@
# History
## 0.27.7
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh
sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
```
### Bug Fixes
- #5238: @josegonzalez Respect dokku system user/group when setting storage permissions on installation
### New Features
- #5239: @josegonzalez Add builder-type and image-stage labels to all images
### Documentation
- #5241: @josegonzalez Clarify where logs are pulled from and general log shipping stance
- #5237: @josegonzalez Fix builder-pack:set command example
### Other
- #5235: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 220 to 221 in /tests/apps/php
## 0.27.6
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.6/bootstrap.sh
sudo DOKKU_TAG=v0.27.6 bash bootstrap.sh
```
### Bug Fixes
- #5225: @josegonzalez Use original app name when setting include_labels for vector source
- #5228: @josegonzalez Always respect app.json formations in scale settings
- #5201: @josegonzalez Use pack as default builder for arm64 servers
### Documentation
- #5230: @josegonzalez Clarify usage of build args to set environment variables for Dockerfile deploys
- #5208: @asokoloski-m Fix typo in dockerfile builder docs
- #5206: @AxelTheGerman Added dokku-litestream to list of community plugins
### Other
- #5218: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 219 to 220 in /tests/apps/php
- #5222: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.10 to 11.0.11 in /tests/apps/java
- #5224: @josegonzalez Document that the community registry plugin should be uninstalled before upgrading past 0.24.x
- #5220: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.9 to 11.0.10 in /tests/apps/java
- #5212: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 218 to 219 in /tests/apps/php
- #5210: @dependabot[bot] chore(deps): bump monolog/monolog from 1.27.0 to 1.27.1 in /tests/apps/php
- #5204: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 217 to 218 in /tests/apps/php
## 0.27.5
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh
sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh
```
### Bug Fixes
- #5183: @josegonzalez Filter apps when verifying app names
- #5199: @josegonzalez Revert "fix: Vector fails to start container due to --watch-config flag"
- #5197: @holamendi fix: Vector fails to start container due to --watch-config flag
- #5192: @josegonzalez Confirm installation of universe packages when installing on ubuntu
- #5193: @josegonzalez Force-set correct permissions on env files
- #5181: @josegonzalez Ensure we default SSH_NAME to NAME when filtering apps
### New Features
- #5196: @josegonzalez Disable herokuish usage on both armhf and arm64 platforms
- #5194: @josegonzalez Upgrade base Dockerfile image to phusion/baseimage:focal-1.2.0
### Other
- #5200: @dependabot[bot] chore(deps): bump rack from 2.2.3 to 2.2.3.1 in /tests/apps/ruby
- #5198: @dependabot[bot] chore(deps): bump grunt from 1.5.2 to 1.5.3 in /tests/apps/multi
- #5187: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 216 to 217 in /tests/apps/php
## 0.27.4
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.4/bootstrap.sh
sudo DOKKU_TAG=v0.27.4 bash bootstrap.sh
```
### Documentation
- #5180: @Bilal-io fixes rst-versions height
## 0.27.3
Install/update via the bootstrap script:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.3/bootstrap.sh
sudo DOKKU_TAG=v0.27.3 bash bootstrap.sh
```
### Bug Fixes
- #5178: @josegonzalez Fix app filtering for authenticated usage
- #5173: @bitjockey42 Add 22.04 to supported distro versions
### Documentation
- #5179: @Bilal-io Fixes to the Docs version switcher
- #5177: @josegonzalez docs: cleanup experimental warning in scheduler docs
- #5176: @josegonzalez Update installation requirements to mention arm64 and ubuntu 22.04
- #5174: @vladdoster Fix typos and phrasing in remote commands documentation
## 0.27.2
Install/update via the bootstrap script:

View File

@@ -87,8 +87,8 @@ Otherwise, you will need to import the keypair manually after installation using
To install the latest stable release, run the following commands as a user who has access to `sudo`:
```shell
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.2/bootstrap.sh
sudo DOKKU_TAG=v0.27.2 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh
sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
```
You can then proceed to configure your server domain (via `dokku domains:set-global`) and user access (via `dokku ssh-keys:add`) to complete the installation.

View File

@@ -12,7 +12,7 @@ set -eo pipefail
# That's good because it prevents our output overlapping with wget's.
# It also means that we can't run a partially downloaded script.
SUPPORTED_VERSIONS="Debian [9, 10, 11], CentOS [7], Fedora (partial) [33, 34], Ubuntu [18.04, 20.04]"
SUPPORTED_VERSIONS="Debian [9, 10, 11], CentOS [7], Fedora (partial) [33, 34], Ubuntu [18.04, 20.04, 22.04]"
log-fail() {
declare desc="log fail formatter"
@@ -63,7 +63,7 @@ install-requirements() {
apt-get -qq -y --no-install-recommends install software-properties-common
fi
add-apt-repository universe >/dev/null
add-apt-repository -y universe >/dev/null
apt-get update -qq >/dev/null
;;
esac
@@ -163,7 +163,7 @@ install-dokku-from-deb-package() {
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
local OS_ID
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "9" "10" "11"; then
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "9" "10" "11"; then
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
fi

2
debian/control vendored
View File

@@ -1,5 +1,5 @@
Package: dokku
Version: 0.27.2
Version: 0.27.7
Section: web
Priority: optional
Architecture: amd64

View File

@@ -35,35 +35,35 @@ dokku plugin:list
```
plugn: dev
00_dokku-standard 0.27.2 enabled dokku core standard plugin
20_events 0.27.2 enabled dokku core events logging plugin
app-json 0.27.2 enabled dokku core app-json plugin
apps 0.27.2 enabled dokku core apps plugin
build-env 0.27.2 enabled dokku core build-env plugin
buildpacks 0.27.2 enabled dokku core buildpacks plugin
certs 0.27.2 enabled dokku core certificate management plugin
checks 0.27.2 enabled dokku core checks plugin
common 0.27.2 enabled dokku core common plugin
config 0.27.2 enabled dokku core config plugin
docker-options 0.27.2 enabled dokku core docker-options plugin
domains 0.27.2 enabled dokku core domains plugin
enter 0.27.2 enabled dokku core enter plugin
git 0.27.2 enabled dokku core git plugin
logs 0.27.2 enabled dokku core logs plugin
network 0.27.2 enabled dokku core network plugin
nginx-vhosts 0.27.2 enabled dokku core nginx-vhosts plugin
plugin 0.27.2 enabled dokku core plugin plugin
proxy 0.27.2 enabled dokku core proxy plugin
ps 0.27.2 enabled dokku core ps plugin
repo 0.27.2 enabled dokku core repo plugin
resource 0.27.2 enabled dokku core resource plugin
scheduler-docker-local 0.27.2 enabled dokku core scheduler-docker-local plugin
shell 0.27.2 enabled dokku core shell plugin
ssh-keys 0.27.2 enabled dokku core ssh-keys plugin
storage 0.27.2 enabled dokku core storage plugin
tags 0.27.2 enabled dokku core tags plugin
tar 0.27.2 enabled dokku core tar plugin
trace 0.27.2 enabled dokku core trace plugin
00_dokku-standard 0.27.7 enabled dokku core standard plugin
20_events 0.27.7 enabled dokku core events logging plugin
app-json 0.27.7 enabled dokku core app-json plugin
apps 0.27.7 enabled dokku core apps plugin
build-env 0.27.7 enabled dokku core build-env plugin
buildpacks 0.27.7 enabled dokku core buildpacks plugin
certs 0.27.7 enabled dokku core certificate management plugin
checks 0.27.7 enabled dokku core checks plugin
common 0.27.7 enabled dokku core common plugin
config 0.27.7 enabled dokku core config plugin
docker-options 0.27.7 enabled dokku core docker-options plugin
domains 0.27.7 enabled dokku core domains plugin
enter 0.27.7 enabled dokku core enter plugin
git 0.27.7 enabled dokku core git plugin
logs 0.27.7 enabled dokku core logs plugin
network 0.27.7 enabled dokku core network plugin
nginx-vhosts 0.27.7 enabled dokku core nginx-vhosts plugin
plugin 0.27.7 enabled dokku core plugin plugin
proxy 0.27.7 enabled dokku core proxy plugin
ps 0.27.7 enabled dokku core ps plugin
repo 0.27.7 enabled dokku core repo plugin
resource 0.27.7 enabled dokku core resource plugin
scheduler-docker-local 0.27.7 enabled dokku core scheduler-docker-local plugin
shell 0.27.7 enabled dokku core shell plugin
ssh-keys 0.27.7 enabled dokku core ssh-keys plugin
storage 0.27.7 enabled dokku core storage plugin
tags 0.27.7 enabled dokku core tags plugin
tar 0.27.7 enabled dokku core tar plugin
trace 0.27.7 enabled dokku core trace plugin
```
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.

View File

@@ -9,6 +9,8 @@ The [dokku-registry](https://github.com/dokku/dokku-registry) plugin is now buil
- At this time, remote docker repositories are not automatically created for AWS, and users must create those repositories for their applications as necessary. This may be implemented in the future.
- Docker images are only pushed when configured to do so. See the [registry management documentation](/docs/deployment/registry-management.md) for more details.
Before upgrading, uninstall the registry plugin via `dokku plugin:uninstall registry`. Not doing so will cause issues with Dokku.
## Other
### Changes

View File

@@ -2,10 +2,10 @@
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-310x150.png"/>
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-70x70.png"/>
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-150x150.png"/>
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-310x310.png"/>
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>

View File

@@ -2,37 +2,37 @@
"name": "Dokku",
"icons": [
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.27.7\/docs\/assets\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

View File

@@ -42,13 +42,13 @@ h1 {
font-size: 1.6em;
}
.header .navbar-brand a {
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/dokku.png);
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/dokku.png);
text-indent: 40px;
}
.blurb {
color: #424242;
background-color: #ededed;
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/gplaypattern.png);
background-image: url(https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/gplaypattern.png);
padding: 45px 0;
text-align: center;
}
@@ -542,10 +542,14 @@ ul.fas li .fa-large:before, ul.fas li .fa-large:before {
left: auto;
max-height: 600px;
max-width: 300px;
overflow: scroll;
overflow: hidden;
right: 20px;
width: auto;
}
.rst-versions.rst-badge.shift-up {
overflow-y: scroll;
height: calc(100vh - 100px);
}
.rst-versions.rst-badge .icon-book {
float: none
}

View File

@@ -24,6 +24,6 @@
"0.24.10",
"0.25.7",
"0.26.8",
"0.27.2"
"0.27.7"
]
}

View File

@@ -102,6 +102,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 0.4.0+ |
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>2</sup> | [AxelTheGerman][] | 0.27.0+ |
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
| [Nuke Containers](https://github.com/josegonzalez/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
| [Open App Ports](https://github.com/josegonzalez/dokku-ports) | [josegonzalez][] | 0.3.x |
@@ -116,13 +117,15 @@ The following plugins are available and provided by Dokku maintainers. Please f
<sup>1</sup> Extends app.json support to include creating volumes and creating / linking databases on push
<sup>2</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
<sup>2</sup> Adds SQLite replication to external object storage via [Litestream](https://litestream.io)
<sup>3</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
<sup>3</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
<sup>4</sup> Adds the ability to sync an application repo with a remote GitHub repo (useful for automated rebuilds without needing a git push from an external system
<sup>4</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
<sup>5</sup> Adds the ability to invoke a post-deploy webhook with the IP, port and app name, all with a single config:set).
<sup>5</sup> Adds the ability to sync an application repo with a remote GitHub repo (useful for automated rebuilds without needing a git push from an external system
<sup>6</sup> Adds the ability to invoke a post-deploy webhook with the IP, port and app name, all with a single config:set).
### Other Plugins
@@ -238,6 +241,7 @@ The following plugins are no longer maintained by their developers.
[aomitayo]: https://github.com/aomitayo
[apmorton]: https://github.com/apmorton
[artofrawr]: https://github.com/artofrawr
[AxelTheGerman]: https://github.com/AxelTheGerman
[badsyntax]: https://github.com/badsyntax
[basgys]: https://github.com/basgys
[benjamin-dobell]: https://github.com/benjamin-dobell

View File

@@ -14,7 +14,7 @@ config:keys (<app>|--global) [--merged]
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
config:unset [--no-restart] (<app>|--global) KEY1 [KEY2 ...] Unset one or more config vars
```
> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860).
> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860). Consider using [build arguments](/docs/deployment/builders/dockerfiles.md#build-time-configuration-variables) to expose variables during build-time for Dockerfile apps.
Environment variables are available both at run time and during the application build/compilation step for buildpack-based deploys.

View File

@@ -84,7 +84,7 @@ dokku builder-pack:set --global projecttoml-path
You can get a report about the app's storage status using the `builder-pack:report` command:
```shell
dokku app-json:report
dokku builder-pack:report
```
```

View File

@@ -62,7 +62,7 @@ dokku builder-dockerfile:set --global dockerfile-path
You can get a report about the app's storage status using the `builder-dockerfile:report` command:
```shell
dokku app-json:report
dokku builder-dockerfile:report
```
```

View File

@@ -20,6 +20,8 @@ You can easily get logs of an app using the `logs` command:
dokku logs node-js-app
```
Logs are pulled via integration with the scheduler for the specified application via "live tailing". As such, logs from previously running deployments are usually not available. Users that desire to see logs from previous deployments for debugging purposes should persist those logs to external services. Please see Dokku's [vector integration](deployment/logs.md#vector-logging-shipping) for more information on how to persist logs across deployments to ship logs to another service or a third-party platform.
#### Behavioral modifiers
Dokku also supports certain command-line arguments that augment the `log` command's behavior.

View File

@@ -2,7 +2,7 @@
Dokku commands can be run over SSH. Anywhere you would run `dokku <command>`, just run `ssh -t dokku@dokku.me <command>`
The `-t` is used to request a pty. It is highly recommended to do so.
To avoid the need to type the `-t` option each time, simply create/modify a section in the `.ssh/config` on the client side, as follows:
To avoid the need to type the `-t` option each time, create/modify a section in the `.ssh/config` on the client side, as follows:
```ini
Host dokku.me
@@ -12,7 +12,7 @@ Host dokku.me
## Behavioral modifiers
Dokku also supports certain command line arguments that augment its behavior. If using these over SSH, you must use the form `ssh -t dokku@dokku.me -- <command>`
in order to avoid SSH interpretting Dokku arguments for itself.
to avoid SSH interpreting Dokku arguments for itself.
```
--quiet suppress output headers
@@ -71,7 +71,7 @@ All commands have the application name automatically set via the `--app` flag on
The client supports several environment variables:
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overriden via `--remote` flag.
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag.
- `DOKKU_PORT` (default: `22`): Used to specify a port to connect to the Dokku server on.
It also supports several flags (all flags unspecified here are passed as is to the server):

View File

@@ -91,7 +91,11 @@ Omitting or removing the entry will result in parallelism for that process type
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
## Implemented Triggers
## Scheduler Interface
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
### Implemented Commands and Triggers
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-docker-local` plugin.
@@ -105,11 +109,16 @@ This plugin implements various functionality through `plugn` triggers to integra
- `ps:stop`
- `run`
## Supported Resource Management Properties
### Logging support
App logs for the `logs` command are fetched from running containers via the `docker` cli. To persist logs across deployments, consider using Dokku's [vector integration](deployment/logs.md#vector-logging-shipping) to ship logs to another service or a third-party platform.
### Supported Resource Management Properties
The `docker-local` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
### Resource Limits
#### Resource Limits
- cpu: (docker option: `--cpus`), is specified in number of CPUs a process can access.
- See the ["CPU" section](https://docs.docker.com/config/containers/resource_constraints/#cpu) of the Docker Runtime Options documentation for more information.
@@ -120,7 +129,7 @@ The `docker-local` scheduler supports a minimal list of resource _limits_ and _r
- nvidia-gpus: (docker option: `--gpus`), is specified in number of Nvidia GPUs a process can access.
- See the ["GPU" section](https://docs.docker.com/config/containers/resource_constraints/#gpu) of the Docker Runtime Options documentation for more information.
### Resource Reservations
#### Resource Reservations
- memory: (docker option: `--memory-reservation`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.

View File

@@ -1,14 +1,24 @@
# Kubernetes Scheduler
> Warning: This scheduler is not in Dokku core and thus is considered experimental.
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) implements the following functionality:
The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
## Scheduler Interface
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
### Implemented Commands and Triggers
This plugin implements various functionality through `plugn` triggers to integrate with `kubectl` for running apps on a Kubernetes cluster. The following functionality is supported by the `scheduler-kubernetes` plugin.
- `apps:destroy`
- `deploy`: partial, does not implement failed deploy log capture
- `logs`: partial, does not implement failure logs
- `ps:stop`
Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
### Logging support
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
App logs for the `logs` command are fetched from running pods via the `kubectl` cli. To persist logs across deployments, consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.

View File

@@ -1,13 +1,23 @@
# Nomad Scheduler
> Warning: This scheduler is not in Dokku core and thus is considered experimental.
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) implements the following functionality:
The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
## Scheduler Interface
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
### Implemented Commands and Triggers
This plugin implements various functionality through `plugn` triggers to integrate with the `nomad` cli for running apps on a Nomad cluster. The following functionality is supported by the `scheduler-nomad` plugin.
- `apps:destroy`
- `deploy`
- `ps:stop`
Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
### Logging support
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
> Warning: Fetching app logs for the `logs` command is currently not implemented. Please consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.

View File

@@ -74,6 +74,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-list`
- Description: Lists all apps in available to the currently logged in user. Optionally disables filtering by user if the first argument is `false`.
- Invoked by:
- Arguments: `$FILTER`
- Example:
```shell
#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
# TODO
```
### `app-json-process-deploy-parallelism`
- Description: Decides the parallelism to use when deploying a given process type. The default is 1 process entry at a type.

View File

@@ -29,7 +29,7 @@ The workflow looks like this:
```shell
# having dokku-arch in ../dokku-arch
vagrant up build-arch
# wait for "==> build-arch: ==> Finished making: dokku 0.27.2-2 (Mon Feb 22 23:20:37 CET 2016)"
# wait for "==> build-arch: ==> Finished making: dokku 0.27.7-2 (Mon Feb 22 23:20:37 CET 2016)"
cd ../dokku-arch
git add PKGBUILD .SRCINFO
git commit -m 'Update to dokku 0.9.9'

View File

@@ -3,7 +3,7 @@
Pull the dokku/dokku image:
```shell
docker pull dokku/dokku:0.27.2
docker pull dokku/dokku:0.27.7
```
Next, run the image.
@@ -18,7 +18,7 @@ docker container run \
--publish 8443:443 \
--volume /var/lib/dokku:/mnt/dokku \
--volume /var/run/docker.sock:/var/run/docker.sock \
dokku/dokku:0.27.2
dokku/dokku:0.27.7
```
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.

View File

@@ -9,12 +9,13 @@ Dokku is an extensible, open source Platform as a Service that runs on a single
To start using Dokku, you'll need a system that meets the following minimum requirements:
- A fresh installation of any of the following operating systems:
- [Ubuntu 18.04/20.04 x64](https://www.ubuntu.com/download)
- [Ubuntu 18.04/20.04/22.04](https://www.ubuntu.com/download)
- [Debian 9+ x64](https://www.debian.org/distrib/)
- [CentOS 7 x64](https://www.centos.org/download/) *(experimental)*
- A server with one of the following architectures
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
- ARMV7 (alternatively known as `armhf`), commonly used for Raspberry PI
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
@@ -38,8 +39,8 @@ To install the latest stable version of Dokku, you can run the following shell c
```shell
# for debian systems, installs Dokku via apt-get
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.2/bootstrap.sh;
sudo DOKKU_TAG=v0.27.2 bash bootstrap.sh
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh;
sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
```
The installation process takes about 5-10 minutes, depending upon internet connection speed.

View File

@@ -10,30 +10,30 @@
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<style>
</style>
@@ -98,12 +98,12 @@
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.27.2/bootstrap.sh</span>
<span class="command">wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh</span>
</p>
<p class="line">
<span class="path"></span>
<span class="prompt">$</span>
<span class="command">sudo DOKKU_TAG=v0.27.2 bash bootstrap.sh</span>
<span class="command">sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh</span>
</p>
<p class="line">
<span class="output">&nbsp;# Configure your server domain via `dokku domains:set-global`</span>

View File

@@ -9,26 +9,26 @@
<meta name="author" content="">
<title>Dokku - {{DOC_TITLE}}</title>
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/manifest.json">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/favicon.ico">
<meta name="apple-mobile-web-app-title" content="Dokku">
<meta name="application-name" content="Dokku">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/favicons/browserconfig.xml">
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/mstile-144x144.png">
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff">
<script>
@@ -42,7 +42,7 @@
</script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.2/docs/assets/style.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.27.7/docs/assets/style.css" rel="stylesheet">
<!-- <link href="/dokku/docs/assets/style.css" rel="stylesheet"> -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
<style>
@@ -500,6 +500,7 @@
}
addVersionLink('master');
versions.reverse();
Array.prototype.forEach.call(versions, function (version, i) {
addVersionLink(version);
});

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core standard plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -8,6 +8,7 @@ cmd-report() {
declare cmd="report"
[[ "$1" == "$cmd" ]] && shift 1
declare APP="$1"
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
if [[ "$APP" == "--format" ]]; then
dokku_log_fail "--format flag not supported on global report"
@@ -23,8 +24,8 @@ cmd-report() {
dokku_log_info1 "git version: $(git --version)"
dokku_log_info1 "sigil version: $(sigil -v)"
dokku_log_info1 "herokuish version: "
if [[ "$(dpkg --print-architecture 2>/dev/null || true)" == "armhf" ]]; then
dokku_log_warn "herokuish not supported on armhf architecture"
if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then
dokku_log_warn "herokuish not supported on $ARCHITECTURE architecture"
else
"$DOCKER_BIN" container run $DOKKU_GLOBAL_RUN_ARGS --rm "$DOKKU_IMAGE" herokuish version | sed "s/^/ /"
fi

6
plugins/20_events/app-list Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
[[ ! "$DOKKU_EVENTS" ]] || dokku_log_plugn_trigger_call "$(basename "$0")" "$@"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core events logging plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -497,7 +497,7 @@ func setScale(appName string, image string) error {
}
skipDeploy := true
clearExisting := false
clearExisting := true
args := []string{appName, strconv.FormatBool(skipDeploy), strconv.FormatBool(clearExisting)}
for processType, formation := range appJSON.Formation {
if formation.Quantity != nil {

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core app-json plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core apps plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -17,7 +17,7 @@ trigger-builder-dockerfile-builder-build() {
dokku_log_info1 "Building $APP from Dockerfile"
local IMAGE=$(get_app_image_name "$APP")
local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=build")
local DOCKER_BUILD_LABEL_ARGS=("--label=dokku" "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.image-stage=build" "--label=com.dokku.builder-type=dockerfile" "--label=com.dokku.app-name=$APP")
pushd "$SOURCECODE_WORK_DIR" &>/dev/null

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-dockerfile plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -23,8 +23,8 @@ trigger-builder-herokuish-builder-build() {
local IMAGE=$(get_app_image_name "$APP")
local DOKKU_APP_CACHE_DIR="$DOKKU_ROOT/$APP/cache"
local DOKKU_APP_HOST_CACHE_DIR="$DOKKU_HOST_ROOT/$APP/cache"
local DOCKER_COMMIT_LABEL_ARGS=("--change" "LABEL org.label-schema.schema-version=1.0" "--change" "LABEL org.label-schema.vendor=dokku" "--change" "LABEL com.dokku.app-name=$APP")
local DOCKER_RUN_LABEL_ARGS=("--label=com.dokku.image-stage=build" "--label=com.dokku.app-name=$APP")
local DOCKER_COMMIT_LABEL_ARGS=("--change" "LABEL dokku=" "--change" "LABEL org.label-schema.schema-version=1.0" "--change" "LABEL org.label-schema.vendor=dokku" "--change" "LABEL com.dokku.image-stage=build" "--change" "LABEL com.dokku.builder-type=herokuish" "--change" "LABEL com.dokku.app-name=$APP")
local DOCKER_RUN_LABEL_ARGS=("--label=dokku" "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.image-stage=build" "--label=com.dokku.builder-type=herokuish" "--label=com.dokku.app-name=$APP")
local CID TAR_CID
pushd "$SOURCECODE_WORK_DIR" &>/dev/null

View File

@@ -7,8 +7,9 @@ trigger-builder-herokuish-builder-detect() {
declare desc="builder-herokuish builder-detect plugin trigger"
declare trigger="builder-detect"
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
if [[ "$(dpkg --print-architecture 2>/dev/null || true)" == "armhf" ]]; then
if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then
return
fi

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-herokuish plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-null plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -33,7 +33,7 @@ trigger-builder-pack-builder-build() {
plugn trigger pre-build-pack "$APP" "$SOURCECODE_WORK_DIR"
pack build "$IMAGE" --builder "$DOKKU_CNB_BUILDER" --path "$SOURCECODE_WORK_DIR" --default-process web "${ENV_ARGS[@]}"
docker-image-labeler --label=com.dokku.image-stage=build --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE"
docker-image-labeler --label=dokku --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=pack --label=com.dokku.app-name=$APP "$IMAGE"
plugn trigger post-build-pack "$APP" "$SOURCECODE_WORK_DIR"
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder-pack plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core builder plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core buildpacks plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core certificate management plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -9,7 +9,7 @@ migrate_checks_vars_0_5_0() {
local GLOBAL_SKIP_ALL_CHECKS=$(config_get --global DOKKU_SKIP_ALL_CHECKS || true)
local GLOBAL_SKIP_DEFAULT_CHECKS=$(config_get --global DOKKU_SKIP_DEFAULT_CHECKS || true)
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
local APP_SKIP_ALL_CHECKS=$(config_get "$app" DOKKU_SKIP_ALL_CHECKS || true)
local APP_SKIP_DEFAULT_CHECKS=$(config_get "$app" DOKKU_SKIP_DEFAULT_CHECKS || true)
@@ -35,7 +35,7 @@ migrate_checks_vars_0_5_0() {
migrate_checks_vars_0_6_0() {
declare desc="migrates CHECKS config variables from 0.5.x to support fully-disabled zero-downtime checks"
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
local APP_DOKKU_CHECKS_ENABLED=$(config_get "$app" DOKKU_CHECKS_ENABLED || true)
if [[ $APP_DOKKU_CHECKS_ENABLED ]]; then
dokku_log_info1 "Migrating zero downtime env variables to 0.6.x. The following variables will be migrated"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core checks plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -245,6 +245,16 @@ func GetRunningImageTag(appName string, imageTag string) (string, error) {
// DokkuApps returns a list of all local apps
func DokkuApps() ([]string, error) {
apps, err := UnfilteredDokkuApps()
if err != nil {
return apps, err
}
return filterApps(apps)
}
// UnfilteredDokkuApps returns an unfiltered list of all local apps
func UnfilteredDokkuApps() ([]string, error) {
apps := []string{}
dokkuRoot := MustGetEnv("DOKKU_ROOT")
files, err := ioutil.ReadDir(dokkuRoot)
@@ -267,7 +277,7 @@ func DokkuApps() ([]string, error) {
return apps, fmt.Errorf("You haven't deployed any applications yet")
}
return filterApps(apps)
return apps, nil
}
// GetAppImageName returns image identifier for a given app, tag tuple. validate if tag is presented
@@ -571,6 +581,11 @@ func VerifyAppName(appName string) error {
return &AppDoesNotExist{appName}
}
apps, _ := filterApps([]string{appName})
if len(apps) != 1 {
return &AppDoesNotExist{appName}
}
return nil
}

View File

@@ -20,6 +20,10 @@ var (
testEnvLine2 = "export testKey=TESTING"
)
func setupTests() (err error) {
return os.Setenv("PLUGIN_ENABLED_PATH", "/var/lib/dokku/plugins/enabled")
}
func setupTestApp() (err error) {
Expect(os.MkdirAll(testAppDir, 0644)).To(Succeed())
b := []byte(testEnvLine + "\n")
@@ -48,32 +52,37 @@ func teardownTestApp2() {
func TestCommonGetEnv(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(MustGetEnv("DOKKU_ROOT")).To(Equal("/home/dokku"))
}
func TestCommonGetAppImageRepo(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(GetAppImageRepo("testapp")).To(Equal("dokku/testapp"))
}
func TestCommonVerifyImageInvalid(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(VerifyImage("testapp")).To(Equal(false))
}
func TestCommonVerifyAppNameInvalid(t *testing.T) {
RegisterTestingT(t)
err := VerifyAppName("1994testApp")
Expect(err).To(HaveOccurred())
Expect(setupTests()).To(Succeed())
Expect(VerifyAppName("1994testApp")).To(HaveOccurred())
}
func TestCommonVerifyAppName(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
Expect(VerifyAppName(testAppName)).To(Succeed())
teardownTestApp()
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp2()).To(Succeed())
Expect(VerifyAppName(testAppName2)).To(Succeed())
teardownTestApp2()
@@ -81,13 +90,14 @@ func TestCommonVerifyAppName(t *testing.T) {
func TestCommonDokkuAppsError(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
_, err := DokkuApps()
Expect(err).To(HaveOccurred())
}
func TestCommonDokkuApps(t *testing.T) {
RegisterTestingT(t)
os.Setenv("PLUGIN_ENABLED_PATH", "/var/lib/dokku/plugins/enabled")
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
apps, err := DokkuApps()
Expect(err).NotTo(HaveOccurred())
@@ -98,6 +108,7 @@ func TestCommonDokkuApps(t *testing.T) {
func TestCommonStripInlineComments(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
text := StripInlineComments(strings.Join([]string{testEnvLine, "# testing comment"}, " "))
Expect(text).To(Equal(testEnvLine))
}

View File

@@ -17,7 +17,8 @@ has_tty() {
dokku_apps() {
declare desc="prints list of all local apps"
local INSTALLED_APPS="$(plugn trigger app-list)"
declare FILTER="$1"
local INSTALLED_APPS="$(plugn trigger app-list "$FILTER")"
if [[ -z "$INSTALLED_APPS" ]]; then
dokku_log_fail "You haven't deployed any applications yet"
fi
@@ -249,23 +250,12 @@ is_valid_app_name_old() {
verify_app_name() {
declare desc="verify app name format and app existence"
declare APP="$1"
local VALID_NEW=false
local VALID_OLD=false
if fn-is-valid-app-name "$APP" 2>/dev/null; then
VALID_NEW=true
if "$PLUGIN_CORE_AVAILABLE_PATH/common/common" --quiet verify-app-name "$APP"; then
return 0
fi
if fn-is-valid-app-name-old "$APP" 2>/dev/null; then
VALID_OLD=true
fi
if [[ "$VALID_NEW" == "false" ]] && [[ "$VALID_OLD" == "false" ]]; then
dokku_log_fail "App name must begin with lowercase alphanumeric character, and cannot include uppercase characters, colons, or underscores"
fi
[[ ! -d "$DOKKU_ROOT/$APP" ]] && DOKKU_FAIL_EXIT_CODE=20 dokku_log_fail "App $APP does not exist"
return 0
DOKKU_FAIL_EXIT_CODE=20 dokku_log_fail "App $APP does not exist"
}
verify_image() {

View File

@@ -17,6 +17,9 @@ func filterApps(apps []string) ([]string, error) {
}
sshName := os.Getenv("SSH_NAME")
if sshName == "" {
sshName = os.Getenv("NAME")
}
if sshName == "" {
sshName = "default"
}

View File

@@ -61,6 +61,19 @@ func LogFailWithError(err error) {
os.Exit(1)
}
// LogFailWithErrorQuiet is the failure log formatter (with quiet option)
// prints text to stderr and exits with the specified exit code
// The error message is not printed if DOKKU_QUIET_OUTPUT has any value
func LogFailWithErrorQuiet(err error) {
if os.Getenv("DOKKU_QUIET_OUTPUT") == "" {
fmt.Fprintln(os.Stderr, fmt.Sprintf(" ! %s", err.Error()))
}
if errExit, ok := err.(ErrWithExitCode); ok {
os.Exit(errExit.ExitCode())
}
os.Exit(1)
}
// LogFailQuiet is the failure log formatter (with quiet option)
// prints text to stderr and exits with status 1
func LogFailQuiet(text string) {

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core common plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -38,11 +38,14 @@ func main() {
appName = "--global"
}
fmt.Print(common.GetAppScheduler(appName))
case "verify-app-name":
appName := flag.Arg(1)
err = common.VerifyAppName(appName)
default:
err = fmt.Errorf("Invalid common command call: %v", cmd)
}
if err != nil {
common.LogFailQuiet(err.Error())
common.LogFailWithErrorQuiet(err)
}
}

View File

@@ -18,7 +18,12 @@ func main() {
var err error
switch trigger {
case "app-list":
err = common.TriggerAppList()
filtered := flag.Arg(0)
if filtered == "" {
filtered = "true"
}
filter := common.ToBool(filtered)
err = common.TriggerAppList(filter)
case "core-post-deploy":
appName := flag.Arg(0)
err = common.TriggerCorePostDeploy(appName)

View File

@@ -6,8 +6,14 @@ import (
)
// TriggerAppList outputs each app name to stdout on a newline
func TriggerAppList() error {
apps, _ := DokkuApps()
func TriggerAppList(filtered bool) error {
var apps []string
if filtered {
apps, _ = DokkuApps()
} else {
apps, _ = UnfilteredDokkuApps()
}
for _, app := range apps {
Log(app)
}
@@ -30,7 +36,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the common plugin: %s", err.Error())
}
apps, err := DokkuApps()
apps, err := UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -1,6 +1,12 @@
SUBCOMMANDS = subcommands/bundle subcommands/clear subcommands/export subcommands/get subcommands/keys subcommands/show subcommands/set subcommands/unset
TRIGGERS = triggers/config-export triggers/config-get triggers/config-get-global
BUILD = commands subcommands triggers
BUILD = commands config_sub subcommands triggers
PLUGIN_NAME = config
clean-config_sub:
rm -rf config_sub
config_sub: clean-config_sub **/**/config_sub.go
go build -ldflags="-s -w" $(GO_ARGS) -o config_sub src/config_sub/config_sub.go
include ../../common.mk

View File

@@ -52,6 +52,7 @@ func SetMany(appName string, entries map[string]string, restart bool) (err error
fmt.Println(prettyPrintEnvEntries(" ", entries))
}
env.Write()
common.SetPermissions(env.Filename(), 0600)
triggerUpdate(appName, "set", keys)
}
if !global && restart && env.GetBoolDefault("DOKKU_APP_RESTORE", true) {
@@ -84,6 +85,7 @@ func UnsetMany(appName string, keys []string, restart bool) (err error) {
}
if changed {
env.Write()
common.SetPermissions(env.Filename(), 0600)
triggerUpdate(appName, "unset", keys)
}
if !global && restart && env.GetBoolDefault("DOKKU_APP_RESTORE", true) {
@@ -107,6 +109,7 @@ func UnsetAll(appName string, restart bool) (err error) {
}
if changed {
env.Write()
common.SetPermissions(env.Filename(), 0600)
triggerUpdate(appName, "clear", []string{})
}
if !global && restart && env.GetBoolDefault("DOKKU_APP_RESTORE", true) {

View File

@@ -18,6 +18,10 @@ var (
globalConfigFile = strings.Join([]string{dokkuRoot, "ENV"}, "/")
)
func setupTests() (err error) {
return os.Setenv("PLUGIN_ENABLED_PATH", "/var/lib/dokku/plugins/enabled")
}
func setupTestApp() (err error) {
Expect(os.MkdirAll(testAppDir, 0766)).To(Succeed())
b := []byte("export testKey=TESTING\n")
@@ -38,6 +42,7 @@ func teardownTestApp() {
func TestConfigGetWithDefault(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
Expect(GetWithDefault(testAppName, "unknownKey", "UNKNOWN")).To(Equal("UNKNOWN"))
Expect(GetWithDefault(testAppName, "testKey", "testKey")).To(Equal("TESTING"))
@@ -47,6 +52,7 @@ func TestConfigGetWithDefault(t *testing.T) {
func TestConfigGet(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
@@ -59,45 +65,48 @@ func TestConfigGet(t *testing.T) {
func TestConfigSetMany(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
expectValue(testAppName, "testKey", "TESTING")
vals := map[string]string{"testKey": "updated", "testKey2": "new"}
Expect(SetMany(testAppName, vals, false)).To(Succeed())
vals := []string{"testKey=updated", "testKey2=new"}
Expect(CommandSet(testAppName, vals, false, true, false)).To(Succeed())
expectValue(testAppName, "testKey", "updated")
expectValue(testAppName, "testKey2", "new")
vals = map[string]string{"testKey": "updated_global", "testKey2": "new_global"}
Expect(SetMany("", vals, false)).To(Succeed())
vals = []string{"testKey=updated_global", "testKey2=new_global"}
Expect(CommandSet("", vals, true, true, false)).To(Succeed())
expectValue("", "testKey", "updated_global")
expectValue("", "testKey2", "new_global")
expectValue("", "globalKey", "GLOBAL_VALUE")
expectValue(testAppName, "testKey", "updated")
expectValue(testAppName, "testKey2", "new")
Expect(SetMany(testAppName+"does_not_exist", vals, false)).ToNot(Succeed())
Expect(CommandSet(testAppName+"does_not_exist", vals, false, true, false)).ToNot(Succeed())
}
func TestConfigUnsetAll(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
expectValue(testAppName, "testKey", "TESTING")
expectValue("", "testKey", "GLOBAL_TESTING")
Expect(UnsetAll(testAppName, false)).To(Succeed())
Expect(CommandClear(testAppName, false, true)).To(Succeed())
expectNoValue(testAppName, "testKey")
expectNoValue(testAppName, "noKey")
expectNoValue(testAppName, "globalKey")
Expect(UnsetAll(testAppName+"does-not-exist", false)).ToNot(Succeed())
Expect(CommandClear(testAppName+"does-not-exist", false, true)).ToNot(Succeed())
}
func TestConfigUnsetMany(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
@@ -105,19 +114,20 @@ func TestConfigUnsetMany(t *testing.T) {
expectValue("", "testKey", "GLOBAL_TESTING")
keys := []string{"testKey", "noKey"}
Expect(UnsetMany(testAppName, keys, false)).To(Succeed())
Expect(CommandUnset(testAppName, keys, false, true)).To(Succeed())
expectNoValue(testAppName, "testKey")
expectValue("", "testKey", "GLOBAL_TESTING")
Expect(UnsetMany(testAppName, keys, false)).To(Succeed())
Expect(CommandUnset(testAppName, keys, false, true)).To(Succeed())
expectNoValue(testAppName, "testKey")
expectNoValue(testAppName, "globalKey")
Expect(UnsetMany(testAppName+"does-not-exist", keys, false)).ToNot(Succeed())
Expect(CommandUnset(testAppName+"does-not-exist", keys, false, true)).ToNot(Succeed())
}
func TestEnvironmentLoading(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
@@ -142,6 +152,7 @@ func TestEnvironmentLoading(t *testing.T) {
func TestInvalidKeys(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()
@@ -158,6 +169,7 @@ func TestInvalidKeys(t *testing.T) {
func TestInvalidEnvOnDisk(t *testing.T) {
RegisterTestingT(t)
Expect(setupTests()).To(Succeed())
Expect(setupTestApp()).To(Succeed())
defer teardownTestApp()

View File

@@ -60,10 +60,6 @@ func newEnvFromString(rep string) (env *Env, err error) {
//LoadAppEnv loads an environment for the given app
func LoadAppEnv(appName string) (env *Env, err error) {
err = common.VerifyAppName(appName)
if err != nil {
return
}
appfile, err := getAppFile(appName)
if err != nil {
return
@@ -92,6 +88,11 @@ func LoadGlobalEnv() (*Env, error) {
return loadFromFile("<global>", getGlobalFile())
}
// Filename returns the full path on disk to the file holding the env vars
func (e *Env) Filename() string {
return e.filename
}
//Get an environment variable
func (e *Env) Get(key string) (value string, ok bool) {
value, ok = e.env[key]
@@ -352,10 +353,6 @@ func loadFromFile(name string, filename string) (env *Env, err error) {
}
func getAppFile(appName string) (string, error) {
err := common.VerifyAppName(appName)
if err != nil {
return "", err
}
return filepath.Join(common.MustGetEnv("DOKKU_ROOT"), appName, "ENV"), nil
}

View File

@@ -7,7 +7,7 @@ config_sub() {
declare desc="executes a config subcommand"
local name="$1"
shift
"$PLUGIN_AVAILABLE_PATH/config/subcommands/$name" "config:$name" "$@"
"$PLUGIN_AVAILABLE_PATH/config/config_sub" "$name" "$@"
}
config_export() {

View File

@@ -1,13 +1,16 @@
package config
import "fmt"
import (
"encoding/base64"
"errors"
"fmt"
"os"
"strings"
func export(appName string, global bool, merged bool, format string) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
"github.com/dokku/dokku/plugins/common"
)
func export(appName string, merged bool, format string) error {
env := getEnvironment(appName, merged)
exportType := ExportFormatExports
suffix := "\n"
@@ -37,3 +40,113 @@ func export(appName string, global bool, merged bool, format string) error {
fmt.Print(exported + suffix)
return nil
}
// SubBundle implements the logic for config:bundle without app name validation
func SubBundle(appName string, merged bool) error {
env := getEnvironment(appName, merged)
return env.ExportBundle(os.Stdout)
}
// SubClear implements the logic for config:clear without app name validation
func SubClear(appName string, noRestart bool) error {
return UnsetAll(appName, !noRestart)
}
// SubExport implements the logic for config:export without app name validation
func SubExport(appName string, merged bool, format string) error {
return export(appName, merged, format)
}
// SubGet implements the logic for config:get without app name validation
func SubGet(appName string, keys []string, quoted bool) error {
if len(keys) == 0 {
return errors.New("Expected: key")
}
if len(keys) != 1 {
return fmt.Errorf("Unexpected argument(s): %v", keys[1:])
}
value, ok := Get(appName, keys[0])
if !ok {
os.Exit(1)
return nil
}
if quoted {
fmt.Printf("'%s'\n", singleQuoteEscape(value))
} else {
fmt.Printf("%s\n", value)
}
return nil
}
// SubKeys implements the logic for config:keys without app name validation
func SubKeys(appName string, merged bool) error {
env := getEnvironment(appName, merged)
for _, k := range env.Keys() {
fmt.Println(k)
}
return nil
}
// SubSet implements the logic for config:set without app name validation
func SubSet(appName string, pairs []string, noRestart bool, encoded bool) error {
if len(pairs) == 0 {
return errors.New("At least one env pair must be given")
}
updated := make(map[string]string)
for _, e := range pairs {
parts := strings.SplitN(e, "=", 2)
if len(parts) == 1 {
return fmt.Errorf("Invalid env pair: %v", e)
}
key, value := parts[0], parts[1]
if encoded {
decoded, err := base64.StdEncoding.DecodeString(value)
if err != nil {
return fmt.Errorf("%s for key '%s'", err.Error(), key)
}
value = string(decoded)
}
updated[key] = value
}
return SetMany(appName, updated, !noRestart)
}
// SubShow implements the logic for config:show without app name validation
func SubShow(appName string, merged bool, shell bool, export bool) error {
env := getEnvironment(appName, merged)
if shell && export {
return errors.New("Only one of --shell and --export can be given")
}
if shell {
common.LogWarn("Deprecated: Use 'config:export --format shell' instead")
fmt.Print(env.Export(ExportFormatShell))
} else if export {
common.LogWarn("Deprecated: Use 'config:export --format exports' instead")
fmt.Println(env.Export(ExportFormatExports))
} else {
contextName := "global"
if appName != "" {
contextName = appName
}
common.LogInfo2Quiet(contextName + " env vars")
fmt.Println(env.Export(ExportFormatPretty))
}
return nil
}
// SubUnset implements the logic for config:unset without app name validation
func SubUnset(appName string, keys []string, noRestart bool) error {
if len(keys) == 0 {
return fmt.Errorf("At least one key must be given")
}
return UnsetMany(appName, keys, !noRestart)
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core config plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -0,0 +1,112 @@
package main
import (
"fmt"
"os"
"github.com/dokku/dokku/plugins/common"
"github.com/dokku/dokku/plugins/config"
flag "github.com/spf13/pflag"
)
func getKeys(args []string, global bool) []string {
keys := args
if !global && len(keys) > 0 {
keys = keys[1:]
}
return keys
}
// main entrypoint to all subcommands
func main() {
action := os.Args[1]
var err error
appName := "--global"
switch action {
case "bundle":
args := flag.NewFlagSet("bundle", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
merged := args.Bool("merged", false, "--merged: merge app environment and global environment")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
err = config.SubBundle(appName, *merged)
case "clear":
args := flag.NewFlagSet("clear", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
noRestart := args.Bool("no-restart", false, "--no-restart: no restart")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
err = config.SubClear(appName, *noRestart)
case "export":
args := flag.NewFlagSet("export", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
merged := args.Bool("merged", false, "--merged: merge app environment and global environment")
format := args.String("format", "exports", "--format: [ docker-args | docker-args-keys | exports | envfile | json | json-list | pack-keys | pretty | shell ] which format to export as)")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
err = config.SubExport(appName, *merged, *format)
case "get":
args := flag.NewFlagSet("get", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
quoted := args.Bool("quoted", false, "--quoted: get the value quoted")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
keys := getKeys(args.Args(), *global)
err = config.SubGet(appName, keys, *quoted)
case "keys":
args := flag.NewFlagSet("keys", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
merged := args.Bool("merged", false, "--merged: merge app environment and global environment")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
err = config.SubKeys(appName, *merged)
case "show":
args := flag.NewFlagSet("show", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
merged := args.Bool("merged", false, "--merged: display the app's environment merged with the global environment")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
err = config.SubShow(appName, *merged, false, false)
case "set":
args := flag.NewFlagSet("set", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
encoded := args.Bool("encoded", false, "--encoded: interpret VALUEs as base64")
noRestart := args.Bool("no-restart", false, "--no-restart: no restart")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
pairs := getKeys(args.Args(), *global)
err = config.SubSet(appName, pairs, *noRestart, *encoded)
case "unset":
args := flag.NewFlagSet("unset", flag.ExitOnError)
global := args.Bool("global", false, "--global: use the global environment")
noRestart := args.Bool("no-restart", false, "--no-restart: no restart")
args.Parse(os.Args[2:])
if !*global {
appName = args.Arg(0)
}
keys := getKeys(args.Args(), *global)
err = config.SubUnset(appName, keys, *noRestart)
default:
err = fmt.Errorf("Invalid plugin config_sub call: %s", action)
}
if err != nil {
common.LogFailWithError(err)
}
}

View File

@@ -1,156 +1,83 @@
package config
import (
"encoding/base64"
"errors"
"fmt"
"os"
"strings"
"github.com/dokku/dokku/plugins/common"
)
// CommandBundle implements config:bundle
// CommandBundle creates a tarball of a .env.d directory
// containing env vars for the app
func CommandBundle(appName string, global bool, merged bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
env := getEnvironment(appName, merged)
return env.ExportBundle(os.Stdout)
return SubBundle(appName, merged)
}
// CommandClear implements config:clear
// CommandClear unsets all environment variables in use
func CommandClear(appName string, global bool, noRestart bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
return UnsetAll(appName, !noRestart)
return SubClear(appName, noRestart)
}
// CommandExport implements config:export
// CommandExport outputs all env vars (merged or not, global or not)
// in the specified format for consumption by other tools
func CommandExport(appName string, global bool, merged bool, format string) error {
return export(appName, global, merged, format)
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
return SubExport(appName, merged, format)
}
// CommandGet implements config:get
// CommandGet gets the value for the specified environment variable
func CommandGet(appName string, keys []string, global bool, quoted bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
if len(keys) == 0 {
return errors.New("Expected: key")
}
if len(keys) != 1 {
return fmt.Errorf("Unexpected argument(s): %v", keys[1:])
}
value, ok := Get(appName, keys[0])
if !ok {
os.Exit(1)
return nil
}
if quoted {
fmt.Printf("'%s'\n", singleQuoteEscape(value))
} else {
fmt.Printf("%s\n", value)
}
return nil
return SubGet(appName, keys, quoted)
}
// CommandKeys implements config:keys
// CommandKeys shows the keys set for the specified environment
func CommandKeys(appName string, global bool, merged bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
env := getEnvironment(appName, merged)
for _, k := range env.Keys() {
fmt.Println(k)
}
return nil
return SubKeys(appName, merged)
}
// CommandSet implements config:set
// CommandSet sets one or more environment variable pairs
func CommandSet(appName string, pairs []string, global bool, noRestart bool, encoded bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
if len(pairs) == 0 {
return errors.New("At least one env pair must be given")
}
updated := make(map[string]string)
for _, e := range pairs {
parts := strings.SplitN(e, "=", 2)
if len(parts) == 1 {
return fmt.Errorf("Invalid env pair: %v", e)
}
key, value := parts[0], parts[1]
if encoded {
decoded, err := base64.StdEncoding.DecodeString(value)
if err != nil {
return fmt.Errorf("%s for key '%s'", err.Error(), key)
}
value = string(decoded)
}
updated[key] = value
}
return SetMany(appName, updated, !noRestart)
return SubSet(appName, pairs, noRestart, encoded)
}
// CommandShow implements config:show
// CommandShow pretty-prints the specified environment vaiables
func CommandShow(appName string, global bool, merged bool, shell bool, export bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
env := getEnvironment(appName, merged)
if shell && export {
return errors.New("Only one of --shell and --export can be given")
}
if shell {
common.LogWarn("Deprecated: Use 'config:export --format shell' instead")
fmt.Print(env.Export(ExportFormatShell))
} else if export {
common.LogWarn("Deprecated: Use 'config:export --format exports' instead")
fmt.Println(env.Export(ExportFormatExports))
} else {
contextName := "global"
if appName != "" {
contextName = appName
}
common.LogInfo2Quiet(contextName + " env vars")
fmt.Println(env.Export(ExportFormatPretty))
}
return nil
return SubShow(appName, merged, shell, export)
}
// CommandUnset implements config:unset
// CommandUnset unsets one or more keys in a specified environment
func CommandUnset(appName string, keys []string, global bool, noRestart bool) error {
appName, err := getAppNameOrGlobal(appName, global)
if err != nil {
return err
}
if len(keys) == 0 {
return fmt.Errorf("At least one key must be given")
}
return UnsetMany(appName, keys, !noRestart)
return SubUnset(appName, keys, noRestart)
}

View File

@@ -16,7 +16,13 @@ func TriggerConfigExport(appName string, global string, merged string, format st
if err != nil {
return err
}
return export(appName, g, m, format)
appName, err = getAppNameOrGlobal(appName, g)
if err != nil {
return err
}
return export(appName, m, format)
}
// TriggerConfigGet returns an app config value by key

View File

@@ -99,7 +99,7 @@ func deleteCrontab() error {
}
func writeCronEntries() error {
apps, _ := common.DokkuApps()
apps, _ := common.UnfilteredDokkuApps()
commands := []templateCommand{}
for _, appName := range apps {
scheduler := common.GetAppScheduler(appName)

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core cron plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core docker-options plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -8,7 +8,7 @@ trigger-domains-install() {
declare trigger="install"
shopt -s nullglob
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
domains_setup "$app"
done
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core domains plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core enter plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -58,7 +58,19 @@ git_trigger_build() {
plugn trigger post-extract "$APP" "$TMP_WORK_DIR" "$REV"
BUILDER="$(plugn trigger builder-detect "$APP" "$TMP_WORK_DIR" | head -n1 || true)"
[[ -z "$BUILDER" ]] && BUILDER="herokuish"
if [[ -z "$BUILDER" ]]; then
BUILDER="herokuish"
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
if [[ "$ARCHITECTURE" == "arm64" ]]; then
dokku_log_warn "Herokuish builder not supported on $ARCHITECTURE servers."
dokku_log_warn "Switching to pack builder."
BUILDER="pack"
elif [[ "$ARCHITECTURE" == "armhf" ]]; then
dokku_log_warn "Herokuish builder not supported on $ARCHITECTURE servers."
dokku_log_warn "Consider using a Dockerfile to build your app."
return 1
fi
fi
plugn trigger pre-receive-app "$APP" "$BUILDER" "$TMP_WORK_DIR" "$REV"
dokku_receive "$APP" "$BUILDER" "$TMP_WORK_DIR"

View File

@@ -26,7 +26,7 @@ migrate_git_vars_0_12_0() {
DOKKU_QUIET_OUTPUT=1 config_unset --global DOKKU_DEPLOY_BRANCH || true
fi
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
DOKKU_DEPLOY_BRANCH=$(config_get "$app" DOKKU_DEPLOY_BRANCH || true)
if [[ -n "$DOKKU_DEPLOY_BRANCH" ]]; then
fn-plugin-property-write "git" "$app" "deploy-branch" "$DOKKU_DEPLOY_BRANCH"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core git plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -157,7 +157,7 @@ func sinkValueToConfig(appName string, sinkValue string) (vectorSink, error) {
}
func writeVectorConfig() error {
apps, _ := common.DokkuApps()
apps, _ := common.UnfilteredDokkuApps()
data := vectorConfig{
Sources: map[string]vectorSource{},
Sinks: map[string]vectorSink{},
@@ -168,18 +168,18 @@ func writeVectorConfig() error {
continue
}
appName = strings.ReplaceAll(appName, ".", "-")
sink, err := sinkValueToConfig(appName, value)
inflectedAppName := strings.ReplaceAll(appName, ".", "-")
sink, err := sinkValueToConfig(inflectedAppName, value)
if err != nil {
return err
}
data.Sources[fmt.Sprintf("docker-source:%s", appName)] = vectorSource{
data.Sources[fmt.Sprintf("docker-source:%s", inflectedAppName)] = vectorSource{
Type: "docker_logs",
IncludeLabels: []string{fmt.Sprintf("com.dokku.app-name=%s", appName)},
}
data.Sinks[fmt.Sprintf("docker-sink:%s", appName)] = sink
data.Sinks[fmt.Sprintf("docker-sink:%s", inflectedAppName)] = sink
}
value := common.PropertyGet("logs", "--global", "vector-sink")

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core logs plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core network plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -33,7 +33,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the network plugin: %s", err.Error())
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -109,7 +109,7 @@ validate_nginx() {
verify_app_name "$APP"
nginx_vhosts_validate_single_func "$APP" "$FLAG"
else
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
nginx_vhosts_validate_single_func "$app" "$FLAG"
done
fi

View File

@@ -95,7 +95,7 @@ trigger-nginx-vhosts-install() {
[[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx
# @TODO: Remove this after a few versions
for app in $(dokku_apps); do
for app in $(dokku_apps "false"); do
nginx_port="$(config_get "$app" DOKKU_NGINX_PORT || true)"
nginx_ssl_port="$(config_get "$app" DOKKU_NGINX_SSL_PORT || true)"
if [[ -n "$nginx_port" ]] || [[ -n "$nginx_ssl_port" ]]; then

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core nginx-vhosts plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core plugin plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core proxy plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core ps plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -74,7 +74,7 @@ func TriggerInstall() error {
return err
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core registry plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core repo plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core resource plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core run plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler-docker-local plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler-null plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core scheduler plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -31,7 +31,7 @@ func TriggerInstall() error {
return fmt.Errorf("Unable to install the scheduler plugin: %s", err.Error())
}
apps, err := common.DokkuApps()
apps, err := common.UnfilteredDokkuApps()
if err != nil {
return nil
}

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core shell plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core ssh-keys plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -5,9 +5,9 @@ set -eo pipefail
trigger-storage-install() {
declare desc="storage install trigger"
declare trigger="install"
local storage_directory="${DOKKU_LIB_ROOT}/data/storage"
mkdir -p "${storage_directory}"
chown dokku:dokku "${storage_directory}"
mkdir -p "${DOKKU_LIB_ROOT}/data/storage"
chown "${DOKKU_SYSTEM_USER}:${DOKKU_SYSTEM_GROUP}" "${DOKKU_LIB_ROOT}/data/storage"
STORAGE_SUDOERS_FILE="/etc/sudoers.d/dokku-storage"
local mode="0440"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core storage plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku core trace plugin"
version = "0.27.2"
version = "0.27.7"
[plugin.config]

View File

@@ -10,7 +10,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>11.0.9</version>
<version>11.0.11</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>

View File

@@ -11,7 +11,7 @@
"license": "ISC",
"dependencies": {
"bower": "^1.8.0",
"grunt": "~1.5.2",
"grunt": "~1.5.3",
"grunt-cli": "~1.4.3",
"grunt-contrib-compass": "~1.1.1",
"load-grunt-tasks": "~5.1.0",
@@ -517,9 +517,9 @@
}
},
"node_modules/grunt": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.2.tgz",
"integrity": "sha512-XCtfaIu72OyDqK24MjWiGC9SwlkuhkS1mrULr1xzuJ2XqAFhP3ZAchZGHJeSCY6mkaOXU4F7SbmmCF7xIVoC9w==",
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz",
"integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==",
"dependencies": {
"dateformat": "~3.0.3",
"eventemitter2": "~0.4.13",
@@ -2110,9 +2110,9 @@
}
},
"grunt": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.2.tgz",
"integrity": "sha512-XCtfaIu72OyDqK24MjWiGC9SwlkuhkS1mrULr1xzuJ2XqAFhP3ZAchZGHJeSCY6mkaOXU4F7SbmmCF7xIVoC9w==",
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-1.5.3.tgz",
"integrity": "sha512-mKwmo4X2d8/4c/BmcOETHek675uOqw0RuA/zy12jaspWqvTp4+ZeQF1W+OTpcbncnaBsfbQJ6l0l4j+Sn/GmaQ==",
"requires": {
"dateformat": "~3.0.3",
"eventemitter2": "~0.4.13",

Some files were not shown because too many files have changed in this diff Show More