Compare commits

..

2 Commits

Author SHA1 Message Date
Lexi / Zoe c9b3757027
add Docker and Drone boilerplate 2020-06-28 17:20:42 +02:00
Lexi / Zoe 5512a19e1f
add PHP boilerplate 2020-06-28 17:19:58 +02:00
14 changed files with 2030 additions and 3 deletions

45
.drone.yml Normal file
View File

@ -0,0 +1,45 @@
---
kind: pipeline
type: docker
name: default
steps:
- name: install
image: composer
volumes:
- name: composer-cache
path: /tmp/cache
environment:
COMPOSER_CACHE_DIR: /tmp/cache
commands:
- composer install --no-progress --no-interaction --no-dev --optimize-autoloader
- name: unit tests
image: php:7.4
commands:
- vendor/bin/phpunit -c phpunit.xml
- name: build image
image: docker
volumes:
- name: dockersock
path: /var/run/docker.sock
commands:
- docker build -t notecat:latest .
- name: deploy on testing
image: docker/compose
volumes:
- name: dockersock
path: /var/run/docker.sock
commands:
- docker-compose -f docker/docker-compose.testing.yml up --build --detach
volumes:
- name: composer-cache
host:
path: /tmp/drone/composer-cache
- name: dockersock
host:
path: /var/run/docker.sock

1
.env Normal file
View File

@ -0,0 +1 @@
COMPOSE_PROJECT_NAME=notecat

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
/tmp/
# Editors
.vscode
.idea
# PHP
/vendor/
/coverage/

9
Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM php:7.4-apache
WORKDIR /var/www
RUN sed -ri -e 's!/var/www/html!/var/www/public!g' /etc/apache2/sites-available/*.conf
COPY vendor/ /var/www/vendor/
COPY public/ /var/www/public/
COPY src/ /var/www/src/

35
Makefile Normal file
View File

@ -0,0 +1,35 @@
### Variables
DOCKER_COMPOSE_CMD := docker-compose -f docker/docker-compose.local.yml
COMPOSER := composer
PHPUNIT := vendor/bin/phpunit
.PHONY: build up down logs install test phpunit open_coverage
### Container management
build:
${DOCKER_COMPOSE_CMD} build
up:
${DOCKER_COMPOSE_CMD} up --build --detach
down:
${DOCKER_COMPOSE_CMD} down
logs:
${DOCKER_COMPOSE_CMD} logs -f || true
### Dependency management
install:
${COMPOSER} install
### Test suites
test: phpunit
phpunit:
${PHPUNIT} -c phpunit.xml
open_coverage:
${BROWSER} coverage/index.html

27
composer.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "binarydiv/notecat",
"description": "Note taking app. Like Notepad, but meow!",
"type": "project",
"authors": [
{
"name": "binaryDiv",
"email": "binarydiv@gmail.com"
}
],
"require": {
"php": "^7.4"
},
"require-dev": {
"phpunit/phpunit": "^9"
},
"autoload": {
"psr-4": {
"NoteCat\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\Unit\\": "tests/unit/"
}
}
}

1806
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
version: '3'
services:
web:
build: ..
restart: always
ports:
- 8080:80
volumes:
- ../:/var/www/

View File

@ -0,0 +1,17 @@
version: '3'
services:
web:
build: ..
restart: always
networks:
- traefik
labels:
- traefik.enable=true
- traefik.http.routers.notecat.rule=Host(`notecat.dev.0xbd.space`)
- traefik.http.routers.notecat.tls=true
- traefik.http.routers.notecat.tls.certresolver=letsencrypt
networks:
traefik:
external: true

28
phpunit.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.2/phpunit.xsd"
bootstrap="vendor/autoload.php"
executionOrder="depends,defects"
forceCoversAnnotation="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true">
<testsuites>
<testsuite name="unit-tests">
<directory suffix="Test.php">tests/unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="coverage/" lowUpperBound="60" highLowerBound="100"/>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
</logging>
</phpunit>

9
public/index.php Normal file
View File

@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/../vendor/autoload.php';
use NoteCat\HelloWorld;
$hello = new HelloWorld();
echo '<b>' . $hello->getHello() . "</b>\n";

12
src/HelloWorld.php Normal file
View File

@ -0,0 +1,12 @@
<?php
declare(strict_types=1);
namespace NoteCat;
class HelloWorld
{
public function getHello(): string
{
return 'Hello world! :3';
}
}

View File

@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace Tests\Unit;
use NoteCat\HelloWorld;
use PHPUnit\Framework\TestCase;
/**
* @covers NoteCat\HelloWorld
*/
final class HelloWorldTest extends TestCase
{
public function testGetHello(): void
{
$hello = new HelloWorld();
$this->assertSame('Hello Drone! :3', $hello->getHello());
}
}