Merge branch 'fradrive/merge-jost-new-build' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into fradrive/merge-jost-new-build

This commit is contained in:
Steffen Jost 2024-12-02 17:54:38 +01:00
commit a1ae491b89
4 changed files with 68 additions and 42 deletions

View File

@ -39,6 +39,7 @@ export STACK_CORES = $(shell echo $(($(CPU_CORES)/2)))
export BASE_PORTS
export UNIWORXDB_OPTS ?= -cf
export PROD ?= false
export SRC
ifneq ($(PROD),true)
export --DEVELOPMENT=--flag uniworx:dev
@ -245,6 +246,7 @@ endif
--env CONTAINER_FILE=$(CONTAINER_FILE) \
--env CONTAINER_NAME=$${CONTAINER_NAME} \
--env JOB=$(JOB) \
--env SRC=$(SRC) \
--name $${CONTAINER_NAME} \
$${CONTAINER_CMD} \
` ; \
@ -253,11 +255,13 @@ endif
$(CONTAINER_COMMAND) attach $${CONTAINER_ID} || : ; \
fi
# For Reverse Proxy Problem see: https://groups.google.com/g/yesodweb/c/2EO53kSOuy0/m/Lw6tq2VYat4J
# HELP(start-backend): start development instance
--start-backend:
export DEV_PORT_HTTP=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTP=' | sed 's/DEV_PORT_HTTP=//'`; \
export DEV_PORT_HTTPS=`cat $(CONTAINER_FILE) | grep 'DEV_PORT_HTTPS=' | sed 's/DEV_PORT_HTTPS=//'`; \
export HOST=`hostname -s` ; \
export HOST=127.0.0.1 ; \
export PORT=$${PORT:-$${DEV_PORT_HTTP}} ; \
export DETAILED_LOGGING=$${DETAILED_LOGGING:-true} ; \
export LOG_ALL=$${LOG_ALL:-false} ; \
@ -271,7 +275,7 @@ endif
export RIBBON=$${RIBBON:-$${HOST:-localhost}} ; \
export APPROOT=$${APPROOT:-http://localhost:$${DEV_PORT_HTTP}} ; \
export AVSPASS=$${AVSPASS:-nopasswordset} ; \
stack $(STACK_CORES) exec --local-bin-path $$(pwd)/bin --copy-bins -- yesod devel -p "$${DEV_PORT_HTTP}" -q "$${DEV_PORT_HTTPS}"
stack $(STACK_CORES) exec --local-bin-path $$(pwd)/bin --copy-bins -- yesod devel -n -p "$${DEV_PORT_HTTP}" -q "$${DEV_PORT_HTTPS}"
# HELP(compile-backend): compile backend binaries
--compile-backend:
stack build $(STACK_CORES) --fast --profile --library-profiling --executable-profiling --flag uniworx:-library-only $(--DEVELOPMENT) --local-bin-path $$(pwd)/bin --copy-bins
@ -293,7 +297,7 @@ uniworx.cabal:
--start-frontend: --compile-frontend;
--dependencies-frontend: node_modules assets static well-known;
node_modules: package.json package-lock.json
npm ci --cache .npm --prefer-offline
npm install --cache .npm --prefer-offline
package-lock.json: package.json
npm install --cache .npm --prefer-offline
assets: assets/favicons assets/icons;
@ -315,7 +319,7 @@ well-known: static;
./bin/uniworxdb $(UNIWORXDB_OPTS)
--shell-ghci:
stack exec -- ghci
stack ghci -- $(SRC)
# --main-is uniworx:exe:uniworx
# HELP(shell-{backend,frontend,memcached,minio,postgres}): enter (bash) shell inside a new container of a given service

View File

@ -16,18 +16,31 @@ jobs:
# echo Add other tasks to build, test, and deploy your project.
# echo See https://aka.ms/yaml
# displayName: 'Run a multi-line script'
# - job: DockerTaskTest
# container:
# image: 'devfra.azurecr.io/de.fraport.trusted/ubuntu:22.04'
# endpoint: devfra
# steps:
# - task: Docker@2
# displayName: Image build test
# inputs:
# command: buildAndPush
# Dockerfile: docker/backend/Dockerfile
# buildContext: .
# tags: backend
- job: DockerTaskTest
container:
image: devfra.azurecr.io/de.fraport.build/tools:1.1.0
endpoint: devfra
steps:
- task: Docker@2
name: dockerLoginDevFra
displayName: Docker Login to devfra
inputs:
command: login
containerRegistry: devFra
- task: Docker@2
name: dockerBuild
displayName: Backend image build test
inputs:
command: build
Dockerfile: docker/backend/Dockerfile
buildContext: .
tags: |
$(Build.BuildNumber)
backend
arguments: |
--build-arg HTTPS_PROXY=http://proxy.frankfurt-airport.de:8080
--build-arg HTTP_PROXY=http://proxy.frankfurt-airport.de:8080
--build-arg NO_PROXY='localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io'
# - job: BuildKitTest
# container:
# image: 'devfra.azurecr.io/de.fraport.trusted/buildkit:0.12.1'
@ -38,15 +51,15 @@ jobs:
# --local context=. \
# --local dockerfile=docker/backend/Dockerfile
# displayName: BuildKit test
- job: CustomBuildahTest
container:
image: 'devfra.azurecr.io/de.fraport.trusted/ubuntu:22.04'
endpoint: devfra
steps:
- script: |
id
docker build --help
sudo apt-get -y update
sudo apt-get -y install buildah
buildah bud -t fradrive-backend-test --volume .:/mnt/fradrive --file docker/backend/Dockerfile
displayName: Build buildah image
# - job: CustomBuildahTest
# container:
# image: 'devfra.azurecr.io/de.fraport.trusted/ubuntu:22.04'
# endpoint: devfra
# steps:
# - script: |
# id
# docker build --help
# sudo apt-get -y update
# sudo apt-get -y install buildah
# buildah bud -t fradrive-backend-test --volume .:/mnt/fradrive --file docker/backend/Dockerfile
# displayName: Build buildah image

View File

@ -1,6 +1,12 @@
FROM debian:12.5
FROM docker.io/ubuntu:latest
RUN apt-get update && apt-get -y install inotify-tools
# debug info
# RUN lsb_release -a
# RUN curl -k https://google.de
RUN env
# RUN curl -sSLk -x $HTTP_PROXY
RUN apt-get -y update && apt-get -y install inotify-tools
RUN apt-get -y update && apt-get -y install haskell-stack git
RUN apt-get -y update && apt-get -y install alex g++ happy libghc-zlib-dev libpq-dev libsodium-dev locales locales-all pkg-config
RUN apt-get -y update && apt-get -y install llvm
@ -26,7 +32,7 @@ RUN stack install yesod-bin
RUN stack install hpack
ENV FRADRIVE_MAKE_TARGET=--start-backend
ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}" JOB="${JOB}"
ENTRYPOINT make -- ${FRADRIVE_MAKE_TARGET} STACK_ROOT="${STACK_ROOT}" IN_CONTAINER=true CONTAINER_FILE="${CONTAINER_FILE}" JOB="${JOB}" SRC="${SRC}"
EXPOSE 3000/tcp
EXPOSE 3443/tcp

View File

@ -37,7 +37,11 @@ type WidgetSiteless = forall site. WidgetFor site ()
---------------------------------------------------------------------------
-- IMPORTANT: Alert-Icons must be registered in alert-icons.js as well!!!
-- IMPORTANT:
-- All icons must be manually registered within the following files:
-- - src/Utils/Icon.hs
-- - assets/icon-src/fontawesome.json
-- - frontend/src/icons.scss
---------------------------------------------------------------------------
data Icon
= IconNew
@ -136,8 +140,7 @@ data Icon
| IconUserBadge -- something about user-avs, e.g. badge in-/valid
| IconGlasses -- user must wear glasses while driving
deriving (Eq, Ord, Enum, Bounded, Show, Read, Generic)
deriving anyclass (Universe, Finite, NFData)
deriving anyclass (Universe, Finite, NFData)
iconText :: Icon -> Text
iconText = camelToPathPiece' 1 . tshow
@ -201,32 +204,32 @@ iconShortcuts = foldMap mkIcon (universeF :: [Icon])
-- Some case are special, hence no Template Haskell here
isVisible :: Bool -> Markup
-- ^ Display an icon that denotes that something is visible or invisible
-- ^ Display an icon that denotes that somethingâ„¢ is visible or invisible
isVisible True = icon IconVisible
isVisible False = icon IconInvisible
hasComment :: Bool -> Markup
-- ^ Display an icon that denotes that something has a comment or not
-- ^ Display an icon that denotes that somethingâ„¢ has a comment or not
hasComment True = icon IconCommentTrue
hasComment False = icon IconCommentFalse
hasTickmark :: Bool -> Markup
-- ^ Maybe display an icon that denotes that something is okay
-- ^ Maybe display an icon that denotes that somethingâ„¢ is okay
hasTickmark True = icon IconOK
hasTickmark False = mempty
isBad :: Bool -> Markup
-- ^ Maybe display an icon that denotes that something is bad
-- ^ Maybe display an icon that denotes that somethingâ„¢ is bad
isBad True = icon IconProblem
isBad False = mempty
-- ^ Maybe display an icon that denotes that something is new
-- ^ Maybe display an icon that denotes that somethingâ„¢ is new
isNew :: Bool -> Markup
isNew True = icon IconNew
isNew False = mempty
-- DEPRECATED by Handler.Utils.updateAutomatic, which includes a helpful tooltip
-- Maybe display an icon that denotes that something is NOT automagically updated or derived, but had been edited
-- Maybe display an icon that denotes that somethingâ„¢ is NOT automagically updated or derived, but had been edited
-- isAutomatic :: Bool -> Markup
-- isAutomatic True = mempty -- icon IconMagic
-- isAutomatic False = icon IconLocked -- IconEdit
@ -262,9 +265,9 @@ iconWriteReadOnly False = icon IconVisible
-- we implement them here just once for the first icon:
--
isVisibleWidget :: Bool -> WidgetSiteless
-- ^ Widget having an icon that denotes that something is visible or invisible
-- ^ Widget having an icon that denotes that somethingâ„¢ is visible or invisible
isVisibleWidget = toWidget . isVisible
maybeIsVisibleWidget :: Maybe Bool -> WidgetSiteless
-- ^ Maybe a widget with an icon that denotes that something is visible or invisible
-- ^ Maybe a widget with an icon that denotes that somethingâ„¢ is visible or invisible
maybeIsVisibleWidget = toWidget . foldMap isVisible