Compare commits

..

24 Commits

Author SHA1 Message Date
Aldo 89de042ef4
Merge 3774afee32 into 5f09c940c1 2024-01-11 19:37:28 -06:00
Michael Stenta 5f09c940c1 Use paratest to speedup tests in Github actions workflow #762 2024-01-11 13:02:52 -05:00
wotnak 8c1fd8fe11 Install pg_trgm PostgreSQL extension before starting tests to avoid race conditions when trying to automatically install it in concurrently run tests 2024-01-11 13:02:27 -05:00
wotnak 8ce641adc5 Revert "Use phpunit instead of paratest."
This reverts commit 6a9c872e9b.
2024-01-11 13:00:57 -05:00
Michael Stenta df0c25f047 Add step to configurable quick form documentation that describes setting #default_value. 2024-01-10 08:18:02 -05:00
Michael Stenta 1d6804d7b4 Remove accidentally merged placeholder text from docs/hosting/migration.md. 2024-01-10 08:17:25 -05:00
Michael Stenta f9225c05f4 farmOS 3.0.0 2024-01-05 11:45:48 -05:00
Michael Stenta 6d68c387fd Update entity_browser module to ^2.10 and remove patch merged upstream. 2024-01-05 11:40:51 -05:00
Michael Stenta 75f0a2f4b6 Update to Drupal 10.2 #765 2024-01-05 11:40:23 -05:00
Michael Stenta 3c77ef281d Update Drupal core to 10.2.1. 2024-01-05 11:40:02 -05:00
Paul Weidner ed0c286247 Remove time format from description
See https://www.drupal.org/node/3385058

Fix: Call to deprecated method formatExample() of class Drupal\Core\Datetime\Element\Datetime: in drupal:10.2.0 and is removed from drupal:11.0.0. There is no replacement.
2024-01-05 10:23:23 -05:00
Paul Weidner f3422c54e0 Update Drupal core to 10.2.0 2024-01-05 10:23:23 -05:00
Michael Stenta 5617e81a0d Issue #3410701: Deprecate d7_asset plugin 2024-01-04 16:45:35 -05:00
Michael Stenta 215b67b58a Composer documentation fixes #761 2024-01-04 06:07:57 -05:00
AlMaVizca 3774afee32
Merge development image into a single Dockerfile
Changes based on PR review
2023-12-29 23:15:10 +07:00
Michael Stenta 61845e53cb Composer create-project fails with "Could not find package farmos/project with stability stable." Fixes farmOS/composer-project#10
See https://github.com/farmOS/composer-project/issues/10
2023-12-27 12:35:00 -05:00
Michael Stenta 9f44c64e99 Fix typo in docs/hosting/composer.md. 2023-12-27 12:34:26 -05:00
AlMaVizca 53fd5ebbbb
Relocate php unit configuration 2023-12-23 14:00:19 +07:00
AlMaVizca 635adf1a04
Refactor composer dependencies to create the production image
Use docker stages to install dependencies and simplify the building script.
Prepare production image while keeping compatibility with the development image.

Fix typo

Relocate arguments to improve cache

Make single line for each env definition

Remove composer home path

Avoid installing recommended packages
2023-12-23 14:00:19 +07:00
AlMaVizca 3a25ca5d71
Avoid repeating common path
Use common path on entrypoint
2023-12-23 14:00:19 +07:00
AlMaVizca 4803e40043
Define baseimage with arguments required in multiple stages
Change versions, add common paths

Keep drupal path

Fix comment
2023-12-23 14:00:19 +07:00
wotnak a2bd7136cf Configure www service to wait for db service to be healthy instead of only started #758 2023-12-22 06:17:47 -05:00
wotnak 1773a2eae5 Add healthcheck to MariaDB container to ensure it is ready to accept external connections before reporting as ready #758 2023-12-22 06:17:37 -05:00
Paul Weidner 0e211cb33c Increase weight of Asset and Log tasks on canonical user route #757
The current weight of these menu items is 0 and makes it challenging to
place other menu tasks between Edit and Asset. I would like to add a
Notifications task item and keep it closer to the edit task.
2023-12-09 07:08:03 -08:00
16 changed files with 86 additions and 71 deletions

View File

