feat: generate GitHub Actions configuration

Generate a GitHub Actions workflow file if a project is opted-in for
this feature.

Refs: OD-29
This commit is contained in:
Oliver Davies 2023-04-21 01:39:03 +01:00
parent 4bf72b59e3
commit 02c8b41194
4 changed files with 57 additions and 2 deletions

View file

@ -203,6 +203,14 @@ function getFiles(array $configurationData): Collection
$filesToGenerate[] = new TemplateFile(data: 'drupal-project/phpunit.xml.dist', name: 'phpunit.xml.dist');
}
if (Arr::get($configurationData, 'experimental.createGitHubActionsConfiguration', false) === true) {
$filesToGenerate[] = new TemplateFile(
data: 'ci/github-actions/ci.yml',
name: 'ci.yml',
path: '.github/workflows',
);
}
return $filesToGenerate;
}

View file

@ -37,7 +37,11 @@ final class ConfigurationData
*/
#[Assert\Collection(
allowExtraFields: false,
fields: ['useNewDatabaseCredentials' => new Assert\Type('boolean')]
allowMissingFields: true,
fields: [
'createGitHubActionsConfiguration' => new Assert\Type('boolean'),
'useNewDatabaseCredentials' => new Assert\Type('boolean'),
]
)]
public array $experimental;

View file

@ -0,0 +1,43 @@
name: CI
on:
pull_request:
push:
workflow_dispatch:
env:
COMPOSE_DOCKER_CLI_BUILD: 1
DOCKER_BUILDKIT: 1
DOCKER_UID: 1001
jobs:
build_and_test:
name: Build and test
runs-on: ubuntu-latest
steps:
- name: Install just
run: |
curl --proto '=https' \
--tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin
- name: Checkout the code
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Build and test
run: |
docker compose version
cp --no-clobber .env.example .env
docker compose build --progress plain
docker compose up --detach
docker compose logs
just composer install --quiet --no-progress
# TODO: add PHPCS and PHPStan
just test --testdox --colors=always

View file

@ -57,5 +57,5 @@ _run service command *args:
--entrypoint {{ "{{ command }}"|raw }} \
--no-deps \
--rm \
--tty \
-T \
{{ "{{ service }} {{ args }}"|raw }}