Skip to content

Added GitHub Actions templates and tool configuration files #104

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 35 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8b55c91
Added GitHub Actions templates and tool configuration files
rimi-itk Mar 18, 2025
cde89c4
Taking own medicine
rimi-itk Mar 19, 2025
ada8740
Update github/workflows/composer.yaml
rimi-itk Mar 24, 2025
b17d5a0
Update github/workflows/drupal.yaml
rimi-itk Mar 24, 2025
4563bd1
Update config/markdownlint-cli/.markdownlintignore
rimi-itk Mar 24, 2025
e965ecf
Update github/workflows/composer.yaml
rimi-itk Mar 24, 2025
5faf70b
Updated generated documentation
rimi-itk Mar 24, 2025
488861b
Added and checked file headers
rimi-itk Mar 24, 2025
e1ab876
Updated Markdown actions
rimi-itk Mar 24, 2025
d036091
Run docker image as appropriate user
rimi-itk Mar 24, 2025
9d31d7c
Cleaned up and improved
rimi-itk Apr 2, 2025
4c4ba8a
More clean up
rimi-itk Apr 8, 2025
aa66060
Added config file headers
rimi-itk Apr 8, 2025
b1592b3
Cleaned up tasks and shell scripts
rimi-itk Apr 8, 2025
0bd7408
Updated GitHub Actions template documentation
rimi-itk Apr 8, 2025
3e30132
More documentation and cleanup
rimi-itk Apr 9, 2025
739e661
Added branches to on.push event
rimi-itk Apr 23, 2025
6729f6a
Added Drupal styles workflow
rimi-itk May 2, 2025
fb43f03
Checked YAML files
rimi-itk May 2, 2025
85f853a
Cleaned up
rimi-itk May 2, 2025
8c69076
Updated workflow files
rimi-itk May 2, 2025
b97b44a
Added Drupal JavaScript workflow
rimi-itk May 5, 2025
ad8c2e4
Updated links
rimi-itk May 5, 2025
1a2f558
Added shellckeck to workflo
rimi-itk May 5, 2025
9100df2
Updated Markdownlint ignores
rimi-itk May 6, 2025
ee5f438
Run markdownlint via docker compose
rimi-itk May 6, 2025
7ee5723
Updated Symfony workflows
rimi-itk May 7, 2025
8eee3cd
Update Drupal site workflow
rimi-itk May 9, 2025
64908fb
Updated docs
rimi-itk May 9, 2025
185a2cf
Fixed prettier globs
rimi-itk May 15, 2025
50126d0
Added Drupal module template
rimi-itk May 5, 2025
ea6598e
Updated docker compose setup
rimi-itk May 20, 2025
133456f
Added YAML linting
rimi-itk Jun 12, 2025
fb829ac
Linted YAML files
rimi-itk Jun 12, 2025
26ebf6a
Merge pull request #110 from itk-dev/feature/twig-lint
rimi-itk Jun 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions .github/workflows/documentation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
on: pull_request

name: Review

env:
COMPOSE_USER: runner

jobs:
check-github-actions-documentation:
runs-on: ubuntu-latest
name: Check that Github Actions documentation is up to date
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
# https://github.com/arduino/setup-task/tree/56d0cc033e3cecc5f07a291fdd39f29388d21800?tab=readme-ov-file#repo-token
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

# https://github.com/mxschmitt/action-tmate?tab=readme-ov-file#manually-triggered-debug
# Enable tmate debugging if debug logging is enabled (cf.
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#runner-context)
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: 1 == runner.debug

- run: |
task github-actions:documentation:update

# Check that documentation has not changed.
- run: |
task github-actions:documentation:diff

check-github-actions-template-headers:
runs-on: ubuntu-latest
name: Check that Github Actions template headers are up to date
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: |
task github-actions:template-headers:update --yes
# Check that files have not changed.
- run: |
git diff --exit-code

check-config-file-headers:
runs-on: ubuntu-latest
name: Check that config file headers are up to date
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: |
task github-actions:config-headers:update --yes
# Check that files have not changed.
- run: |
git diff --exit-code

check-links:
runs-on: ubuntu-latest
name: Check that workflow and config file links are up to date
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: |
task github-actions:link --yes
# Check that files have not changed.
- run: |
git diff --exit-code

