-
-
Notifications
You must be signed in to change notification settings - Fork 657
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
Move CI to GitHub Actions #4921
Changes from all commits
76edf34
2fe7b93
a8ee68e
601a023
b702996
bad45b2
9387511
f92aba7
65ea350
60e97d3
1559613
1c0e875
e9a64e8
9bc7b34
73f65e8
88f0616
ae7cf7b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,25 @@ | ||
root = true | ||
|
||
[*] | ||
indent_style = space | ||
indent_size = 4 | ||
end_of_line = lf | ||
charset = utf-8 | ||
trim_trailing_whitespace = true | ||
end_of_line = lf | ||
indent_size = 4 | ||
indent_style = space | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
|
||
[*.{yml,yaml}] | ||
indent_style = space | ||
indent_size = 2 | ||
|
||
[*.{sh,envsh,env,env*}] | ||
indent_style = space | ||
indent_size = 4 | ||
|
||
# ShellCheck config | ||
shell_variant = bash # like -ln=bash | ||
binary_next_line = true # like -bn | ||
switch_case_indent = true # like -ci | ||
space_redirects = false # like -sr | ||
keep_padding = false # like -kp | ||
function_next_line = true # like -fn | ||
keep_padding = false # like -kp | ||
never_split = true # like -ns | ||
shell_variant = bash # like -ln=bash | ||
simplify = true | ||
space_redirects = false # like -sr | ||
switch_case_indent = true # like -ci |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,250 @@ | ||
--- | ||
name: Database | ||
|
||
on: | ||
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch | ||
workflow_dispatch: | ||
|
||
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push | ||
push: | ||
|
||
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
|
||
env: | ||
EXTRA_PHP_EXTENSIONS: intl bcmath zip pcntl exif curl gd pdo_pgsql pdo_mysql pdo_sqlite | ||
DOCKER_PHP_EXTENSION_INSTALLER_VERSION: 2.2.2 | ||
COMPOSER_VERSION: 2.7.1 | ||
|
||
jobs: | ||
migrations-mysql: | ||
name: MySQL / MariaDB | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
|
||
# See: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs | ||
matrix: | ||
php_version: | ||
- 8.3 | ||
db_version: | ||
- mariadb:latest | ||
- mariadb:11 | ||
- mariadb:10 | ||
|
||
- mysql:latest | ||
- mysql:8.3 | ||
- mysql:8.0 | ||
|
||
container: | ||
image: php:${{ matrix.php_version }}-cli | ||
|
||
services: | ||
db: | ||
image: ${{ matrix.db_version }} | ||
env: | ||
MARIADB_ROOT_PASSWORD: password | ||
MARIADB_PASSWORD: password | ||
MARIADB_USER: pixelfed | ||
MARIADB_DATABASE: pixelfed | ||
|
||
MYSQL_ROOT_PASSWORD: "password" | ||
MYSQL_USER: "pixelfed" | ||
MYSQL_PASSWORD: "password" | ||
MYSQL_DATABASE: "pixelfed" | ||
ports: | ||
- 33306:3306 | ||
|
||
redis: | ||
image: redis:7.2 | ||
options: >- | ||
--health-cmd "redis-cli ping" | ||
--health-interval 10s | ||
--health-timeout 5s | ||
--health-retries 5 | ||
|
||
# See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior | ||
concurrency: | ||
group: db-migrations-${{ github.ref }}-${{ matrix.php_version }}-${{matrix.db_version}} | ||
cancel-in-progress: true | ||
|
||
steps: | ||
- name: Checkout Code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Download mlocati/docker-php-extension-installer | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: mlocati/docker-php-extension-installer | ||
tag: ${{env.DOCKER_PHP_EXTENSION_INSTALLER_VERSION}} | ||
fileName: install-php-extensions | ||
|
||
- name: Download composer | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: composer/composer | ||
tag: ${{env.COMPOSER_VERSION}} | ||
fileName: composer.phar | ||
|
||
- name: Download jippi/dottie | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: jippi/dottie | ||
latest: true | ||
fileName: "*_amd64.deb" | ||
|
||
- name: Install dottie | ||
run: | | ||
dpkg -i *.deb | ||
rm -f *.deb | ||
dottie -v | ||
jippi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- name: Install PHP extensions | ||
run: | | ||
chmod +x install-php-extensions | ||
./install-php-extensions ${{env.EXTRA_PHP_EXTENSIONS}} | ||
|
||
- name: Cache composer dependencies | ||
uses: actions/cache@v4 | ||
with: | ||
path: vendor/ | ||
key: composer-${{matrix.php_version}}-${{ hashFiles('composer.lock') }} | ||
|
||
- name: Install composer dependencies | ||
run: php composer.phar install -n --prefer-dist | ||
|
||
- name: Setup Environment | ||
run: | | ||
cp .env.testing .env | ||
|
||
dottie set DB_CONNECTION=mysql | ||
jippi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
dottie set DB_HOST=db | ||
dottie set DB_PORT=3306 | ||
dottie set DB_DATABASE=pixelfed | ||
dottie set DB_USERNAME=pixelfed | ||
dottie set DB_PASSWORD=password | ||
|
||
dottie set REDIS_HOST=redis | ||
|
||
- run: php artisan config:cache | ||
- run: php artisan route:clear | ||
- run: php artisan storage:link | ||
- run: php artisan key:generate | ||
|
||
- run: php artisan migrate --force | ||
|
||
migrations-postgresql: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think these can be merged? They do the same thing? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there is a couple of differences between the MySQL and PostgreSQL jobs - and while it can be merged, I think the complexity of that isn't worth taking on vs a more verbose, but simple-to-follow step. CI should be as dumb as possible to keep it easy to debug and flexible.
|
||
name: PostgreSQL | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
fail-fast: false | ||
|
||
# See: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs | ||
matrix: | ||
php_version: | ||
- 8.3 | ||
db_version: | ||
- postgres:16 | ||
- postgres:15 | ||
- postgres:14 | ||
|
||
container: | ||
image: php:${{ matrix.php_version }}-cli | ||
|
||
services: | ||
db: | ||
image: ${{ matrix.db_version }} | ||
env: | ||
POSTGRES_USER: "pixelfed" | ||
POSTGRES_PASSWORD: "password" | ||
POSTGRES_DB: "pixelfed" | ||
ports: | ||
- 5432:5432 | ||
options: >- | ||
--health-cmd pg_isready | ||
--health-interval 10s | ||
--health-timeout 5s | ||
--health-retries 5 | ||
|
||
redis: | ||
image: redis:7.2 | ||
options: >- | ||
--health-cmd "redis-cli ping" | ||
--health-interval 10s | ||
--health-timeout 5s | ||
--health-retries 5 | ||
|
||
# See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior | ||
concurrency: | ||
group: db-migrations-${{ github.ref }}-${{ matrix.php_version }}-${{matrix.db_version}} | ||
cancel-in-progress: true | ||
|
||
steps: | ||
- name: Checkout Code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Download mlocati/docker-php-extension-installer | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: mlocati/docker-php-extension-installer | ||
tag: ${{env.DOCKER_PHP_EXTENSION_INSTALLER_VERSION}} | ||
fileName: install-php-extensions | ||
|
||
- name: Download composer | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: composer/composer | ||
tag: ${{env.COMPOSER_VERSION}} | ||
fileName: composer.phar | ||
|
||
- name: Download jippi/dottie | ||
uses: robinraju/release-downloader@v1.9 | ||
with: | ||
repository: jippi/dottie | ||
latest: true | ||
fileName: "*_amd64.deb" | ||
|
||
- name: Install dottie | ||
run: | | ||
dpkg -i *.deb | ||
rm -f *.deb | ||
dottie -v | ||
|
||
- name: Install PHP extensions | ||
run: | | ||
chmod +x install-php-extensions | ||
./install-php-extensions ${{env.EXTRA_PHP_EXTENSIONS}} | ||
|
||
- name: Cache composer dependencies | ||
uses: actions/cache@v4 | ||
with: | ||
path: vendor/ | ||
key: composer-${{matrix.php_version}}-${{ hashFiles('composer.lock') }} | ||
|
||
- name: Install composer dependencies | ||
run: php composer.phar install -n --prefer-dist | ||
|
||
- name: Setup Environment | ||
run: | | ||
cp .env.testing .env | ||
|
||
dottie set DB_CONNECTION=pgsql | ||
dottie set DB_HOST=db | ||
dottie set DB_PORT=5432 | ||
jippi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
dottie set DB_DATABASE=pixelfed | ||
dottie set DB_USERNAME=pixelfed | ||
dottie set DB_PASSWORD=password | ||
dottie set REDIS_HOST=redis | ||
|
||
- run: php artisan config:cache | ||
- run: php artisan route:clear | ||
- run: php artisan storage:link | ||
- run: php artisan key:generate | ||
|
||
- run: php artisan migrate --force |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is just sorting keys alphabetically