Skip to content

Commit

Permalink
Build and test Docket image (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
SmetDenis authored Mar 11, 2024
1 parent bdf52b9 commit 363806f
Show file tree
Hide file tree
Showing 12 changed files with 267 additions and 34 deletions.
29 changes: 29 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#
# JBZoo Toolbox - CI-Report-Converter.
#
# This file is part of the JBZoo Toolbox project.
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
# @license MIT
# @copyright Copyright (C) JBZoo.com, All rights reserved.
# @see https://github.com/JBZoo/CI-Report-Converter
#

.git
.idea
.github
build
tests
vendor
schema-examples
.DS_Store
.editorconfig
.gitattributes
.gitignore
.phan.php
.phpunit.result.cache
action.yml
box.json.dist
phpunit.xml.dist
Makefile
107 changes: 91 additions & 16 deletions .github/workflows/demo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ env:
TERM_PROGRAM: Hyper

jobs:
pure-php:
name: Pure PHP
reports:
name: All Report Types
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand All @@ -43,28 +43,61 @@ jobs:
- name: Build the Project
run: make update

- name: Validate CSV (default is table)
run: make demo-github
- name: Report - Table (Default)
run: make demo-github --no-print-directory
continue-on-error: true

- name: Validate CSV (text)
run: OUTPUT=text make demo-github
- name: Report - Text
run: OUTPUT=text make demo-github --no-print-directory
continue-on-error: true

- name: Validate CSV (github)
run: OUTPUT=github make demo-github
- name: Report - Github Actions
run: OUTPUT=github make demo-github --no-print-directory
continue-on-error: true

- name: Validate CSV (gitlab)
run: OUTPUT=gitlab make demo-github
- name: Report - GitLab
run: OUTPUT=gitlab make demo-github --no-print-directory
continue-on-error: true

- name: Validate CSV (teamcity)
run: OUTPUT=teamcity make demo-github
- name: Report - TeamCity CI
run: OUTPUT=teamcity make demo-github --no-print-directory
continue-on-error: true

- name: Validate CSV (junit)
run: OUTPUT=junit make demo-github
- name: Report - JUnit
run: OUTPUT=junit make demo-github --no-print-directory
continue-on-error: true

php:
name: Pure PHP
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
tools: composer

- name: Build the Project
run: make build-install --no-print-directory

- name: 👍 Valid CSV file
run: |
./csv-blueprint \
validate:csv \
--csv=./tests/fixtures/demo.csv \
--schema=./tests/schemas/demo_valid.yml
- name: 👎 Invalid CSV file
run: |
./csv-blueprint \
validate:csv \
--csv=./tests/fixtures/demo.csv \
--schema=./tests/schemas/demo_invalid.yml
continue-on-error: true

phar:
Expand All @@ -85,6 +118,48 @@ jobs:
- name: Build the project
run: make build --no-print-directory

- name: Trying to use the phar file
run: ./build/csv-blueprint.phar validate:csv --csv=./tests/fixtures/demo.csv --schema=./tests/schemas/demo_invalid.yml
- name: 👍 Valid CSV file
run: |
./build/csv-blueprint.phar \
validate:csv \
--csv=./tests/fixtures/demo.csv \
--schema=./tests/schemas/demo_valid.yml
- name: 👎 Invalid CSV file
run: |
./build/csv-blueprint.phar \
validate:csv \
--csv=./tests/fixtures/demo.csv \
--schema=./tests/schemas/demo_invalid.yml
continue-on-error: true

docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: 🐳 Building Docker Image
run: make build-docker

- name: 👍 Valid CSV file
run: |
docker run \
-v `pwd`:/parent-host \
--rm jbzoo/csv-blueprint \
validate:csv \
--csv=/parent-host/tests/fixtures/demo.csv \
--schema=/parent-host/tests/schemas/demo_valid.yml
- name: 👎 Invalid CSV file
run: |
docker run \
-v `pwd`:/parent-host \
--rm jbzoo/csv-blueprint \
validate:csv \
--csv=/parent-host/tests/fixtures/demo.csv \
--schema=/parent-host/tests/schemas/demo_invalid.yml
continue-on-error: true
19 changes: 19 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,3 +174,22 @@ jobs:
with:
name: Reports - ${{ matrix.php-version }}
path: build/

docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: 🐳 Building Docker Image
run: make build-docker

- name: Trying to use the Docker Image
run: docker run --rm jbzoo/csv-blueprint --ansi

- name: Reporting example via Docker
run: make demo-docker --no-print-directory
continue-on-error: true
36 changes: 36 additions & 0 deletions .github/workflows/release-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#
# JBZoo Toolbox - Csv-Blueprint.
#
# This file is part of the JBZoo Toolbox project.
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
# @license MIT
# @copyright Copyright (C) JBZoo.com, All rights reserved.
# @see https://github.com/JBZoo/Csv-Blueprint
#

name: Publish Docker Image

on:
release:
types: [ published ]
push:
branches:
- 'master'

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v3
with:
push: true
tags: jbzoo/csv-blueprint:${{ env.GITHUB_REF_NAME }}
31 changes: 31 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#
# JBZoo Toolbox - Csv-Blueprint.
#
# This file is part of the JBZoo Toolbox project.
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
# @license MIT
# @copyright Copyright (C) JBZoo.com, All rights reserved.
# @see https://github.com/JBZoo/Csv-Blueprint
#

FROM php:8.1-cli-alpine
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

# Install PHP extensions
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN install-php-extensions opcache gd @composer

# Install application
ENV COMPOSER_ALLOW_SUPERUSER=1
COPY . /app
RUN cd /app \
&& composer install --no-dev --optimize-autoloader --no-progress \
&& composer clear-cache
RUN chmod +x app/csv-blueprint

# Color output by default
ENV TERM_PROGRAM=Hyper

ENTRYPOINT ["/app/csv-blueprint"]
33 changes: 28 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,53 @@ build: ##@Project Install all 3rd party dependencies
$(call title,"Install/Update all 3rd party dependencies")
@composer install
@make build-phar
@make create-symlink
@rm -f `pwd`/ci-report-converter

build-install: ##@Project Install all 3rd party dependencies as prod
$(call title,"Install/Update all 3rd party dependencies as prod")
@composer install --no-dev --no-progress --no-interaction --no-suggest
@rm -f `pwd`/ci-report-converter

update: ##@Project Install/Update all 3rd party dependencies
@echo "Composer flags: $(JBZOO_COMPOSER_UPDATE_FLAGS)"
@composer update $(JBZOO_COMPOSER_UPDATE_FLAGS)
@make build-phar


create-symlink: ##@Project Create Symlink (alias for testing)
@ln -sfv `pwd`/csv-blueprint `pwd`/vendor/bin/csv-blueprint


test-all: ##@Project Run all project tests at once
@make test
@make codestyle


build-docker:
$(call title,"Building Docker Image")
@docker build -t jbzoo/csv-blueprint .


demo-valid: ##@Project Run demo valid CSV
$(call title,"Demo - Valid CSV")
@${PHP_BIN} ./csv-blueprint validate:csv \
--csv=./tests/fixtures/demo.csv \
--schema=./tests/schemas/demo_valid.yml

demo-docker: ##@Project Run demo via Docker
$(call title,"Demo - Valid CSV \(via Docker\)")
@docker run --rm \
-v `pwd`:/parent-host \
jbzoo/csv-blueprint \
validate:csv \
--csv=/parent-host/tests/fixtures/demo.csv \
--schema=/parent-host/tests/schemas/demo_valid.yml \
--ansi
$(call title,"Demo - Invalid CSV \(via Docker\)")
@docker run --rm \
-v `pwd`:/parent-host \
jbzoo/csv-blueprint \
validate:csv \
--csv=/parent-host/tests/fixtures/demo.csv \
--schema=/parent-host/tests/schemas/demo_invalid.yml \
--ansi


demo-invalid: ##@Project Run demo invalid CSV
$(call title,"Demo - Invalid CSV")
Expand Down
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# JBZoo / Csv-Blueprint

[![CI](https://github.com/JBZoo/Csv-Blueprint/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/JBZoo/Csv-Blueprint/actions/workflows/main.yml?query=branch%3Amaster) [![Coverage Status](https://coveralls.io/repos/github/JBZoo/Csv-Blueprint/badge.svg?branch=master)](https://coveralls.io/github/JBZoo/Csv-Blueprint?branch=master) [![Psalm Coverage](https://shepherd.dev/github/JBZoo/Csv-Blueprint/coverage.svg)](https://shepherd.dev/github/JBZoo/Csv-Blueprint) [![Psalm Level](https://shepherd.dev/github/JBZoo/Csv-Blueprint/level.svg)](https://shepherd.dev/github/JBZoo/Csv-Blueprint) [![CodeFactor](https://www.codefactor.io/repository/github/jbzoo/csv-blueprint/badge)](https://www.codefactor.io/repository/github/jbzoo/csv-blueprint/issues)
[![Stable Version](https://poser.pugx.org/jbzoo/csv-blueprint/version)](https://packagist.org/packages/jbzoo/csv-blueprint/) [![Total Downloads](https://poser.pugx.org/jbzoo/csv-blueprint/downloads)](https://packagist.org/packages/jbzoo/csv-blueprint/stats) [![Dependents](https://poser.pugx.org/jbzoo/csv-blueprint/dependents)](https://packagist.org/packages/jbzoo/csv-blueprint/dependents?order_by=downloads) [![GitHub License](https://img.shields.io/github/license/jbzoo/csv-blueprint)](https://github.com/JBZoo/Csv-Blueprint/blob/master/LICENSE)
[![Stable Version](https://poser.pugx.org/jbzoo/csv-blueprint/version)](https://packagist.org/packages/jbzoo/csv-blueprint/) [![Total Downloads](https://poser.pugx.org/jbzoo/csv-blueprint/downloads)](https://packagist.org/packages/jbzoo/csv-blueprint/stats) [![Docker Pulls](https://img.shields.io/docker/pulls/jbzoo/csv-blueprint.svg)](https://hub.docker.com/r/jbzoo/csv-blueprint) [![Dependents](https://poser.pugx.org/jbzoo/csv-blueprint/dependents)](https://packagist.org/packages/jbzoo/csv-blueprint/dependents?order_by=downloads) [![GitHub License](https://img.shields.io/github/license/jbzoo/csv-blueprint)](https://github.com/JBZoo/Csv-Blueprint/blob/master/LICENSE)



Expand All @@ -15,6 +15,18 @@ composer require jbzoo/csv-blueprint

### Usage

As Docker container:

```sh
@docker run --rm \
-v `pwd`:/parent-host \
jbzoo/csv-blueprint \
validate:csv \
--csv=/parent-host/tests/fixtures/demo.csv \
--schema=/parent-host/tests/schemas/demo_invalid.yml \
--ansi
```


### Schema file examples

Expand Down Expand Up @@ -55,7 +67,7 @@ columns:
only_uppercase: true # String is only upper-case. Example: "HELLO WORLD"
only_capitalize: true # String is only capitalized. Example: "Hello World"

# Deciaml and integer numbers
# Decimal and integer numbers
min: 10 # Can be integer or float, negative and positive
max: 100.50 # Can be integer or float, negative and positive
precision: 2 # Strict(!) number of digits after the decimal point
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@

"config" : {
"optimize-autoloader" : true,
"allow-plugins" : {"composer/package-versions-deprecated" : true}
"allow-plugins" : {"composer/package-versions-deprecated" : true},
"platform-check" : true
},

"extra" : {
Expand Down
Loading

0 comments on commit 363806f

Please sign in to comment.