-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yml
139 lines (119 loc) · 3.94 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
name: 'Build Symfony App'
description: 'Builds and optionaly tests a Symfony app'
inputs:
repository:
description: 'Repository to fetch'
required: false
default: '${{ github.repository }}'
build-webpack-assets:
description: 'Whether to build webpack assets or not'
required: false
default: 'false'
run-tests:
description: 'Whether to run tests with PHPUnit or not'
required: false
default: 'false'
cache-build:
description: 'Whether to cache the build for reuse in different jobs.'
required: false
default: 'false'
cache-key-prefix:
description: 'Prefix to use for the cache key used for caching the build output.'
required: false
default: 'symfony-build-'
lfs:
description: 'Whether to download Git-LFS files'
required: false
default: 'false'
php-version:
description: 'PHP version to use'
required: false
default: '8.2'
php-extensions:
description: 'PHP extensions to install'
required: false
default: 'mbstring, xml, ctype, iconv, intl, pdo, pdo_mysql, dom, filter, gd, json'
composer-options:
description: 'Additional Composer options'
required: false
default: '--prefer-dist'
composer-additional-dependencies:
description: 'Additional Composer dependencies to install on build.'
required: false
default: ''
symfony-environment:
description: 'Symfony environment to build'
required: false
default: 'dev'
github-token:
description: 'Github Access Token'
required: false
default: ''
outputs:
cache-key:
description: Cache key for restoring build. Input `cache-build` has to be set to 'true'.
value: ${{ steps.cache-key.outputs.cache-key }}
runs:
using: 'composite'
steps:
# Setup PHP
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ inputs.php-version }}
extensions: ${{ inputs.php-extensions }}
tools: composer, flex, symfony
# Fetch the repo
- uses: actions/checkout@v4
with:
repository: ${{ inputs.repository }}
lfs: ${{ inputs.lfs }}
# Setup .env.local
- run: 'echo "APP_ENV=${{ inputs.symfony-environment }}" > .env.local'
shell: bash
# Cache Composer
- id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
shell: bash
- uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
# Auth Composer
- if: ${{ inputs.github-token != '' }}
run: "composer config --auth github-oauth.github.com ${{ inputs.github-token }}"
shell: bash
# Install dependencies with Composer
- run: symfony composer install --no-interaction --no-progress --ansi ${{ inputs.composer-options }}
shell: bash
# Install additional dependencies
- if: ${{ inputs.composer-additional-dependencies != '' }}
run: symfony composer require ${{ inputs.composer-additional-dependencies }}
shell: bash
# Install Test-Pack, if required
- if: ${{ inputs.run-tests == 'true' }}
run: symfony composer require test
shell: bash
# Setup Node
- if: ${{ inputs.build-webpack-assets == 'true' }}
uses: actions/setup-node@v4
# Install packages and build assets with NPM
- if: ${{ inputs.build-webpack-assets == 'true' }}
run: |
npm install
npm run build
shell: bash
# Run tests with PHPUnit
- if: ${{ inputs.run-tests == 'true' }}
run: symfony php bin/phpunit
shell: bash
- id: cache-key
if: ${{ inputs.cache-build == 'true' }}
run: echo "cache-key=${{ inputs.cache-key-prefix }}${{ github.run_id }}" >> $GITHUB_OUTPUT
shell: bash
- if: ${{ inputs.cache-build == 'true' }}
uses: actions/cache/save@v4
with:
path: ./
key: ${{ steps.cache-key.outputs.cache-key }}