Commit Graph

9160 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
72e8c8d978 tests: correct assertion for dockerfile builds when a variable is eval'd 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
aee691a5fb fix: use correct namespace for haproxy service state tracking 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
622548057c tests: add assertions to various bats tests
Missing these assertions didn't necessarily break tests but they are more correct and having them should help suss out bugs.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
69e56fc976 fix: remove debugging code from builder-dockerfile plugin 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
c1279468d8 fix: use correct quoting in format template when fetching exposed image ports 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
d6468f4713 tests: use assert_output_not_exists instead of asserting output is empty string 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
1467aaea74 tests: fix issue where networks weren't being torn down during testing
Due to how the variable was assigned, there were cases where the network was specified twice with a := as a delimiter. This would result in no network being removed.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
5717e71755 tests: use an alternative curl request to ensure requests go to the local nginx
The alternative is to rely on DNS and /etc/hosts rules, which isn't quite great because it requires modifying the system.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
04905bf553 fix: run go mod update 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
2b1e173c03 fix: do not write empty values for nginx container labels
This ensures the nginx-docker-proxy project doesn't use the empty values as explicit values.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
3f127a7cc4 feat: inject docker labels when nginx proxy implementation is in use
This will allow users to switch to a docker label-based nginx proxy server transparently without rebuilds (after the first one), which would mimic how the caddy, haproxy, and traefik proxy implementations work.

See https://github.com/dokku/nginx-docker-proxy for an example server implementation.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
4bc3de5540 feat: write auto-detected port mappings during a deploy
During an app build, we now auto-detect ports based on the source code. This is usually http:80:5000, with Dockerfile-based deploys having their ports extracted from the docker image or Dockerfile. Additionally, we add an https:443 mapping for any detected http:80 mapping when there is an ssl certificate, and all http port mappings are transformed to https mappings for Dockerfile-based deploys.

While the ports aren't currently consumed, a future refactor will provide the ability to fallback to the new detected ports when there is no user-specified port mapping.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
b44be8def9 refactor: rename port-map property to port 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
f842869c3d refactor: move the proxy port map from config to property
Also remove all direct references to DOKKU_PROXY_PORT_MAP from outside of ports.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
977b4567f8 refactor: simplify ports-configure codebase
This makes it slightly easier to reason about, at the cost of being slower.

Also ignore failure to remove image as this was flaky.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
48d5820b8c refactor: deprecate proxy-configure-ports plugin trigger in favor of ports-configure
This also rewrites the logic to be in golang, which will make it easier to refactor portions of it to use the property system going forward.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
192f7cf768 refactor: move code for fetching an available port to the ports plugin
Also translate the code to golang.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
121e4737a8 refactor: move code that fetches raw tcp ports for dockerfile deploys to ports plugin 2023-08-05 10:58:57 -04:00
Igor Loskutov
bdf0b6c509 Add application/wasm to nginx.conf.sigil gzip 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
87c4cb7230 docs: sort the plugin triggers 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
1431724b85 feat: use ports-clear plugn trigger to manage clearing the port map
This removes any access to the underlying implementation for port map clearing, which will make it easier to refactor the actual clearing.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
fb9d77878d refactor: move CHECKS file extraction to the beginning of the deploy
This makes deploys faster for any that are built from source as the image artifact isn't involved in those cases while also unifying how the file is handled.

Refs #2760
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
94f4d1325c feat: export environment variables during dockerfile builds for use with value-less --build-arg flags
Exposing all config values will allow users to skip setting environment variables twice - once as a docker option and once as an env var. Docker will automatically pull the value from the environment if none is set for the --build-arg flag.

Users will still be required to specify each desired env var via --build-arg as otherwise docker builds will complain about unused build arguments.

Re-implements #5978 (lost in a rebase)
Closes #5903
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
b8680f7de7 fix: automatically clear the git source-image property when changing deployment methodologies
This ensures users don't have issues with cached state in regards to files pulled from the repo/image.

Also add missing docs for deploy-source-set trigger.

Closes #5963
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
11d9ed6724 tests: use ports:report to get the list of port mappings 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
914475f3e4 refactor: use ports-get plugn trigger for fetching port mappings
This removes use of ports internals from other plugins, which will make it easier to refactor the underlying property storage.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
9bd6e17903 docs: update migration guide to point out other important changes 2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
515994c8d3 feat: add the ability to execute a cron task on the fly
Closes #4904
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
798a413096 feat: re-add apps and config cli aliases
This better follows Heroku's output and is more useful to users. The subcommands will be treated as the primary, documented versions, while the aliases are there for convenience.

Closes #5362
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
1d0d050596 feat: mount the vector data directory instead of the vector file
This allows users to provide extra configuration files for Vector, such as when using the GCP Operations log sink.

Closes #4971
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
820883e60c feat: add json format output to cron:list command
This makes it easier to parse output in a machine-readable format - such as when interacting with cron tasks via jq for writing tests.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
afc318526c refactor: move crontab writing code to scheduler-docker-local plugin
The implementation was very heavily docker-local specific and thus didn't make a ton of sense to keep in the cron plugin.

This also re-introduces changes from #5908 to parallelize the crontab generation (which is also specific to the docker-local scheduler) that were lost during a rebase.

The impetus for this change was implementing a `cron:run` command. The logic for actually running the command isn't scheduler specific - merely invoking `dokku run` with the appropriate arguments - but all the logic around how the commands were retrieved were, so the change was made pre-emptively.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
eb6f85f083 feat: skip scaled processes that are missing in the Procfile
This allows folks to deploy apps that don't have a web process without needing to scale that process down before/after the first deploy. Note that the formations key in the app.json or a manual scale of other processes will be necessary to start anything non-web.

Closes #5700
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
64f0f2674d refactor: move all port management code to standalone ports plugin
This change makes interacting with port mappings more clear - folks might previously set the port mapping to the proxy type or vice-versa.

The existing proxy:ports* commands still exist but will show a deprecation warning for a single minor release.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
a0b84d52ef docs: clarify that a branch can be specified when updating a plugin
Installing/Updating a plugin to a particular commit object will ensure future calls to plugin:update are pinned to that object.

Closes #4551
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
f7c46a46f4 fix: mount the traefik data directory instead of the acme.json file when starting traefik
Without this change, Docker - at least on arm64 - appears to mount the file as 0755 instead of 0600. We can trick docker by mounting the folder and then referencing _that_ instead.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
bbbe0e763d fix: do not start proxy implementations during server restore if they weren't manually started via the :start command
This change ensures users don't have unnecessary proxies starting on their servers and potentially have apps not routing correctly due to another proxy squatting on a port.

Closes #5846
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
ef25a9b0d8 refactor: standardize on shorthand for redirecting all output to /dev/null
The shorthand is more prevalent in this codebase, and is something that bash supports, so we should just use the same thing everywhere.

Note that we do not use shorthand redirect in Makefile as shell parsing is a bit different in Make and the shorthand redirect doesn't seem to be properly supported, causing CI errors.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
dac566e75e refactor: move all shellcheck disable definitions to .shellcheckrc file
This makes standard use of shellcheck work without needing to provide extra configuration anywhere.

Also remove use of inline 'shellcheck disable' calls that are already defined in the .shellcheckrc and don't need to be set inline.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
4436bb2023 chore: standardize on ls subcommand when interacting with the docker binary
The ls command is what is referenced in the --help output for the subcommands, so we should just use that everywhere.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
5dc2f20432 fix: remove all containers and images by label on app destroy
Previously, we would filter containers and images by name, which could be fail if the app was renamed or no longer was tagged "correctly" due to a rebuild. Now, we filter by label, ensuring an app is completely cleaned up on deletion.

Also:

