diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 126e341893ea8a72fb737c274a8926541c77e18e..2d0ac5dbb1b65f6dbda6fe0fe631ace9802070ac 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,8 +36,24 @@ stages: .auto-deploy: image: "registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v1.0.6" +workflow: + rules: + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + build: services: + rules: + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + if: '$CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"' + when: always + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + changes: + - package.json + - webpack.mix.js + - composer.json + - Dockerfile + when: always + - when: never prepare_node: stage: prepare @@ -45,6 +61,7 @@ prepare_node: before_script: - npm install script: + - export - npm run prod artifacts: paths: @@ -56,9 +73,16 @@ prepare_node: key: "node-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" paths: - node_modules - only: - - branches - - tags + rules: + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + if: '$CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"' + when: always + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + changes: + - package.json + - webpack.mix.js + when: always + - when: never prepare_composer: stage: prepare @@ -72,11 +96,21 @@ prepare_composer: key: "composer-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" paths: - vendor + rules: + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + if: '$CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000"' + when: always + - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH' + changes: + - composer.json + when: always + - when: never review: variables: HELM_UPGRADE_VALUES_FILE: .gitlab/review-apps-values.yaml ROLLOUT_RESOURCE_TYPE: deployment + AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES: CI_COMMIT_BRANCH,CI_PROJECT_URL environment: name: review/$CI_COMMIT_REF_NAME on_stop: stop_review diff --git a/.gitlab/review-apps-values.yaml b/.gitlab/review-apps-values.yaml index a8a7331ba3b28d881b56dc6845c2124779a058b2..7cc425296f52231aa209ffe2a4df90fdfcbf1782 100644 --- a/.gitlab/review-apps-values.yaml +++ b/.gitlab/review-apps-values.yaml @@ -1,5 +1,7 @@ postgresql: enabled: false +image: + tag: latest hpa: enabled: false resources: @@ -36,4 +38,4 @@ resourcesRedis: limits: resourcesFetcher: requests: - limits: \ No newline at end of file + limits: diff --git a/Dockerfile b/Dockerfile index bfdd92cae87b08678e11b1a889fdbe02edccc19c..f9a5c07a473802ae056928ea0bdc37edc3574f81 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ FROM alpine:3.11.3 RUN apk add --update \ + git \ + rsync \ nginx \ tzdata \ ca-certificates \ @@ -65,12 +67,20 @@ RUN sed -i 's/;error_log = log\/php7\/error.log/error_log = \/dev\/stderr/g' /et COPY config/nginx.conf /etc/nginx/nginx.conf COPY config/nginx-default.conf /etc/nginx/conf.d/default.conf RUN sed -i 's/fastcgi_pass phpfpm:9000;/fastcgi_pass localhost:9000;/g' /etc/nginx/conf.d/default.conf -COPY --chown=root:nginx . /html + +COPY --chown=root:nginx ./vendor /tmp/vendor +COPY --chown=root:nginx ./public/css /tmp/public/css +COPY --chown=root:nginx ./public/js /tmp/public/js +COPY --chown=root:nginx ./public/mix-manifest.json /tmp/public/mix-manifest.json WORKDIR /html EXPOSE 80 -CMD cp /root/.env .env && \ +CMD mkdir /html && \ + git clone --depth=1 --branch=$CI_COMMIT_BRANCH ${CI_PROJECT_URL}.git /html && \ + cp /root/.env .env && \ + rsync -avz /tmp/public/ /html/public/ && \ + rsync -avz /tmp/vendor/ /html/vendor/ && \ sed -i 's/^REDIS_PASSWORD=.*/REDIS_PASSWORD=null/g' .env && \ if [ "$GITLAB_ENVIRONMENT_NAME" = "production" ]; then sed -i 's/^APP_ENV=.*/APP_ENV=production/g' .env; else sed -i 's/^APP_ENV=.*/APP_ENV=development/g' .env; fi && \ cp database/useragents.sqlite.example database/useragents.sqlite && \ diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index f287afaff6e23f97e903033917833bdaf2d47410..823a0465ba6e27992065eddaa4583897152db3c6 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -143,7 +143,13 @@ spec: # Nginx Container - name: {{ .Chart.Name }}-nginx image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - command: ["nginx"] + command: ["/bin/sh", "-c"] + args: + - mkdir /html && + git clone --depth=1 --branch=$CI_COMMIT_BRANCH ${CI_PROJECT_URL}.git /html && + rsync -avz /tmp/public/ /html/public/ && + rsync -avz /tmp/vendor/ /html/vendor/ && + nginx imagePullPolicy: {{ .Values.image.pullPolicy }} {{- if .Values.application.secretName }} envFrom: