Merge pull request #200 from gradido/workflows_refactor

workflows_refactor
This commit is contained in:
Ulf Gebhardt 2021-04-16 21:38:44 +02:00 committed by GitHub
commit 8ae2e65e12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 254 additions and 186 deletions

View File

@ -6,34 +6,13 @@ on:
- master - master
jobs: jobs:
##############################################################################
# JOB: PREPARE ###############################################################
##############################################################################
#prepare:
# name: Prepare
# runs-on: ubuntu-latest
# # needs: [nothing]
# steps:
# ##########################################################################
# # CHECKOUT CODE ##########################################################
# ##########################################################################
# - name: Checkout code
# uses: actions/checkout@v2
# ##########################################################################
# # TODO: DO STUFF ??? #####################################################
# ##########################################################################
# - name: Check translation files
# run: |
# scripts/translations/sort.sh
# scripts/translations/missing-keys.sh
############################################################################## ##############################################################################
# JOB: DOCKER BUILD COMMUNITY NEO4J ########################################## # JOB: DOCKER BUILD COMMUNITY NEO4J ##########################################
############################################################################## ##############################################################################
build_production_frontend: build_production_frontend:
name: Docker Build Production - Frontend name: Docker Build Production - Frontend
runs-on: ubuntu-latest runs-on: ubuntu-latest
#needs: [prepare] [nothing] #needs: [nothing]
steps: steps:
########################################################################## ##########################################################################
# CHECKOUT CODE ########################################################## # CHECKOUT CODE ##########################################################
@ -65,116 +44,154 @@ jobs:
path: /tmp/frontend.tar path: /tmp/frontend.tar
############################################################################## ##############################################################################
# JOB: DOCKER BUILD PRODUCTION BACKEND ####################################### # JOB: DOCKER BUILD PRODUCTION LOGIN SERVER ##################################
############################################################################## ##############################################################################
#build_production_backend: build_production_login_server:
# name: Docker Build Production - Backend name: Docker Build Production - Login Server
# runs-on: ubuntu-latest runs-on: ubuntu-latest
# needs: [prepare] #needs: [nothing]
# steps: steps:
# ########################################################################## ##########################################################################
# # CHECKOUT CODE ########################################################## # CHECKOUT CODE ##########################################################
# ########################################################################## ##########################################################################
# - name: Checkout code - name: Checkout code
# uses: actions/checkout@v2 uses: actions/checkout@v2
# ########################################################################## with:
# # SET ENVS ############################################################### submodules: recursive
# ########################################################################## ##########################################################################
# - name: ENV - VERSION # SET ENVS ###############################################################
# run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV ##########################################################################
# - name: ENV - BUILD_DATE - name: ENV - VERSION
# run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
# - name: ENV - BUILD_VERSION - name: ENV - BUILD_DATE
# run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
# - name: ENV - BUILD_COMMIT - name: ENV - BUILD_VERSION
# run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
# ########################################################################## - name: ENV - BUILD_COMMIT
# # BUILD BACKEND DOCKER IMAGE (production) ################################ run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
# ########################################################################## ##########################################################################
# - name: backend | Build `production` image # LOGIN SERVER ###########################################################
# run: | ##########################################################################
# docker build --target production -t "ocelotsocialnetwork/backend:latest" -t "ocelotsocialnetwork/backend:${VERSION}" -t "ocelotsocialnetwork/backend:${BUILD_VERSION}" backend/ - name: Login Server | Build `production` image
# docker save "ocelotsocialnetwork/backend" > /tmp/backend.tar run: |
# - name: Upload Artifact docker build -t "gradido/login_server:latest" -t "gradido/login_server:production" -t "gradido/login_server:${VERSION}" -t "gradido/login_server:${BUILD_VERSION}" login_server/
# uses: actions/upload-artifact@v2 docker save "gradido/login_server" > /tmp/login_server.tar
# with: - name: Upload Artifact
# name: docker-backend-production uses: actions/upload-artifact@v2
# path: /tmp/backend.tar with:
name: docker-login-server-production
path: /tmp/login_server.tar
############################################################################## ##############################################################################
# JOB: DOCKER BUILD PRODUCTION WEBAPP ######################################## # JOB: DOCKER BUILD PRODUCTION COMMUNITY SERVER ##############################
############################################################################## ##############################################################################
#build_production_webapp: build_production_community_server:
# name: Docker Build Production - WebApp name: Docker Build Production - Community Server
# runs-on: ubuntu-latest runs-on: ubuntu-latest
# needs: [prepare] #needs: [nothing]
# steps: steps:
# ########################################################################## ##########################################################################
# # CHECKOUT CODE ########################################################## # CHECKOUT CODE ##########################################################
# ########################################################################## ##########################################################################
# - name: Checkout code - name: Checkout code
# uses: actions/checkout@v2 uses: actions/checkout@v2
# ########################################################################## ##########################################################################
# # SET ENVS ############################################################### # SET ENVS ###############################################################
# ########################################################################## ##########################################################################
# - name: ENV - VERSION - name: ENV - VERSION
# run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
# - name: ENV - BUILD_DATE - name: ENV - BUILD_DATE
# run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
# - name: ENV - BUILD_VERSION - name: ENV - BUILD_VERSION
# run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
# - name: ENV - BUILD_COMMIT - name: ENV - BUILD_COMMIT
# run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
# ########################################################################## ##########################################################################
# # BUILD WEBAPP DOCKER IMAGE (build) ###################################### # COMMUNITY SERVER #######################################################
# ########################################################################## ##########################################################################
# - name: webapp | Build `production` image - name: Community Server | Build `production` image
# run: | run: |
# docker build --target production -t "ocelotsocialnetwork/webapp:latest" -t "ocelotsocialnetwork/webapp:${VERSION}" -t "ocelotsocialnetwork/webapp:${BUILD_VERSION}" webapp/ docker build -t "gradido/community_server:latest" -t "gradido/community_server:production" -t "gradido/community_server:${VERSION}" -t "gradido/community_server:${BUILD_VERSION}" -f ./community_server/Dockerfile ./
# docker save "ocelotsocialnetwork/webapp" > /tmp/webapp.tar docker save "gradido/community_server" > /tmp/community_server.tar
# - name: Upload Artifact - name: Upload Artifact
# uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
# with: with:
# name: docker-webapp-production name: docker-community-server-production
# path: /tmp/webapp.tar path: /tmp/community_server.tar
############################################################################## ##############################################################################
# JOB: DOCKER BUILD PRODUCTION MAINTENANCE ################################### # JOB: DOCKER BUILD PRODUCTION MARIADB #######################################
############################################################################## ##############################################################################
#build_production_maintenance: build_production_mariadb:
# name: Docker Build Production - Maintenance name: Docker Build Production - MariaDB
# runs-on: ubuntu-latest runs-on: ubuntu-latest
# needs: [prepare] #needs: [nothing]
# steps: steps:
# ########################################################################## ##########################################################################
# # CHECKOUT CODE ########################################################## # CHECKOUT CODE ##########################################################
# ########################################################################## ##########################################################################
# - name: Checkout code - name: Checkout code
# uses: actions/checkout@v2 uses: actions/checkout@v2
# ########################################################################## ##########################################################################
# # SET ENVS ############################################################### # SET ENVS ###############################################################
# ########################################################################## ##########################################################################
# - name: ENV - VERSION - name: ENV - VERSION
# run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
# - name: ENV - BUILD_DATE - name: ENV - BUILD_DATE
# run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
# - name: ENV - BUILD_VERSION - name: ENV - BUILD_VERSION
# run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
# - name: ENV - BUILD_COMMIT - name: ENV - BUILD_COMMIT
# run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
# ########################################################################## ##########################################################################
# # BUILD MAINTENANCE DOCKER IMAGE (build) ################################# # MARIADB ################################################################
# ########################################################################## ##########################################################################
# - name: maintenance | Build `production` image - name: MariaDB | Build `production` image
# # TODO: --target production run: |
# run: | docker build -t "gradido/mariadb:latest" -t "gradido/mariadb:production" -t "gradido/mariadb:${VERSION}" -t "gradido/mariadb:${BUILD_VERSION}" -f ./mariadb/Dockerfile ./
# docker build -t "ocelotsocialnetwork/maintenance:latest" -t "ocelotsocialnetwork/maintenance:${VERSION}" -t "ocelotsocialnetwork/maintenance:${BUILD_VERSION}" webapp/ -f webapp/Dockerfile.maintenance docker save "gradido/mariadb" > /tmp/mariadb.tar
# docker save "ocelotsocialnetwork/maintenance" > /tmp/maintenance.tar - name: Upload Artifact
# - name: Upload Artifact uses: actions/upload-artifact@v2
# uses: actions/upload-artifact@v2 with:
# with: name: docker-mariadb-production
# name: docker-maintenance-production path: /tmp/mariadb.tar
# path: /tmp/maintenance.tar
##############################################################################
# JOB: DOCKER BUILD PRODUCTION NGINX #########################################
##############################################################################
build_production_nginx:
name: Docker Build Production - Nginx
runs-on: ubuntu-latest
#needs: [nothing]
steps:
##########################################################################
# CHECKOUT CODE ##########################################################
##########################################################################
- name: Checkout code
uses: actions/checkout@v2
##########################################################################
# SET ENVS ###############################################################
##########################################################################
- name: ENV - VERSION
run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
- name: ENV - BUILD_DATE
run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: ENV - BUILD_VERSION
run: echo "BUILD_VERSION=${VERSION}.${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
- name: ENV - BUILD_COMMIT
run: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
##########################################################################
# NGINX ##################################################################
##########################################################################
- name: Nginx | Build `production` image
run: |
docker build -t "gradido/nginx:latest" -t "gradido/nginx:production" -t "gradido/nginx:${VERSION}" -t "gradido/nginx:${BUILD_VERSION}" -f ./nginx/Dockerfile ./
docker save "gradido/nginx" > /tmp/nginx.tar
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: docker-nginx-production
path: /tmp/nginx.tar
############################################################################## ##############################################################################
# JOB: UPLOAD TO DOCKERHUB ################################################### # JOB: UPLOAD TO DOCKERHUB ###################################################
@ -182,7 +199,7 @@ jobs:
upload_to_dockerhub: upload_to_dockerhub:
name: Upload to Dockerhub name: Upload to Dockerhub
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [build_production_frontend] needs: [build_production_frontend, build_production_login_server, build_production_community_server, build_production_mariadb, build_production_nginx]
env: env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
@ -202,27 +219,34 @@ jobs:
path: /tmp path: /tmp
- name: Load Docker Image - name: Load Docker Image
run: docker load < /tmp/frontend.tar run: docker load < /tmp/frontend.tar
#- name: Download Docker Image (Backend) - name: Download Docker Image (Login Server)
# uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
# with: with:
# name: docker-backend-production name: docker-login-server-production
# path: /tmp path: /tmp
#- name: Load Docker Image - name: Load Docker Image
# run: docker load < /tmp/backend.tar run: docker load < /tmp/login_server.tar
#- name: Download Docker Image (WebApp) - name: Download Docker Image (Community Server)
# uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
# with: with:
# name: docker-webapp-production name: docker-community-server-production
# path: /tmp path: /tmp
#- name: Load Docker Image - name: Load Docker Image
# run: docker load < /tmp/webapp.tar run: docker load < /tmp/community_server.tar
#- name: Download Docker Image (Maintenance) - name: Download Docker Image (MariaDB)
# uses: actions/download-artifact@v2 uses: actions/download-artifact@v2
# with: with:
# name: docker-maintenance-production name: docker-mariadb-production
# path: /tmp path: /tmp
#- name: Load Docker Image - name: Load Docker Image
# run: docker load < /tmp/maintenance.tar run: docker load < /tmp/mariadb.tar
- name: Download Docker Image (Nginx)
uses: actions/download-artifact@v2
with:
name: docker-nginx-production
path: /tmp
- name: Load Docker Image
run: docker load < /tmp/nginx.tar
########################################################################## ##########################################################################
# Upload ################################################################# # Upload #################################################################
########################################################################## ##########################################################################
@ -230,16 +254,18 @@ jobs:
run: echo "${DOCKERHUB_TOKEN}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin run: echo "${DOCKERHUB_TOKEN}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
- name: Push frontend - name: Push frontend
run: docker push --all-tags gradido/frontend run: docker push --all-tags gradido/frontend
#- name: Push backend - name: Push login_server
# run: docker push --all-tags ocelotsocialnetwork/backend run: docker push --all-tags gradido/login_server
#- name: Push webapp - name: Push community_server
# run: docker push --all-tags ocelotsocialnetwork/webapp run: docker push --all-tags gradido/community_server
#- name: Push maintenance - name: Push MariaDB
# run: docker push --all-tags ocelotsocialnetwork/maintenance run: docker push --all-tags gradido/mariadb
- name: Push Nginx
run: docker push --all-tags gradido/nginx
##############################################################################
# JOB: GITHUB TAG LATEST VERSION ############################################# # JOB: GITHUB TAG LATEST VERSION #############################################
############################################################################## ##############################################################################
##############################################################################
github_tag: github_tag:
name: Tag latest version on Github name: Tag latest version on Github
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@ -46,17 +46,17 @@ jobs:
with: with:
submodules: recursive submodules: recursive
########################################################################## ##########################################################################
# BUILD LOGIN SERVER DOCKER IMAGE (build) ################################ # BUILD LOGIN SERVER DOCKER IMAGE ########################################
########################################################################## ##########################################################################
- name: login server | Build `test` image - name: login server | Build `test` image
run: | run: |
docker build --target login_server_debug -t "gradido/loginserver:test" -f ./login_server/Dockerfile.debug login_server/ docker build --target login_server_debug -t "gradido/login_server:test" -f ./login_server/Dockerfile.debug login_server/
docker save "gradido/loginserver:test" > /tmp/loginserver.tar docker save "gradido/login_server:test" > /tmp/login_server.tar
- name: Upload Artifact - name: Upload Artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: docker-loginserver-test name: docker-login-server-test
path: /tmp/loginserver.tar path: /tmp/login_server.tar
############################################################################## ##############################################################################
# JOB: DOCKER BUILD TEST COMMUNITY SERVER #################################### # JOB: DOCKER BUILD TEST COMMUNITY SERVER ####################################
@ -72,23 +72,75 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v2 uses: actions/checkout@v2
########################################################################## ##########################################################################
# BUILD COMMUNITY SERVER DOCKER IMAGE (build) ############################ # BUILD COMMUNITY SERVER DOCKER IMAGE ####################################
########################################################################## ##########################################################################
- name: community server | Build `test` image - name: community server | Build `test` image
run: | run: |
docker build -t "gradido/communityserver:test" -f ./community_server/Dockerfile ./ docker build -t "gradido/community_server:test" -f ./community_server/Dockerfile ./
docker save "gradido/communityserver:test" > /tmp/communityserver.tar docker save "gradido/community_server:test" > /tmp/community_server.tar
- name: Upload Artifact - name: Upload Artifact
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: docker-communityserver-test name: docker-community-server-test
path: /tmp/communityserver.tar path: /tmp/community_server.tar
##############################################################################
# JOB: DOCKER BUILD TEST MARIADB #############################################
##############################################################################
build_test_mariadb:
name: Docker Build Test - MariaDB
runs-on: ubuntu-latest
#needs: [nothing]
steps:
##########################################################################
# CHECKOUT CODE ##########################################################
##########################################################################
- name: Checkout code
uses: actions/checkout@v2
##########################################################################
# BUILD MARIADB DOCKER IMAGE #############################################
##########################################################################
- name: mariadb | Build `test` image
run: |
docker build -t "gradido/mariadb:test" -f ./mariadb/Dockerfile ./
docker save "gradido/mariadb:test" > /tmp/mariadb.tar
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: docker-mariadb-test
path: /tmp/mariadb.tar
##############################################################################
# JOB: DOCKER BUILD TEST NGINX ###############################################
##############################################################################
build_test_nginx:
name: Docker Build Test - Nginx
runs-on: ubuntu-latest
#needs: [nothing]
steps:
##########################################################################
# CHECKOUT CODE ##########################################################
##########################################################################
- name: Checkout code
uses: actions/checkout@v2
##########################################################################
# BUILD NGINX DOCKER IMAGE #############################################
##########################################################################
- name: nginx | Build `test` image
run: |
docker build -t "gradido/nginx:test" -f ./nginx/Dockerfile ./
docker save "gradido/nginx:test" > /tmp/nginx.tar
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: docker-nginx-test
path: /tmp/nginx.tar
############################################################################## ##############################################################################
# JOB: LINT FRONTEND ######################################################### # JOB: LINT FRONTEND #########################################################
############################################################################## ##############################################################################
lint_frontend: lint_frontend:
name: Lint frontend name: Lint - Frontend
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [build_test_frontend] needs: [build_test_frontend]
steps: steps:
@ -155,8 +207,9 @@ jobs:
# COVERAGE CHECK FRONTEND ################################################ # COVERAGE CHECK FRONTEND ################################################
########################################################################## ##########################################################################
- name: frontend | Coverage check - name: frontend | Coverage check
uses: devmasx/coverage-check-action@v1.2.0 uses: webcraftmedia/coverage-check-action@master
with: with:
report_name: Coverage Frontend
type: lcov type: lcov
result_path: ./coverage/lcov.info result_path: ./coverage/lcov.info
min_coverage: 11 min_coverage: 11

View File

@ -1,47 +1,36 @@
######################################################################################################### #########################################################################################################
# Build release # Build release
######################################################################################################### #########################################################################################################
From conanio/gcc7 as release From conanio/gcc9 as release
ENV DOCKER_WORKDIR="/code" ENV DOCKER_WORKDIR="/code"
USER root USER root
COPY --from=unicorny/protoc:3.9.1 /usr/bin/protoc /usr/bin/
COPY --from=unicorny/protoc:3.9.1 /usr/lib/libprotobuf.so.20 /usr/lib/libprotobuf.so.20
COPY --from=unicorny/protoc:3.9.1 /usr/lib/libprotoc.so.20 /usr/lib/libprotoc.so.20
COPY --from=unicorny/protoc:3.9.1 /usr/include/google/protobuf/* /usr/include/google/protobuf/
RUN mkdir -p ${DOCKER_WORKDIR} RUN mkdir -p ${DOCKER_WORKDIR}
WORKDIR ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR}
COPY . . COPY . .
#RUN git submodule update --init --recursive
RUN ls -la
RUN cd dependencies/iroha-ed25519 && \
ls -la && \
mkdir build && \
cd build && \
cmake .. -DEDIMPL=ref10 -DHASH=sha2_sphlib -DRANDOM=bcryptgen -DBUILD=STATIC && \
make -j$(nproc)
RUN cd dependencies/mariadb-connector-c && \ RUN cd dependencies/mariadb-connector-c && \
mkdir build && \ mkdir build && \
cd build && \ cd build && \
cmake -DWITH_SSL=OFF .. cmake -DWITH_SSL=OFF ..
RUN chmod +x compile_proto.sh RUN chmod +x compile_pot.sh && ./compile_pot.sh
RUN chmod +x compile_pot.sh
RUN ls -la
RUN ./compile_pot.sh
RUN ./compile_proto.sh
RUN mkdir build && \ RUN mkdir build && \
cd build && \ cd build && \
conan install .. --build=missing && \ conan install .. --build=missing && \
cmake .. && \ cmake .. && \
make -j$(nproc) Gradido_LoginServer make -j$(nproc) protoc grpc_cpp_plugin
RUN chmod +x unix_parse_proto.sh && ./unix_parse_proto.sh
RUN cd build && \
cmake .. && \
make -j$(nproc) Gradido_LoginServer
CMD ["./code"] CMD ["./code"]