- Move docker image cleanup from apps plugin to builder plugin: This isn't where it belongs - images should be cleaned up in a builder plugin (or the builders plugin) and not in the apps plugin, which has nothing to do with docker images anyways.
- Remove the code from the scheduler plugin, as that will only do anything if the scheduler is enabled for the app.
- Bypass image removal if there are no images to remove
- Always delete app containers: The herokuish builder creates intermediate build containers - something that should be refactored - and ideally this gets run in that builder plugin, but keeping the logic here ensures we don't have code duplication. This is otherwise safe as it will be a no-op if there are no containers to clean up.
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
3c5a98cb1b chore: remove stickler-ci config
Stickler-CI was shutdown in May 2023 - https://stickler-ci.com/shutting-down - and thus we no longer need configuration for it.

So long, and thanks for all the fish :)
2023-08-05 10:58:57 -04:00
Jose Diaz-Gonzalez
60b343470b feat: add support for specifying multiple networks on a given app
Closes #5314
2023-08-05 10:58:46 -04:00
Jose Diaz-Gonzalez
40b20e0c08 refactor: move herokuish app cache from the filesystem into a docker volume
This simplifies cache referencing and also paves the way for removing more from the app git directory.

Refs #1558
2023-08-05 10:35:54 -04:00
Dokku Bot
ce0177967d Release 0.30.11
# History

## 0.30.11

Install/update via the bootstrap script:

```shell
wget -NP . https://dokku.com/install/v0.30.11/bootstrap.sh
sudo DOKKU_TAG=v0.30.11 bash bootstrap.sh
```

### Dependencies

- #6091: @dependabot[bot] chore(deps): bump mkdocs from 1.5.1 to 1.5.2 in /docs/_build
- #6093: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 37.5.1 to 37.5.2
- #6088: @dependabot[bot] chore(deps): bump golang from 1.20.6 to 1.20.7 in /tests/apps/gogrpc
- #6087: @dependabot[bot] chore(deps): bump golang from 1.20.6 to 1.20.7 in /tests/apps/zombies-dockerfile-no-tini
- #6086: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.12.0 to 0.13.0 in /tests/apps/gogrpc
- #6085: @dependabot[bot] chore(deps): bump golang from 1.20.6 to 1.20.7 in /tests/apps/go-fail-postdeploy
- #6084: @dependabot[bot] chore(deps): bump golang from 1.20.6 to 1.20.7 in /tests/apps/go-fail-predeploy
- #6083: @dependabot[bot] chore(deps): bump golang from 1.20.6 to 1.20.7 in /tests/apps/zombies-dockerfile-tini
- #6072: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 37.5.0 to 37.5.1
- #6073: @dependabot[bot] chore(deps): bump pyparsing from 3.1.0 to 3.1.1 in /docs/_build
v0.30.11
2023-08-05 13:53:08 +00:00
Jose Diaz-Gonzalez
801e28b824 Merge pull request #6091 from dokku/dependabot/pip/docs/_build/mkdocs-1.5.2
chore(deps): bump mkdocs from 1.5.1 to 1.5.2 in /docs/_build
2023-08-04 21:07:26 -04:00
Jose Diaz-Gonzalez
871c986841 Merge pull request #6093 from dokku/dependabot/github_actions/tj-actions/changed-files-37.5.2
chore(deps): bump tj-actions/changed-files from 37.5.1 to 37.5.2
2023-08-04 21:07:02 -04:00
dependabot[bot]
e98cfa8bd5 chore(deps): bump tj-actions/changed-files from 37.5.1 to 37.5.2
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.5.1 to 37.5.2.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v37.5.1...v37.5.2)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 13:52:13 +00:00
dependabot[bot]
f24ce401df chore(deps): bump mkdocs from 1.5.1 to 1.5.2 in /docs/_build
Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.1...1.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-03 13:44:55 +00:00
Jose Diaz-Gonzalez
a124c419ec Merge pull request #6088 from dokku/dependabot/docker/tests/apps/gogrpc/golang-1.20.7 2023-08-03 01:24:44 -04:00