diff --git a/.drone.yml b/.drone.yml index 6f45bbd..9796771 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,17 +4,40 @@ type: docker name: Build steps: -- name: build +- name: build_release image: plugins/docker - commands: - - sleep 5 - - docker build -t docker.pbiernat.dev/nginx-php . - - docker images | grep nginx-php + when: + event: tag volumes: - name: docker-sock path: /var/run -- name: publish +- name: publish_release + image: plugins/docker + environment: + DOCKER_USERNAME: + from_secret: registry_username + DOCKER_PASSWORD: + from_secret: registry_password + when: + event: tag + volumes: + - name: docker-sock + path: /var/run + +- name: build_develop + image: plugins/docker + commands: + - ./scripts/drone-build.sh + when: + branch: develop + event: + - push + volumes: + - name: docker-sock + path: /var/run + +- name: publish_develop image: plugins/docker environment: DOCKER_USERNAME: @@ -22,11 +45,43 @@ steps: DOCKER_PASSWORD: from_secret: registry_password commands: - - sleep 5 - - docker login docker.pbiernat.dev -u $DOCKER_USERNAME -p $DOCKER_PASSWORD - - docker push docker.pbiernat.dev/nginx-php + - ./scripts/drone-publish.sh when: - branch: master + branch: develop + event: + - push + volumes: + - name: docker-sock + path: /var/run + +- name: build_feature + image: plugins/docker + commands: + - ./scripts/drone-build.sh + when: + branch: + - feature_* + - develop + event: + - push + - pull_request + volumes: + - name: docker-sock + path: /var/run + +- name: publish_feature + image: plugins/docker + environment: + DOCKER_USERNAME: + from_secret: registry_username + DOCKER_PASSWORD: + from_secret: registry_password + commands: + - ./scripts/drone-publish.sh + when: + branch: develop + event: + - pull_request volumes: - name: docker-sock path: /var/run diff --git a/scripts/drone-build.sh b/scripts/drone-build.sh new file mode 100755 index 0000000..24ab330 --- /dev/null +++ b/scripts/drone-build.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +contains() { + string="$1" + substring="$2" + if test "${string#*$substring}" != "$string" + then + return 0 # $substring is in $string + else + return 1 # $substring is not in $string + fi +} + +branch=$CI_COMMIT_BRANCH +event=$CI_BUILD_EVENT +source_branch=$DRONE_SOURCE_BRANCH +step_name=$DRONE_STEP_NAME + +if { contains "$branch" "feature_" && [ "$event" = push ]; } ; then + sleep 5 + docker build -t docker.pbiernat.dev/nginx-php:$branch . + return 0 +fi + +if { [ "$branch" = develop ] && [ "$event" = pull_request ]; } ; then + sleep 5 + docker build -t docker.pbiernat.dev/nginx-php:$source_branch . + return 0 +fi + +if { [ "$branch" = develop ] && [ "$event" = push ] && [ "$step_name" != build_feature ]; } ; then + sleep 5 + docker build -t docker.pbiernat.dev/nginx-php:dev . + return 0 +fi + diff --git a/scripts/drone-publish.sh b/scripts/drone-publish.sh new file mode 100755 index 0000000..ca242ba --- /dev/null +++ b/scripts/drone-publish.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +contains() { + string="$1" + substring="$2" + if test "${string#*$substring}" != "$string" + then + return 0 # $substring is in $string + else + return 1 # $substring is not in $string + fi +} + +branch=$CI_COMMIT_BRANCH +event=$CI_BUILD_EVENT +source_branch=$DRONE_SOURCE_BRANCH + +docker login docker.pbiernat.dev -u $DOCKER_USERNAME -p $DOCKER_PASSWORD + +if { [ "$branch" = develop ] && [ "$event" = pull_request ]; } ; then + docker push docker.pbiernat.dev/nginx-php:$source_branch + return 0 +fi + +if { [ "$branch" = develop ] && [ "$event" = push ]; } ; then + docker push docker.pbiernat.dev/nginx-php:dev + return 0 +fi + diff --git a/src/etc/nginx/conf.d/default.conf b/src/etc/nginx/conf.d/default.conf index 76e5402..1228c2b 100644 --- a/src/etc/nginx/conf.d/default.conf +++ b/src/etc/nginx/conf.d/default.conf @@ -1,10 +1,8 @@ server { listen 80 default_server; - listen [::]:80 default_server; root /var/www/app/public; location / { - # try to serve file directly, fallback to index.php try_files $uri /index.php$is_args$args; } @@ -14,7 +12,7 @@ server { include fastcgi_params; # optionally set the value of the environment variables used in the application - # fastcgi_param APP_ENV prod; + fastcgi_param APP_ENV dev; # fastcgi_param APP_SECRET ; # fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"; @@ -27,7 +25,8 @@ server { # for more information). fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; - # Prevents URIs that include the front controller. This will 404: + + # Prevents URIs that include the front controller. This will 404: # http://domain.tld/index.php/some-path # Remove the internal directive to allow URIs like this internal; diff --git a/src/etc/supervisor.d/services.ini b/src/etc/supervisor.d/services.ini index f7e4aaf..8b5e0ec 100644 --- a/src/etc/supervisor.d/services.ini +++ b/src/etc/supervisor.d/services.ini @@ -2,6 +2,7 @@ logfile=/var/log/supervisord.log pidfile=/var/run/supervisord.pid nodaemon=false +user=root [program:nginx] command=/usr/sbin/nginx -g 'daemon off;' @@ -21,4 +22,4 @@ priority=5 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr -stderr_logfile_maxbytes=0 \ No newline at end of file +stderr_logfile_maxbytes=0