🐳 Deploy image to the internal docker registry

* Deploy the image to the internal docker registry
* Removed unnecessary stage in backend build
This commit is contained in:
Anton Shepilov
2023-04-05 15:55:29 +02:00
committed by GitHub
parent 56e1e4be3a
commit 380f01222a
21 changed files with 58 additions and 22860 deletions
+1 -10
View File
@@ -27,13 +27,4 @@ jobs:
run: cd twake && docker-compose -f docker-compose.tests.yml run -e NODE_OPTIONS=--unhandled-rejections=warn -e SEARCH_DRIVER=mongodb -e DB_DRIVER=mongodb -e PUBSUB_TYPE=local node npm run test:e2e
- name: e2e-cassandra-test
run: cd twake && docker-compose -f docker-compose.tests.yml up -d scylladb elasticsearch rabbitmq && sleep 60 && docker-compose -f docker-compose.tests.yml run -e NODE_OPTIONS=--unhandled-rejections=warn -e SEARCH_DRIVER=elasticsearch -e DB_DRIVER=cassandra node npm run test:e2e
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: cd twake && mv docker-compose.tests.yml docker-compose.yml
- run: cd twake && docker-compose up -d
- run: cd twake && docker-compose exec -T php php composer.phar install
- run: cd twake && docker-compose exec -T php php bin/console twake:schema:update #Test if scylla is live
- run: cd twake && docker-compose exec -T php php bin/console twake:mapping #Test if es is live
- run: cd twake && docker-compose exec -T php php bin/console twake:init #Test in we can do things
+3 -3
View File
@@ -7,14 +7,14 @@ on:
- "twake/docker/**"
jobs:
build-nginx:
build-frontend:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: cd twake && docker build -t twaketech/tdrive-nginx -f docker/twake-nginx/Dockerfile .
- run: cd twake && docker build -t tdrive/tdrive-frontend -f docker/tdrive-frontend/Dockerfile .
build-node:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- run: cd twake && docker build --target production -t twaketech/tdrive-node -f docker/twake-node/Dockerfile .
- run: cd twake && docker build --target production -t docker-registry.linagora.com/tdrive/tdrive-node -f docker/tdrive-node/Dockerfile .
-23
View File
@@ -1,23 +0,0 @@
name: integration-test
on:
pull_request:
branches: [main]
paths:
- "twake/**"
jobs:
test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: build
run: cd twake && docker build -t integration-test -f docker/integration-test/Dockerfile .
- name: build-node
run: cd twake && docker build -t twaketech/tdrive-node -f docker/twake-node/Dockerfile .
- name: run-twake-instance
run: cd twake && docker-compose -f docker-compose.onpremise.mongo.yml up -d && sleep 60
- name: get-logs
run: cd twake && docker-compose -f docker-compose.onpremise.mongo.yml logs && curl http://localhost:3000
- name: run integration-test
run: cd twake && docker run --network host -e SERVER=http://localhost:3000 integration-test
@@ -10,10 +10,11 @@ on:
- ".github/workflows/**"
jobs:
deploy-node:
publish-node:
runs-on: ubuntu-20.04
steps:
- run: 'echo "DOCKERTAGVERSION=2023.Q1.1223" >> $GITHUB_ENV'
- name: "Setup version"
run: 'echo "DOCKERTAGVERSION=2023.Q1.1223" >> $GITHUB_ENV'
- name: Set env to develop
if: endsWith(github.ref, '/develop')
run: 'echo "DOCKERTAG=develop" >> $GITHUB_ENV; echo "DOCKERTAGVERSION=2023.Q1.1223" >> $GITHUB_ENV'
@@ -26,15 +27,19 @@ jobs:
- name: Set env to production
if: endsWith(github.ref, '/main')
run: 'echo "DOCKERTAG=latest" >> $GITHUB_ENV'
- name: "Push to the registry following labels:"
run: |
echo "${{ env.DOCKERTAG }},${{ env.DOCKERTAGVERSION }}"
- uses: actions/checkout@v2
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@master
uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: twaketech/tdrive-node
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
name: tdrive/tdrive-node
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
workdir: twake
registry: docker-registry.linagora.com
context: .
target: production
buildoptions: "-t twaketech/tdrive-node -f docker/twake-node/Dockerfile"
buildoptions: "-t docker-registry.linagora.com/tdrive/tdrive-node -f docker/tdrive-node/Dockerfile"
tags: "${{ env.DOCKERTAG }},${{ env.DOCKERTAGVERSION }}"
@@ -1,4 +1,4 @@
name: update-saas-frontend
name: publish-frontend
# Edit with caution ! Made for build+test on "feature/*" push and pull requests events
# And for only deploying on pushes on "main" branch
@@ -43,8 +43,8 @@ jobs:
name: frontend-build
path: twake/frontend/build/
deploy-nginx:
needs: build-frontend
publish-frontend:
# needs: build-frontend
runs-on: ubuntu-20.04
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/qa' || github.ref == 'refs/heads/canary'
steps:
@@ -63,11 +63,12 @@ jobs:
run: 'echo "DOCKERTAG=latest" >> $GITHUB_ENV'
- uses: actions/checkout@v2
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@master
uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: twaketech/tdrive-nginx
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
name: tdrive/tdrive-frontend
registry: docker-registry.linagora.com
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
workdir: twake
buildoptions: "-t twaketech/tdrive-nginx -f docker/twake-nginx/Dockerfile"
buildoptions: "-t docker-registry.linagora.com/tdrive/tdrive-frontend -f docker/tdrive-frontend/Dockerfile"
tags: "${{ env.DOCKERTAG }},${{ env.DOCKERTAGVERSION }}"
+5 -5
View File
@@ -9,10 +9,10 @@ services:
ports:
- 27017:27017
networks:
- twake_network
- tdrive_network
node:
image: twaketech/twake-node
image: tdrive/tdrive-node
container_name: node
ports:
- 4000:3000
@@ -26,7 +26,7 @@ services:
- STATIC_ROOT=/frontend
build:
context: .
dockerfile: ./docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
target: development
volumes:
- ./backend/node:/usr/src/app
@@ -37,9 +37,9 @@ services:
links:
- mongo
networks:
- twake_network
- tdrive_network
networks:
twake_network:
tdrive_network:
driver: bridge
+2 -2
View File
@@ -12,10 +12,10 @@ services:
- 5672:5672
- 15672:15672
node:
image: twaketech/twake-node:test
image: tdrive/tdrive-node:test
build:
context: .
dockerfile: ./docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
target: test
environment:
- NODE_ENV=test
+2 -2
View File
@@ -11,11 +11,11 @@ services:
ports:
- 27017:27017
node:
image: twaketech/twake-node:test
image: tdrive/tdrive-node:test
container_name: node-test
build:
context: .
dockerfile: ./docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
target: test
environment:
- NODE_ENV=test
+5 -23
View File
@@ -12,7 +12,7 @@ services:
image: rabbitmq:3
node:
image: twaketech/twake-node
image: tdrive/tdrive-node
ports:
- 9229:9229
environment:
@@ -23,7 +23,7 @@ services:
- PUBSUB_URLS=amqp://guest:guest@rabbitmq:5672
build:
context: .
dockerfile: ./docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
target: development
volumes:
- ./backend/node:/usr/src/app
@@ -36,25 +36,7 @@ services:
- scylladb
extra_hosts:
- "host.docker.internal:host-gateway"
php:
image: twaketech/twake-php
environment:
- DEV=dev
build:
context: .
dockerfile: docker/twake-php/Dockerfile
volumes:
- ./backend/core/:/twake-core:cached
- ./docker-data/drive/:/twake-core/drive/
- ./docker-data/fpm/:/etc/docker-data/fpm/
- ./docker-data/drive-preview/:/twake-core/web/medias/
- ./docker-data/uploads/:/twake-core/web/upload/
depends_on:
- scylladb
- rabbitmq
- elasticsearch
links:
- scylladb
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4
environment:
@@ -70,12 +52,12 @@ services:
- ./docker-data/es:/usr/share/elasticsearch/data
nginx:
image: twaketech/twake-nginx
image: tdrive/tdrive-frontend
environment:
- DEV=dev
build:
context: .
dockerfile: docker/twake-nginx/Dockerfile
dockerfile: docker/tdrive-frontend/Dockerfile
ports:
- 8000:80
depends_on:
+1 -1
View File
@@ -8,7 +8,7 @@ services:
- ./docker-data/mongo:/data/db
node:
image: twaketech/twake-node:latest
image: tdrive/tdrive-node:latest
ports:
- 3000:3000
- 8000:3000
+2 -20
View File
@@ -25,7 +25,7 @@ services:
node:
build:
context: .
dockerfile: docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
environment:
- NODE_ENV=production
- PUBSUB_URLS=amqp://guest:guest@rabbitmq:5672
@@ -38,29 +38,11 @@ services:
rabbitmq:
condition: service_healthy
php:
build:
context: .
dockerfile: docker/twake-php/Dockerfile
environment:
- DEV=production
volumes:
- ./default-configuration/backend/Parameters.php:/configuration/Parameters.php
- ./connectors/:/twake-core/src/BuiltInConnectors/Connectors
- ./docker-data/drive/:/twake-core/drive/
- ./docker-data/fpm/:/etc/docker-data/fpm/
- ./docker-data/drive-preview/:/twake-core/web/medias/
- ./docker-data/uploads/:/twake-core/web/upload/
depends_on:
scylladb:
condition: service_healthy
rabbitmq:
condition: service_healthy
nginx:
build:
context: .
dockerfile: docker/twake-nginx/Dockerfile
dockerfile: docker/tdrive-frontend/Dockerfile
environment:
- DEV=production
- SSL_CERTS=selfsigned
+5 -15
View File
@@ -25,10 +25,10 @@ services:
environment:
- REDIS_REPLICATION_MODE=master
node:
image: twaketech/twake-node:test
image: tdrive/tdrive-node:test
build:
context: .
dockerfile: ./docker/twake-node/Dockerfile
dockerfile: docker/tdrive-node/Dockerfile
target: test
volumes:
- ./coverage/:/usr/src/app/coverage/
@@ -47,18 +47,7 @@ services:
- mongo
- scylladb
- rabbitmq
php:
image: twaketech/twake-php
volumes:
- ./backend/core/:/twake-core:cached
- ./docker-data/drive/:/twake-core/drive/
- ./docker-data/fpm/:/etc/docker-data/fpm/
depends_on:
- scylladb
- rabbitmq
- elasticsearch
links:
- scylladb
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4
environment:
@@ -72,8 +61,9 @@ services:
hard: -1
ports:
- 9200:9200
nginx:
image: twaketech/twake-nginx
image: tdrive/tdrive-frontend
ports:
- 8000:80
links:
@@ -16,11 +16,11 @@ RUN cp /twake-react/src/app/environment/environment.ts.dist /twake-react/src/app
# Second stage: configuring nginx and copying build artifacts
FROM nginx:latest
COPY docker/twake-nginx/nginx.conf /etc/nginx/nginx.conf
COPY docker/twake-nginx/site.conf /etc/nginx/sites-available/site.template
COPY docker/twake-nginx/redirect.conf /etc/nginx/sites-available/redirect
COPY docker/twake-nginx/entrypoint.sh /
COPY docker/twake-nginx/self-signed.sh /usr/local/bin/
COPY docker/tdrive-frontend/nginx.conf /etc/nginx/nginx.conf
COPY docker/tdrive-frontend/site.conf /etc/nginx/sites-available/site.template
COPY docker/tdrive-frontend/redirect.conf /etc/nginx/sites-available/redirect
COPY docker/tdrive-frontend/entrypoint.sh /
COPY docker/tdrive-frontend/self-signed.sh /usr/local/bin/
COPY --from=build /twake-react /twake-react
RUN chmod +x /entrypoint.sh && rm /etc/nginx/conf.d/default.conf
@@ -12,7 +12,7 @@ RUN apt-get update && \
# RUN ln -s /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
### Install Twake
### Install TDrive
WORKDIR /usr/src/app
COPY backend/node/package*.json ./
@@ -24,7 +24,7 @@ RUN npm install
COPY backend/node/ .
# Add frontend Stage
FROM node-base as with-frontend
FROM node-base as installed-libs
COPY backend/node/ .
#Install dev dependancies for build
@@ -36,22 +36,8 @@ RUN NODE_ENV=development npm install && \
#Install prod dependancies after build
npm install --legacy-peer-deps
# Add frontend into node
COPY frontend/ ../public_build/
RUN export NODE_ENV=development && \
apt-get install -y build-essential && \
cd ../public_build/ && \
yarn install --network-timeout 1000000000 && \
yarn global add webpack webpack-cli jest && \
cp src/app/environment/environment.ts.dist src/app/environment/environment.ts && \
export NODE_ENV=production && \
yarn build && \
rm -R node_modules && \
mv build/* ../app/public && \
cd .. && rm -R public_build/
# Development Stage
FROM with-frontend as development
FROM installed-libs as development
ENV NODE_ENV=development
RUN npm install -g pino-pretty && \
@@ -60,7 +46,7 @@ RUN npm install -g pino-pretty && \
CMD ["npm", "run", "dev:debug"]
# Production Stage
FROM with-frontend as production
FROM installed-libs as production
EXPOSE 3000
CMD ["npm", "run", "serve"]
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -14,8 +14,8 @@ const files = [
"frontend/src/app/environment/version.ts",
"backend/core/src/Twake/Core/Controller/Version.php",
"backend/node/src/version.ts",
"../.github/workflows/saas-update-backend.yml",
"../.github/workflows/saas-update-front.yml",
"../.github/workflows/publish-backend.yml",
"../.github/workflows/publish-frontend.yml",
];
var fs = require("fs");