lint-markdown:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: |
SKIP_FIX=1 task lint:markdown

lint-shell-script:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: |
SKIP_FIX=1 task lint:shell-script
43 changes: 43 additions & 0 deletions .github/workflows/markdown.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Do not edit this file! Make a pull request on changing
# github/workflows/markdown.yaml in
# https://github.com/itk-dev/devops_itkdev-docker if need be.

### ### Markdown
###
### Lints Markdown files (`**/*.md`) in the project.
###
### [markdownlint-cli configuration
### files](https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#configuration),
### `.markdownlint.jsonc` and `.markdownlintignore`, control what is actually
### linted and how.
###
### #### Assumptions
###
### 1. A docker compose service named `markdownlint` for running `markdownlint`
### (from
### [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli))
### exists.

name: Markdown

on:
pull_request:
push:
branches:
- main
- develop

jobs:
markdown-lint:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v4

- run: |
docker network create frontend

- run: |
docker compose run --rm markdownlint markdownlint '**/*.md'
26 changes: 26 additions & 0 deletions .github/workflows/workflow-template.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
on: pull_request

name: Workflow templates

jobs:
check-yaml:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- run: |
docker pull mikefarah/yq
for f in $(find github/workflows/ -name '*.yaml'); do
docker run --rm --volume "$PWD":/workdir mikefarah/yq "$f" > /dev/null
done

shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- run: |
task lint:shell-script
40 changes: 40 additions & 0 deletions .github/workflows/yaml.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Do not edit this file! Make a pull request on changing
# github/workflows/yaml.yaml in
# https://github.com/itk-dev/devops_itkdev-docker if need be.

### ### YAML
###
### Validates YAML files.
###
### #### Assumptions
###
### 1. A docker compose service named `prettier` for running
### [Prettier](https://prettier.io/) exists.
###
### #### Symfony YAML
###
### Symfony's YAML config files use 4 spaces for indentation and single quotes.
### Therefore we use a [Prettier configuration
### file](https://prettier.io/docs/configuration), `.prettierrc.yaml`, to make
### Prettier format YAML files in the `config/` folder like Symfony expects.

name: YAML

on:
pull_request:
push:
branches:
- main
- develop

jobs:
yaml-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- run: |
docker network create frontend

- run: |
docker compose run --rm prettier '**/*.{yml,yaml}' --check
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.task
19 changes: 19 additions & 0 deletions .markdownlint.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// markdownlint-cli configuration file (cf. https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#configuration)
{
"default": true,
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md
"line-length": {
"line_length": 120,
"code_blocks": false,
"tables": false
},
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md024.md
"no-duplicate-heading": {
"siblings_only": true
},
// https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-collapsed-sections#creating-a-collapsed-section
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md033.md
"no-inline-html": {
"allowed_elements": ["details", "summary"]
}
}
8 changes: 8 additions & 0 deletions .markdownlintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#ignoring-files
vendor/
node_modules/
LICENSE.md
# Drupal
web/*.md
web/core/
web/*/contrib/
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

