Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
Documentation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DevOps Tools
Documentation
Commits
c20016c7
Commit
c20016c7
authored
8 months ago
by
danielspeicher
Browse files
Options
Downloads
Plain Diff
Merge branch 'develop' into 'main'
Develop See merge request
!25
parents
44ffef89
f659a1c9
No related branches found
Branches containing commit
No related tags found
1 merge request
!25
Develop
Pipeline
#1274868
passed
8 months ago
Stage: build
Stage: deploy
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/gitlab/drupal/index.md
+201
-8
201 additions, 8 deletions
docs/gitlab/drupal/index.md
with
201 additions
and
8 deletions
docs/gitlab/drupal/index.md
+
201
−
8
View file @
c20016c7
...
...
@@ -13,21 +13,21 @@ This project contains a number of pre-configured tasks for GitLab CI/CD that
allow to run very powerful pipelines which contain the following stages:
-
[
.pre (predefined)
](
#pre
)
-
[
validate
](
#validate
)
-
[
execute
](
#execute
)
-
[
build (predefined)
](
#build
)
-
[
buildprod
](
#build-prod
)
-
[
build (predefined)
](
#build
)
-
[
prepare
](
#prepare
)
-
[
postprocess
](
#postprocess
)
-
[
validate
](
#validate
)
-
[
test (predefined)
](
#test
)
-
[
deploy (predefined)
](
#deploy
)
-
release
-
finalize
-
postprocess
-
release
-
.post (predefined)
We have a predefined
`execute`
job called
`LakeDrops`
, which looks like this:
-
execute
-
[
execute
](
#execute
)
-
LakeDrops
-
[
buildprod
](
#build-prod
)
-
[
Build Prod Site
](
#build-prod-site
)
...
...
@@ -49,8 +49,8 @@ We have a predefined `execute` job called `LakeDrops`, which looks like this:
-
[
Test PHPUnit
](
#test-phpunit
)
-
[
Test Backstop
](
#test-backstop
)
-
[
Test Cypress E2E
](
#test-cypress-e2e
)
-
finalize
-
Shut Down Docker Project
-
[
finalize
](
#finalize
)
-
[
Shut Down Docker Project
](
#shut-down-docker-project
)
These pre-configured tasks can easily be included into your Drupal project.
A GitLab runner on any host can then be configured to run those pipelines. The
...
...
@@ -163,7 +163,7 @@ responsible for the database downloads as well.
#### Build Site
We start a docker image for php with the specifies versions:
We start a docker image for
`
php
`
with the specifies versions:
-
`PHP_MAJOR_VERSION`
-
`PHP_MINOR_VERSION`
...
...
@@ -193,12 +193,126 @@ The following jobs must run before successfully:
-
[
Build Prod Site
](
#build-prod-site
)
#### Check 4 Updates
e start a docker image for
`php`
with the specifies versions:
-
`PHP_MAJOR_VERSION`
-
`PHP_MINOR_VERSION`
First we have to do some preparation. This is done in the
`before_script`
section.
-
[
.prepareaccess
](
#prepareaccess
)
-
[
.preparecomposerplugins
](
#preparecomposerplugins
)
The job stores the artefacts in
`check4updates`
.
Rules, when the job should run:
-
`$CHECKUPDATES`
is set
-
we are on the
`develop`
branch
#### Check 4 Outdated Packages
We start a docker image for
`php`
with the specifies versions:
-
`PHP_MAJOR_VERSION`
-
`PHP_MINOR_VERSION`
The following jobs must run before successfully. Some are optional, which means, if they exist, this job waits for them
to complete:
-
[
Check 4 Updates
](
#check-4-updates
)
-
uses its artefacts
-
optional
-
[
Build Prod Site
](
#build-prod-site
)
-
uses its artefacts
-
optional
-
[
Build Prod Site NG
](
#build-prod-site-ng
)
-
uses its artefacts
-
optional
-
[
Build Site
](
#build-site
)
-
uses its artefacts
-
optional
First we have to do some preparation. This is done in the
`before_script`
section.
-
[
.prepareaccess
](
#prepareaccess
)
-
[
.preparecomposerplugins
](
#preparecomposerplugins
)
First we perform a
`composer update`
which all dependencies without the development part.
Then we check for outdated packages:
```
yml
composer outdated --minor-only --strict --no-interaction $OUTDATED_EXTRAS
composer outdated --patch-only --strict --no-interaction $OUTDATED_EXTRAS
```
The variable
`$OUTDATED_EXTRAS`
contains the ignored package like:
`--ignore=drupal/somemodule --ignore=drupal/another`
Rules, when the job must not run:
-
the commit message contains
`SKIP_check4outdated`
and
`$CHECKUPDATES`
!= "yes"
-
the commit message contains "Merge branch 'develop' into 'main'"
-
the commit message contains "Merge branch 'release' into 'main'"
Rules, when the job should run:
-
`$IGNORE_COMPOSER_EXTENDED_AUDIT`
== "0"
#### Check 4 Security Vulnerability Advisories
We start a docker image for
`php`
with the specifies versions:
-
`PHP_MAJOR_VERSION`
-
`PHP_MINOR_VERSION`
The following jobs must run before successfully. Some are optional, which means, if they exist, this job waits for them
to complete:
-
[
Check 4 Updates
](
#check-4-updates
)
-
uses its artefacts
-
optional
-
[
Build Prod Site
](
#build-prod-site
)
-
uses its artefacts
-
optional
-
[
Build Prod Site NG
](
#build-prod-site-ng
)
-
uses its artefacts
-
optional
-
[
Build Site
](
#build-site
)
-
uses its artefacts
-
optional
First we have to do some preparation. This is done in the
`before_script`
section.
-
[
.prepareaccess
](
#prepareaccess
)
-
[
.preparecomposerplugins
](
#preparecomposerplugins
)
First we perform a
`composer update`
which all dependencies without the development part.
Then we check for outdated packages:
```
yml
composer diagnose --no-interaction ||
true
composer audit --no-dev --locked --format=table
```
Rules, when the job must not run:
-
the commit message contains
`SKIP_check4security`
and
`$CHECKUPDATES`
!= "yes"
-
the commit message contains "Merge branch 'develop' into 'main'"
-
the commit message contains "Merge branch 'release' into 'main'"
Rules, when the job should run:
-
`$IGNORE_COMPOSER_AUDIT`
== "0"
#### Download DB
This job executes a script, that removes the SQL file
`$]PROJECT_NAME}.sql`
, if it exists already.
...
...
@@ -349,6 +463,9 @@ Rules, when the job should run:
-
the tests are enabled by
`$DISABLE_CI_TESTS`
!= "1"
### Postprocess
### Test
After the preparation and the setup of a Drupal database, we can execute tests. This happens in this stage.
...
...
@@ -365,12 +482,65 @@ Rules, when the job should run:
#### Test PHPUnit
This job uses
[
PHP Unit
](
../../dev_tools/test.md#unitkernelfunctional-testing
)
and stores the artefacts in
`phpunit`
.
Rules, when the job should run:
-
the code style tests are enabled by
`$DISABLE_CI_TEST_PHPUNIT`
!= "1"
#### Test Backstop
This job uses
[
Backstop
](
../../dev_tools/test.md#unitkernelfunctional-testing
)
and stores the artefacts in
`backstop`
.
The following jobs must run before successfully. Some are optional, which means, if they exist, this job waits for them
to complete:
-
[
Build Site
](
#build-site
)
-
[
Build Theme
](
#build-theme
)
-
uses its artefacts
-
optional
-
[
Import DB
](
#import-db
)
-
optional
-
[
Import DB NG
](
#import-db-ng
)
-
optional
-
[
Import Local DB
](
#import-local-db
)
-
optional
-
[
Update DB
](
#update-db
)
-
optional
Rules, when the job should run:
-
the backstop tests are enabled by
`$DISABLE_CI_TEST_BACKSTOP`
!= "1"
#### Test Cypress E2E
This job uses
[
Cypress
](
../../dev_tools/test.md#cypress
)
and stores the artefacts in
`cypresse2e`
. The tests
are executed in headless mode.
The following jobs must run before successfully. Some are optional, which means, if they exist, this job waits for them
to complete:
-
[
Build Site
](
#build-site
)
-
[
Build Theme
](
#build-theme
)
-
uses its artefacts
-
optional
-
[
Import DB
](
#import-db
)
-
optional
-
[
Import DB NG
](
#import-db-ng
)
-
optional
-
[
Import Local DB
](
#import-local-db
)
-
optional
-
[
Update DB
](
#update-db
)
-
optional
-
[
Test Backstop
](
#test-backstop
)
-
optional
Rules, when the job should run:
-
the cypress tests are enabled by
`$DISABLE_CI_TEST_CYPRESSE2E`
!= "1"
#### Internal Test Stages
Every test stage needs internal reoccurring definitions.
...
...
@@ -459,6 +629,25 @@ Rules, when the job must not run:
-
`$DISABLE_DEPLOYMENT`
!= "0"
-
`$CI_COMMIT_BRANCH`
!= "main" &&
`$ENFORCE_DEPLOYMENT`
!= "1"
### Finalize
Here we can do cleanups and remove some garbage the build process produces.
#### Shut Down Docker Project
We start a docker image for php with the specifies versions:
-
`PHP_MAJOR_VERSION`
-
`PHP_MINOR_VERSION`
The following jobs must run before successfully:
-
[
Build Site
](
#build-site
)
This job simply stops and removes the docker container, which are started for the build by:
`docker compose down`
### Internal Stages
...
...
@@ -487,6 +676,10 @@ The following points will be prepared for [Composer](https://getcomposer.org/):
-
the configuration
`audit.abandoned`
, depend on
`$IGNORE_COMPOSER_ABANDONED_AUDIT`
-
unsupported module versions, which are allowed to use
#### .retry-for-system-issues
#### .cache_default
## Configuration
### GitLab Runner
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment