Releases: uselagoon/lagoon
curl Take Two
Unfortunately the curl issue from #923 returns and this will solve it for good.
Features:
- none
Changes:
- Downgrade curl to
7.61.1
9f6a130
Bugfixes:
- none
Improvements:
- create a
rabbitmq-headless
service for RabbitMQ discovery so that we still have a regularrabbitmq
with a service IP
Documentation:
- none
Small Improvements and Fixes still give a release
This Release is a set of a lot of small improvements and fixes, things that over time accumulated and make the system a bit better working.
Features:
- Allow to define an S3 region via the
S3_REGION
env variable for Lagoon Tasks (#957)
Changes:
- SSH Key Syncing from Gitlab is disabled for now (3041b36) if you use this features, please be aware that this will cause desynced ssh keys. We're working on getting the feature back and also provide a sync-everything feature
Bugfixes:
- Increase the Gitlab timeout to 30secs as the previous timeout of 2secs caused issues (96affbc)
Improvements:
- Remove
::ffff:
also from fastcgi paramREMOTE_ADDR
, as we already do it for theX-Forwarded-For
Header (#958) - Storage Calculator can now also calculate the storage for mariadb-shared service (#956)
- The Lagoon UI backup tab now informs customers about the new tasks tab where they can get on-demand backups (#955)
- Some less logging in the services which reduces the amount of container-logs created by Lagoon (#954)
- Better non-technical names for Lagoon Tasks (#952) - thanks @klonos!
Documentation:
- none
k8up support
We now have full k8up support, also for the newest release with individual S3 Buckets per Lagoon Project. So far we already supported k8up, but only the global S3 bucket system. Which unfortunately is not really usable in very big cluster with thousand of backups.
Beside of that we also have:
Features:
- Add a
PROJECT_SECRET
which injects a random secret into all environment which is the same across all Lagoon Projects. (#947)
Changes:
- Downgraded the mariadb-client/mysql-client in the php-cli images from MariaDB 10.3 to 10.2 as there is a bug that prevents mysqldump to run against non mariadb 10.3 servers (4913081 - https://jira.mariadb.org/browse/MDEV-17429)
Bugfixes:
- Fix the start of RabbitMQ Cluster with non standard service names (#937)
- Force deprovisioning of "Provisioned Services" when deleting environments (#939)
Improvements:
- Allow certain Lagoon tasks to be disabled in the UI via the environment variable
LAGOON_UI_TASK_BLACKLIST
(#946)
Documentation:
Versioned Lagoon Releases
Always tracking master branches and upstream is great to keep stuff up to date and things fresh. As Lagoon grows we're running more and more into issues of not having versioned Lagoon Releases or Lagoon Images, here just a short recap of the pain that we suffered in the last weeks:
- A recent update of curl caused some deployment issues for some projects, the developers unfortunately had to wait while we figured out what the problem was and released a Hotfix of the affected Images - #925
- As more and more people are using, the fact that
openshiftBuildDeploy
always used the newest published master version ofoc-build-deploy-dind
, made it very complicated to keep the newest code backwards compatible with a slightly older Lagoon version. - A build of the master branch of Lagoon automatically published new Lagoon Images. This meant we could only merge into master when we actually wanted to publish new images. While this maybe was okay when we had 2-3 PRs to release, recent Lagoon releases had up to 35 PRs that needed to be merged all at once, this caused confusion and a lot of complexity which wasn't necessary.
Therefore today we're addressing these issues with three updates:
- Lagoon Base Images (
php
,nginx
,nodejs
, etc.) exist with a:latest
tag (like they always did), plus a new Lagoon Version Tag, likeamazeeio/nginx:v0.21.0
. Important is that this is not the version number of the service, but the Lagoon Version. For Images that already provided tags for different versions of the service, we now publish a tag with a version suffix like:amazeeio/amazeeio/php:7.1-fpm-v0.21.0
plus the already existing "latest" version without a suffix:amazeeio/amazeeio/php:7.1-fpm
. We still suggest to always use the latest versions of the images as we do not maintain older version of images for security updates, but there are some cases where the versioned base images are coming in handy. - Merges into
master
branch do not automatically publish new Lagoon Images. New Images are only pushed if an actual release (a git tag) has been pushed. This improves the PR workflow drastically as we can now merge into master as soon as a single PR is coming back green from the CI system. Also all PRs and Branch builds still push images to theamazeeiolagoon
Dockerhub Organisation, likeamazeeiolagoon/php:7.1-fpm-master
. As you can see they are suffixed with the branch or PR name. These Images should only be used for testing purposes! - All Version builds of Lagoon Images now include a new
LAGOON_VERSION
environment variable which includes the version number of the Lagoon Version they have been published from. This can be used for all kind of purposes in your code and is used byopenshiftBuildDeploy
to use the sameoc-build-deploy-dind
image version that works together with the Lagoon Version that is running.
We know that many people where wondering since some time why these changes have not been implemented before and why it took so long for this to implement. We're sorry that we took a bit of time to realize and figure out a system that works for us.
We're very excited about the changes and look forward to a versioned future!
Beside all of that there are of course additional changes:
Features:
- Versioned Lagoon Images (read above) #930
Changes:
- none
Bugfixes:
- Fixes log link missing from RocketChat messages, described in #858
Improvements:
- Further improvements on the integration with th Backup-as-a-Service (K8up) system (#929) - which now creates individual S3 buckets for each Lagoon Project and improves the performance of Backups and Restores drastically (like 1000x faster for bigger Lagoon implementations).
- Updating Composer from V1.6.5 to v1.8.4 in all php cli images (#927)
- Logstash upstream images had some changes and we need to follow them (#926)
- Fluentd elasticsearch plugin has some new settings and defaults, we're using them now (#926)
- The Build Logs include some tokens, while they cannot really be used for anything, we're hiding them now (#924)
- Multiple scheduled builds are now skipped and only the last one run (#932)
Documentation:
Hotfix: Downgrade curl version in PHP Images to 7.63.0
Bugfixes:
With the update of alpine in the PHP Images in Version v.0.20.0
curl/libcurl was also updated to version 7.64.0
. Which unfortunately has a bug that in specific situations it is possible that it fills the error buffer even though there is no error happening. Depending on the implementation of the client code that uses libcurl, the client code can either correct realize that the request worked and the buffer should just be ignored. Or like in the situation of drupal-composer/drupal-scaffold the buffer is checked and an exception thrown even if the curl request worked correctly.
We have opened multiple issues to resolve this:
- curl: curl/curl#3629 which a PR is existing: curl/curl#3630
- drupal-scaffold drupal-composer/drupal-scaffold#102 which there is also a PR existing: drupal-composer/drupal-scaffold#103
As this bug affects some of our customers and their projects cannot deploy anymore, we decided to hotfix release PHP Images which don't use the newest curl version7.64.0
and instead ship with7.63.0
where this problem does not exist yet.
As soon as there is a fixed curl version released and it is packaged via the alpine packaging system, we will update curl as well.
More improvements, more service types, less pod restarts
Features:
- mariadb-shared migration script (#918)
This is a shell script which allows lagoon admins to migrate between different mariadb-shared environments. - Lagoon Tasks don't need a running Pod anymore to start a task, this means tasks works also with environments that are idled (#899)
- Add mongodb-shared service type (#889)
- Add rabbitmq and rabbitmq-cluster service type (#867)
Changes:
- ❗
LAGOON_GIT_SHA
environment variable is not updated by default anymore ❗ (#879)
Reasoning for this: Injection of this environment variable causes the pods to restart on every deployment even if the attached Docker Image did not change. This caused many unnecessary restarts. By defaultLAGOON_GIT_SHA
is now set to0000000000000000000000000000000000000000
. If the previous functionality is required again, it can be set in.lagoon.yml
:environment_variables: git_sha: 'true'
Bugfixes:
- Update task status to "failed" when tasks error out (#898)
Improvements:
- We don't notify about retries during environment deletions into chat channels anymore, they only created a lot of noise (#917)
- The Lagoon UI shows now how many development environments are created and if there is a limit defined (#914)
- Updated ELK stack to version 6.6.1 (#910)
- Pinned alpine image for mariadb to version 3.8 which keeps mariadb on version 10.2 before we can come up with a migration path to 10.3 (#906)
- Increase GitLab Timeout from 2 secs to 30 secs (#905)
- Improve BaaS/k8up: Backup time to 22.00-02.00 (#904)
- Improve BaaS/k8up: Dump MySQL into a file first and then cat into stdout, this removes the issue of long running mysqldumps on the mysql server (#904)
- Allow to define an hour range for the cronjob annotation via
H(2-4)
(#904) - make the productionEnvironment a required field at project creation. (#883)
This helps us avoid things like the servicebroker assigning a DB in the dev cluster to a (not labeled) production environment, or idling hitting an environment when the customer expects their site to be on 100% of the time. - Skip github PR deployments if only the body has changed (#870)
- Log messages related to PR tasks are more consistent (#870)
- PHP 7.1, 7.2, 7.3 Images are now running with Alpine version 3.9 (docker-library/php#786)
Documentation:
- Drupal Varnish improvements (#902)
- Update Redis environment variables (#891)
- Adding Golive checklist (#891)
- minified images / unified spelling of regex -> regular expressions / adding admonition
- Fixed Link to pygmy documentation (#872)
Welcome Lagoon UI Tasks and Environment Deletes
As promised in Blogposts before, a bit focus from our engineering team goes towards the Lagoon UI and making is more self service. With todays release we bring two exiting new features to the Lagoon UI and API!
Features:
- Lagoon UI Tasks (#860 and #845)
You can now via the Lagoon UI create tasks that run within your site without the need to connect via the SSH Remote Shell 🎉, currently there is support for the following Tasks:drush cr
/drush cc all
(automatically based on Drupal Version)drush sql-sync
anddrush rsync
(both with the possibility to define the source environment where whould be synced from)drush sql-dump
anddrush archive-dump
(both with the possibility to download the generated files via the UI directly!)
- Lagoon UI Environment Delete (#852)
Which allows a convenient way to delete environments (branches or pull-requests) via the UI.
Changes:
- ❗Deletion of environments via
rest2tasks
has been removed ❗ (#852)
Before this change environments where able to be deleted viathis is not possible anymore and now needs to happen via the GraphQL API:curl -X POST \ https://<rest2tasksURL>/remove \ -H 'Content-Type: application/json' \ -d '{ "projectName" :"myproject", "branch": "develop" }'
If you wonder how to get thecurl -X POST \ https://<apiURL>/graphql \ -H 'Authorization: Bearer <LagoonAPIBearerToken>' \ -H 'Content-Type: application/json' \ -d '{ "query": "mutation { deleteEnvironment(input: {name: \"develop\", project: \"myproject\"}) }" }'
LagoonAPIBearerToken
, please see the documentation for it: https://lagoon.readthedocs.io/en/latest/using_lagoon/graphql_api/#connect-to-graphql-api
Bugfixes:
- Environment variables injected via the Lagoon API not present in environments (#861)
Improvements:
- Better mariadb-shared migration Scripts (#859)
- Updated Elasticsearch, Kibana, Logstash to version
6.5.4
, plus SearchGuard to the same versions (d5da69a)
Documentation:
New Year, new Features!
Happy new Year from the Lagoon Team!
First we really would like to say sorry for the not existing change-logs of the last releases, unfortunately they fell a bit through the cracks of life.
But here is to the new year: We pledge that every release in 2019 and every year after will have a change-log!
Changes:
- Update default Solr Image Configs to run with
solr.lock.type:none
, this fixes issues where the Solr didn't fully bootstrap after the container was stopped non-gracefully. (#552)
Move the Solr Data dir from/opt/solr/server/solr/mycores/${corename}/data
to/var/solr/${corename}
while keeping the solr config still at/opt/solr/server/solr/mycores/${corename}/config
. This split of data and config allows upcoming Solr Docker Images to automatically update the solr config, before this was not possible as the solr core was configured once and the config never ever updated. (#552)
❗Important:❗
If you customized the Docker Solr Images please update your Dockerfile from:to:CMD ["solr-precreate", "corename", "/solr-conf"]
Additionally update the provided Solr Configs from:RUN precreate-core corename /solr-conf CMD ["solr-foreground"]
to:<dataDir>${solr.data.dir:}</dataDir> <lockType>${solr.lock.type:native}</lockType>
<dataDir>/var/solr/${solr.core.name}</dataDir> <lockType>${solr.lock.type:none}</lockType>
New Features:
- Convert
mariadb
to a meta-server and auto discovermariadb-shared
if the cluster supports it (#826)
This basically means that Lagoon will automatically check if the OpenShift Cluster supports thelagoon-dbaas-mariadb-apb
service broker class and if yes it will create a new service broker instance for this mariadb service. This means there is not a single pod anymore created for this environment, but instead a shared mariadb/mysql is used. If you still would like to have a single mariadb then use the service typemariadb-single
. Existing projects not migrated tomariadb-shared
are still automatically using the existingmariadb
pod, to migrate see: - Added helper script to migrate existing projects to
mariadb-shared
(#819) - Support for Solr 7.5 (#807)
- Support for PHP 7.3 (#811)
- Support to run Tasks (shell commands) via the UI/API that are executed in a new pod in the same namespace (#845)
- GraphQL API and UI have now support for GraphQL Subscriptions which automatically update in realtime on a new or updated Deployment, Backup or Task (#801)
- Lagoon Tasks can now create artifacts which will be uploaded automatically by the API in an S3 compatible service and then served from there if requested via the UI/API (#820)
- Added a new
nginx-php-redis-persistent
which putsnginx
,php
andredis
into a single pod. More added for consistency and for specific cases where this can be useful (#813) - Added Support for upcoming Restic Backup-as-a-Service System (#813)
- SSH Remote Shell now also supports SFTP into cli (#840)
Improvements:
- Performance tune default
mariadb-single
andmariadb-galera
configs (#793) - Added the haproxy config template that Lagoon expects to run within OpenShift (#825)
- Improve Elasticsearch Curator (7949a03)
- Better and faster mysqldumps for Backups (8031181)
- Change default
max_input_vars
in php from1000
to2000
(#788) - UI improvements (#776)
- Default Varnish Image ships now with dynamic director which can handle DNS changes on the fly and not only during Varnish starts (#759)
- Default Varnish Image ships now with
libvmod-bodyaccess
(#759) - Add
Projects
toCustomer
Object in GraphQL API (#777) - Fix not found Tika extension in Solr (#808)
- GraphQL API had issues loading the Hits for a month the year before (#839)
- Remove
::ffff:
in front of IPv6 addressed withinX-Forwarded-For
request headers (#837) - Enable xdebug's remote_log with an environment variable (#836)
- Support for Drupal BigPipe (#846)
- Longer timeouts for internal GraphQL Requests (aae899b)
Bug Fixes:
- Handle environment names longer than 64 characters (#806)
- Escape special characters in Pull Request Titles (#804)
- Handle long environment variables within nginx health check (https://github.com/amazeeio/lagoon/pull/823/files)
- Fix error with GraphQL
deleteEnv
(#822) - Handle environments with dots in
.lagoon.yml
(#818) - Fix overwritten
lagoon-env
config map (#792) - Fix issues with Keycloak 4.6.0 (#790)
Documentation:
Documentation and getting ready for `lagu`
Another week, another Lagoon Release. This time we're at v0.16.1
(no worries, the v1.0.0
is coming soon).
In this release we have:
- Much much more documentation. We feel that many of the functionalities of Lagoon are now stable, so they also deserve a proper entry in the documentation over at http://lagoon.readthedocs.io/en/stable/ - thanks to @rtprio @twardnw @dasrecht
- A lot of preparation for our upcoming cli called
lagu
- thanks @karlhorky - Cleanups like removing an old centos image - #529 (thanks @twardnw)
- building MongoDB Image again, after it builds again - #509 (thanks @rtprio)
- Fixing an issue where Drush wasn't happy when a Branch contained a slash and failed - #486(thanks @rtprio)
- Added a long awaited
ll
command by @Schnitzel - #524 (thanks @twardnw)
Hotfixes and Documentation Updates
Unfortunately, sometimes little bugs don't show themselves during the automated testing and builds, so we squashed a few since the last release.
We also turned some heavy attention to the docs and have made some substantial updates. Head over to http://lagoon.readthedocs.io/ and check it all out.