@ -48,7 +48,7 @@ jobs:
# farmOS Composer project 3.x branch is always used.
- name: Build and save farmOS dev Docker image
run: |
docker build --build-arg FARMOS_REPO=https://github.com/${FARMOS_REPO} --build-arg FARMOS_VERSION=${FARMOS_VERSION} -t farmos/farmos:3.x-dev --target farmos-dev docker
docker build --build-arg FARMOS_REPO=https://github.com/${FARMOS_REPO} --build-arg FARMOS_VERSION=${FARMOS_VERSION} -t farmos/farmos:3.x-dev --target dev docker
docker save farmos/farmos:3.x-dev > /tmp/farmos-dev.tar
- name: Cache farmOS dev Docker image
uses: actions/cache@v3
@ -92,10 +92,13 @@ jobs:
include:
- dbms: pgsql
DB_URL: pgsql://farm:farm@db/farm
processes: auto
- dbms: mariadb
DB_URL: mysql://farm:farm@db/farm
processes: auto
- dbms: sqlite
DB_URL: sqlite://localhost/sites/default/files/db.sqlite
processes: 1
steps:
- name: Print test matrix variables
run: echo "matrix.dbms=${{ matrix.dbms }}, matrix.DB_URL=${{ matrix.DB_URL }}"
@ -122,8 +125,12 @@ jobs:
# The www-container-fs-ready file is only created once we expect the containers to be online
# so waiting for that lets us know it is safe to start the tests
run: until [ -f ./www/www-container-fs-ready ]; do sleep 0.1; done
- name: Install pg_trgm PostgreSQL extension
# This avoids race conditions when trying to automatically install it in concurrently run tests.
if: matrix.dbms == 'pgsql'
run: docker compose exec -T db psql -U farm -c 'CREATE EXTENSION IF NOT EXISTS pg_trgm;'
- name: Run PHPUnit tests
run: docker compose exec -u www-data -T www phpunit --verbose /opt/drupal/web/profiles/farm
run: docker compose exec -u www-data -T www paratest -vv --processes=${{ matrix.processes }} /opt/drupal/web/profiles/farm
- name: Test Drush site install with all modules
run: docker compose exec -u www-data -T www drush site-install --db-url=${{ matrix.DB_URL }} farm farm.modules='all'
release:

View File

@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [3.0.0] 2024-01-05
This is the first "stable" release of farmOS v3. See the release notes for
[3.0.0-beta1] below for more information about major changes in the 3.x branch,
including breaking changes to be aware of.
### Changed
- [Increase weight of Asset and Log tasks on canonical user route #757](https://github.com/farmOS/farmOS/pull/757)
- [Update Drupal core to 10.2](https://github.com/farmOS/farmOS/pull/765)
### Deprecated
- [Issue #3410701: Deprecate d7_asset plugin](https://www.drupal.org/project/farm/issues/3410701)
### Fixed
- [Correct alter hook to add password grant to static scopes #755](https://github.com/farmOS/farmOS/pull/755)
@ -647,7 +662,8 @@ moving forward.
Drupal 7, which required a complete refactor of the codebase. By comparison,
updating from Drupal 9 to 10 will simply involve updating deprecated code.
[Unreleased]: https://github.com/farmOS/farmOS/compare/3.0.0-beta3...HEAD
[Unreleased]: https://github.com/farmOS/farmOS/compare/3.0.0...HEAD
[3.0.0]: https://github.com/farmOS/farmOS/releases/tag/3.0.0
[3.0.0-beta3]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta3
[3.0.0-beta2]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta2
[3.0.0-beta1]: https://github.com/farmOS/farmOS/releases/tag/3.0.0-beta1

View File

@ -18,13 +18,13 @@
"require": {
"cweagans/composer-patches": "^1.6",
"drupal/admin_toolbar": "^3.3",
"drupal/core": "10.1.6",
"drupal/core": "10.2.1",
"drupal/config_update": "^2.0@alpha",
"drupal/consumers": "^1.15",
"drupal/csv_serialization": "^4.0",
"drupal/date_popup": "^1.3",
"drupal/entity": "1.4",
"drupal/entity_browser": "2.9",
"drupal/entity_browser": "^2.10",
"drupal/entity_reference_integrity": "^1.1",
"drupal/entity_reference_revisions": "1.10",
"drupal/entity_reference_validators": "^1.0@beta",
@ -48,7 +48,7 @@
"drupal/subrequests": "^3.0.6",
"drupal/token": "^1.11",
"drupal/views_geojson": "^1.2",
"drush/drush": "^11.3",
"drush/drush": "^12.4.3",
"ext-simplexml": "*",
"itamair/geophp": "1.3"
},
@ -59,17 +59,13 @@
"patches": {
"drupal/core": {
"Issue #2429699: Add Views EntityReference filter to be available for all entity reference fields.": "https://www.drupal.org/files/issues/2021-12-02/2429699-453-9.3.x.patch",
"Issue #2339235: Remove taxonomy hard dependency on node module": "https://www.drupal.org/files/issues/2023-10-05/2339235-10.1.x-80.patch",
"Issue #2339235: Remove taxonomy hard dependency on node module": "https://www.drupal.org/files/issues/2024-01-03/2339235-10.2.x-82.patch",
"Issue #1874838: Allow exposed blocks to use 'Link display' settings": "https://www.drupal.org/files/issues/2021-11-11/1874838-26.patch",
"Issue #2909128: Autocomplete not working on Chrome Android": "https://www.drupal.org/files/issues/2023-07-11/2909128-92.patch",
"Issue #3349973: Automatically install pg_trgm extension on PostgreSQL 13+": "https://www.drupal.org/files/issues/2023-05-08/3349973-26.patch"
"Issue #2909128: Autocomplete not working on Chrome Android": "https://www.drupal.org/files/issues/2023-07-11/2909128-92.patch"
},
"drupal/entity": {
"Issue #3206703: Provide reverse relationships for bundle plugin entity_reference fields.": "https://www.drupal.org/files/issues/2022-05-11/3206703-10.patch"
},
"drupal/entity_browser": {
"Issue #3350169: Fix PHP 8.2 deprecation issue with WidgetSelectorBase-class": "https://www.drupal.org/files/issues/2023-06-15/3350169-8_0.patch"
},
"drupal/entity_reference_revisions": {
"Issue #3267304: Infer target_revision_id to be Latest Revision when Only a target_id is Provided": "https://www.drupal.org/files/issues/2022-05-13/3267304-9.patch"
},

View File

@ -1,12 +1,13 @@
{
"require": {
"cweagans/composer-patches": "^1.7",
"drupal/core-composer-scaffold": "10.1.6"
"drupal/core-composer-scaffold": "10.2.1"
},
"require-dev": {
"behat/mink": "^1.10",
"behat/mink-browserkit-driver": "^2.1",
"behat/mink-selenium2-driver": "^1.6",
"brianium/paratest": "^6",
"drupal/coder": "^8.3",
"mglaman/phpstan-drupal": "^1.1",
"mikey179/vfsstream": "^1.6",

View File

@ -1,16 +1,10 @@
# Use the official Drupal 10 image to build GEOS PHP extension.
# Use the official Drupal 10 as base image.
FROM drupal:10.1 as baseimage
# Define common paths.
ENV FARMOS_PATH=/var/farmOS
ENV DRUPAL_PATH=/opt/drupal
# Set the farmOS and composer project repository URLs and versions.
ARG FARMOS_REPO=https://github.com/farmOS/farmOS.git
ARG FARMOS_VERSION=3.x
ARG PROJECT_VERSION=3.x
ARG PROJECT_REPO=https://github.com/farmOS/composer-project/raw/${PROJECT_VERSION}/composer.json
##
# Build PHP extensions, GEOS and bcmath.
FROM baseimage as php-dependencies
@ -30,19 +24,23 @@ RUN apt-get update && apt-get install -y libgeos-dev \
# Install the BCMath PHP extension.
RUN docker-php-ext-install bcmath
##
# Setup dependencies and sources for composer installations.
FROM baseimage as composer-file
# Set the COMPOSER environment variables.
ENV COMPOSER_HOME=tmp \
# Set the COMPOSER_MEMORY_LIMIT environment variable to unlimited.
COMPOSER_MEMORY_LIMIT=-1 \
# Allow root to install plugins.
COMPOSER_ALLOW_SUPERUSER=1
# Set the farmOS and composer project repository URLs and versions.
ARG FARMOS_REPO=https://github.com/farmOS/farmOS.git
ARG FARMOS_VERSION=3.x
ARG PROJECT_VERSION=3.x
ARG PROJECT_REPO=https://github.com/farmOS/composer-project/raw/${PROJECT_VERSION}/composer.json
# Set the COMPOSER_MEMORY_LIMIT environment variable to unlimited.
ENV COMPOSER_MEMORY_LIMIT=-1
# Allow root to install plugins.
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV COMPOSER_NO_INTERACTION=1
# Install apt dependencies.
RUN apt-get update && apt-get install -y \
RUN apt-get update && apt-get install -y --no-install-recommends\
# Install git and unzip (needed by Composer).
git unzip
@ -65,16 +63,13 @@ RUN sed -i "s|version: 3.x|version: ${FARMOS_VERSION}|g" ${FARMOS_PATH}/web/prof
##
# Create layer with farmOS dev sources.
FROM composer-file as farmos-dev-sources
FROM farmos-sources as farmos-dev-sources
# Install sources.
RUN composer install
# Set the version in farm.info.yml.
RUN sed -i "s|version: 3.x|version: ${FARMOS_VERSION}|g" ${FARMOS_PATH}/web/profiles/farm/farm.info.yml
RUN composer update
##
# Add final image dependencies and configurations.
# Dependencies layer.
FROM baseimage as farmos-baseimage
# Set Apache ServerName directive globally to suppress AH00558 message.
@ -88,16 +83,18 @@ RUN docker-php-ext-enable geos bcmath
COPY conf.d/ /usr/local/etc/php/conf.d
# Install apt dependencies and clean up.
RUN apt-get update && apt-get install -y \
RUN apt-get update && apt-get install -y --no-install-recommends\
# Install postgresql-client so Drush can connect to the database.
postgresql-client \
# Install libgeos-c1v5 so geos php extension can use libgeos_c.so.1.
libgeos-c1v5 \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean \
# Clean up ${DRUPAL_PATH}.
&& rm -r ${DRUPAL_PATH} \
&& mkdir ${DRUPAL_PATH}
# Install git and unzip (needed by Composer).
git unzip \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean \
# Clean up ${DRUPAL_PATH}.
&& rm -r ${DRUPAL_PATH} \
&& mkdir ${DRUPAL_PATH}
# Set the entrypoint.
COPY --chown=www-data docker-entrypoint.sh /usr/local/bin/
@ -109,7 +106,7 @@ CMD ["apache2-foreground"]
##
# Development image.
FROM farmos-baseimage as farmos-dev
FROM farmos-baseimage as dev
# Change the user/group IDs of www-data inside the image to match the ID of the
# developer's user on the host machine. This allows Composer to create files
@ -121,9 +118,6 @@ FROM farmos-baseimage as farmos-dev
ARG WWW_DATA_ID=1000
RUN usermod -u ${WWW_DATA_ID} www-data && groupmod -g ${WWW_DATA_ID} www-data
# Add farmOS sources
COPY --from=composer-file --chown=www-data:www-data ${FARMOS_PATH} ${FARMOS_PATH}
# Install and configure XDebug.
RUN yes | pecl install xdebug \
&& docker-php-ext-enable xdebug

View File

@ -53,5 +53,3 @@ allowedPlugins=(
for plugin in ${allowedPlugins[@]}; do
composer config --no-plugins allow-plugins.$plugin true
done
mkdir -p ${FARMOS_PATH}/web/sites/simpletest/browser_output

View File

@ -12,4 +12,8 @@ sed -i 's|\./|\./web/core/|g' ${FARMOS_PATH}/phpunit.xml
sed -i 's|\.\./web/core/|\./web/|g' ${FARMOS_PATH}/phpunit.xml
sed -i 's| </php>| <env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled"/>'"\n"' </php>|g' ${FARMOS_PATH}/phpunit.xml
# Create output directory for phpunit tests and permissions for testing user.
mkdir -p ${FARMOS_PATH}/web/sites/simpletest/browser_output
chown -R www-data:www-data ${FARMOS_PATH}/web/sites/simpletest
rm ${FARMOS_PATH}/phpunit.sh

View File

@ -12,7 +12,15 @@ services:
MYSQL_DATABASE: farm
MYSQL_USER: farm
MYSQL_PASSWORD: farm
healthcheck:
test: [ "CMD", "healthcheck.sh", "--connect", "--innodb_initialized" ]
start_period: 1m
start_interval: 10s
interval: 1m
timeout: 5s
retries: 3
www:
depends_on:
- db
db:
condition: service_healthy

View File

@ -29,7 +29,7 @@ The `3.x-dev` image also provides the following build arguments:
`--build-arg WWW_DATA_ID=$(id -u)`
- Default: `1000`
To build the development image, you will have to define the target farmos-dev,
To build the development image, you will have to define the target dev,
for example:
`docker build --build-arg WWW_DATA_ID=$(id -u) -t farmos/farmos:3.x-dev --target farmos-dev docker`
`docker build --build-arg WWW_DATA_ID=$(id -u) -t farmos/farmos:3.x-dev --target dev docker`

View File

@ -244,9 +244,11 @@ To make an existing quick form configurable:
assigns configuration to `$this->configuration`.
6. Add a `config/schema/[mymodule].schema.yml` file that describes the
[configuration schema/metatdata](https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-schemametadata).
7. Add `'#default_value' => $this->configuration['...']` lines to the form
elements that are configurable in the `buildForm()` method.
The following is the same "Harvest" example as above, with the new interface
and methods, followed by the schema file that describes the settings.
The following is the same "Harvest" example as above, with the changes described
above, followed by the schema file that describes the settings.
```php
<?php

View File

@ -70,7 +70,7 @@ next section.
To start your own project based on the farmOS project template, open a new
directory and run the following command:
composer create-project farmos/project
composer create-project farmos/project:3.x-dev
This will create a `composer.json` file in your directory, copied directly from
the [farmOS project template](https://packagist.org/packages/farmos/project).
@ -81,7 +81,7 @@ code repository with [Git](https://git-scm.com/):
```shell
git init
git add composer.json
git commit -m 'Intitial commit of my farmOS project.'
git commit -m 'Initial commit of my farmOS project.'
```
It is helpful to understand that your project is *not* farmOS, but rather

View File

@ -10,8 +10,6 @@ farmOS 2.x includes a **farmOS Migrate** module that leverage's Drupal core's
migrations for each asset type, log type, etc. These migrations are defined in
YML configuration files included with the farmOS Migrate module.
... migrate to 2.x then upgrade to 3.x
## Important considerations
* Do not migrate into a farmOS 2.x instance that already has records. This is

View File

@ -12,6 +12,11 @@ use Drupal\migrate_drupal\Plugin\migrate\source\d7\FieldableEntity;
* id = "d7_asset",
* source_module = "farm_asset"
* )
*
* @deprecated in farm:3.0.0 and is removed from farm:4.0.0. Support for farmOS
* v1 migrations was dropped in farmOS 3.x.
* @see https://www.drupal.org/project/farm/issues/3410701
* @see https://www.drupal.org/project/farm/issues/3382616
*/
class Asset extends FieldableEntity {

View File

@ -3,10 +3,7 @@
namespace Drupal\farm_field\Plugin\Field\FieldWidget;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Datetime\Element\Datetime;
use Drupal\Core\Datetime\Entity\DateFormat;
use Drupal\Core\Datetime\Plugin\Field\FieldWidget\TimestampDatetimeWidget;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Form\FormStateInterface;
/**
@ -26,17 +23,6 @@ use Drupal\Core\Form\FormStateInterface;
*/
class TimestampDatetimeOptionalWidget extends TimestampDatetimeWidget {
/**
* {@inheritdoc}
*/
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
$date_format = DateFormat::load('html_date')->getPattern();
$time_format = DateFormat::load('html_time')->getPattern();
$element['value']['#description'] = $this->t('Format: %format.', ['%format' => Datetime::formatExample($date_format . ' ' . $time_format)]);
return $element;
}
/**
* {@inheritdoc}
*/

View File

@ -1786,7 +1786,7 @@ display:
type: tab
title: Assets
description: ''
weight: 0
weight: 40
expanded: false
menu_name: account
parent: ''

View File

@ -2790,7 +2790,7 @@ display:
type: tab
title: Logs
description: ''
weight: 0
weight: 50
expanded: false
menu_name: main
parent: ''