- [PR-108](https://github.com/itk-dev/devops_itkdev-docker/pull/108)
Added Drupal module template

### Changed

- Updated to PHP 8.3
Expand Down
27 changes: 19 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,28 @@ __Note__: You have to follow the instructions brew writes to get it working (use
If you use the [Dory](https://github.com/FreedomBen/dory) revers proxy required to
run DDF CMS unmodified you need to install dory. We only use dory for DPL/DDF shared
projects (multi supplier projects).

```sh
brew install dory
```

### Templates

The [`templates`](templates/) directory contains templates for adding
the itkdev `docker-compose` setup to new or exiting projects.
the itkdev `docker compose` setup to new or exiting projects.

Run

```sh
rsync -avz templates/<TYPE>/ <PATH TO HTDOCS FOLDER>
itkdev-docker-compose template:install --list
```

Also create an `.env` file beside the `docker-compose.yml` file that contains
`COMPOSE_PROJECT_NAME=<NAME>` to namespace the docker setup for the projekt.
to see a list of all templates.

Run `itkdev-docker-compose template:install drupal-10`, say, to install or update a template in a project.

In addition to the docker compose setup for our projects, installing a template will also add GitHib Actions workflow
files to a project; see [Github Actions templates](docs/github-actions-templates.md) for details.

### Docker commands

Expand Down Expand Up @@ -112,13 +119,15 @@ LOCAL_PATH='sites/default/files'

## SSL certification support

This setup comes with self-signed wildcard certificates for *.local.itkdev.dk, but other certificates can be generated by using this openssl command on Mac, just change the two places where the domain is written.
This setup comes with self-signed wildcard certificates for *.local.itkdev.dk, but other certificates can be generated
by using this openssl command on Mac, just change the two places where the domain is written.

```sh
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout docker.key -out docker.crt -subj "/CN=*.local.itkdev.dk" -reqexts SAN -extensions SAN -config <(cat /usr/local/etc/openssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:*.local.itkdev.dk'))
```

To mac browser trust this certificate you need to open it with key-chain right click and select "Get info" and then open the "Trust" tab and select "Always trust".
To mac browser trust this certificate you need to open it with key-chain right click and select "Get info" and then open
the "Trust" tab and select "Always trust".

The certificate is located in `./treafik/ssl/docker.crt` in this repository.

Expand Down Expand Up @@ -158,17 +167,19 @@ The fuld list can be found at
[https://hub.docker.com/search?q=itkdev&type=image](https://hub.docker.com/search?q=itkdev&type=image).

## More
For more details about usage see https://docs.itkdev.dk

For more details about usage see <https://docs.itkdev.dk>

## Previous versions

### NFS mounts removed

From version 3.0.0 the feature to use NFS mounted name-volumes has been removed
because it is no longer compatible with MacOS. (@see https://github.com/docker/for-mac/issues/6544)
because it is no longer compatible with MacOS. (@see <https://github.com/docker/for-mac/issues/6544>)

If you have previously enabled NFS with `nfs:enable` you should clean up as
follows:

```shell
sudo nano /etc/exports
# Delete the line matching this pattern, and save you changes
Expand Down
64 changes: 64 additions & 0 deletions Taskfile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# https://taskfile.dev

version: "3"

includes:
github-actions: ./task/Taskfile.github-actions.yml

vars:
GITHUB_ACTIONS_TEMPLATES_HEADER: |
# Github Actions templates

This repository contains a number of [GitHub
Actions](https://docs.github.com/en/actions) workflow template files that
are copied to a project when running `itkdev-docker-compose
template:install`. Any changes to the workflows should be made in [this
repository](%THIS_REPOSITORY%) and then the project template must be updated
to match the new templates.

GITHUB_ACTIONS_TEMPLATES_FOOTER: |

tasks:
build:
desc: "Build everything"
cmds:
- task: github-actions:config-headers:update
- task: github-actions:template-headers:update
- task: github-actions:documentation:update
- task: github-actions:link
- task: lint:markdown
- task: lint:yaml

lint:markdown:
desc: "Lint Markdown"
cmds:
- '[[ -n "$SKIP_FIX" ]] || docker run --rm --volume "$PWD":/md itkdev/markdownlint markdownlint {{.GLOB}} --fix'
- docker run --rm --volume "$PWD":/md itkdev/markdownlint markdownlint {{.GLOB}}
vars:
# We use a block scalar (https://yaml-multiline.info/#block-scalars) here to make escaping (a little) easier.
GLOB: >-
{{.CLI_ARGS | default "'**/*.md'"}}

lint:shell-script:
desc: "Lint shell scripts"
cmds:
# https://github.com/koalaman/shellcheck?tab=readme-ov-file#installing
- docker run --rm --volume "$PWD:"/mnt koalaman/shellcheck:stable {{.GLOB}}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about good old peterdavehello/shellcheck https://github.com/PeterDaveHello/docker-shellcheck

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://hub.docker.com/r/koalaman/shellcheck “is the official Docker image for ShellCheck⁠”.

vars:
# We use a block scalar (https://yaml-multiline.info/#block-scalars) here to make escaping (a little) easier.
GLOB: >-
{{.CLI_ARGS | default "task/scripts/*"}}

lint:yaml:
desc: "Lint YAML"
cmds:
- |
# docker pull mikefarah/yq
for f in $(find github/workflows/ -name '*.yaml'); do
docker run --rm --volume "$PWD":/workdir mikefarah/yq "$f" > /dev/null
done

default:
cmds:
- task --list
silent: true
Loading