name: deploy to production

on: "push"
jobs:
    deploy:
        name: deploy
        runs-on: ubuntu-latest
        container:
            image: gitbase.de/actions/ubuntu:latest
            volumes:
                - /data:/data

        services:
            mongo:
                image: mongo:4.2
                ports:
                    - 27017:27017
        steps:
            - uses: actions/checkout@v3
              with:
                  fetch-depth: 0

            - name: setup node 18
              uses: actions/setup-node@v3
              # with:
              #    node-version: 18
              #     cache: yarn 

            - name: install dependencies
              env:
                  FORCE_COLOR: "true"
              run: |
                  npm install -g yarn
                  yarn install


            - name: Build Live Server Docker Image
              run: |
                        docker build -t liveserver-image -f gitbase.de/robin/live-server .

            - name: Start Live Server
              run: |
                        docker run -d -p 80:80 liveserver-image

            - name: Build Tibi Server Docker Image
              run: |
                        docker build -t tibiserver-image \
                        -f gitbase.de/cms/tibi-server .

            - name: Start Tibi Server
              run: |
                        docker run -d -p 8080:8080 tibiserver-image \ 
                        -e API_PORT=8080 \
                        -e DB_DIAL=mongodb://mongo \
                        -e MAIL_HOST=maildev:25 \


            - name: modify config
              run: |
                  sed -i 's#\(sentryEnvironment.*\)".*"#\1"${GITHUB_REF_NAME}"#g' frontend/src/config.ts
                  sed -i 's#//\( sentry\\.init.*\)#\1#g' frontend/src/config.ts
                  export $(cat .env | xargs)
                  echo "PROJECT_RELEASE=${RELEASE_PROJECT_SLUG}.r`git rev-list HEAD --count`-`git describe --all --long | sed 's+/+-+'`" >> .env
                  export $(cat .env | xargs)
                  echo ______ .env ______
                  cat .env
                  echo
                  sed -i 's#\(const release = \).*#\1"'${PROJECT_RELEASE}'"#g' api/hooks/config-client.js

                  # bash scripts/preload-meta.sh frontend/spa.html
                  # bash scripts/preload-meta.sh frontend/spa.html > frontend/_spa.html
                  # cp frontend/_spa.html frontend/spa.html

                  export stamp=`date +%s`
                  sed -i s/__TIMESTAMP__/$stamp/g frontend/spa.html
                  # sed -i s/__TIMESTAMP__/$stamp/g frontend/serviceworker.js
                  # cat frontend/serviceworker.js
                  # rm api/templates/spa.html
                  # cp frontend/spa.html api/templates/spa.html
                  echo ______ frontend/spa.html ______
                  cat frontend/spa.html

            - name: build
              env:
                  FORCE_COLOR: "true"
              run: |
                  yarn build

            #- name: build ssr
            #  env:
            #      FORCE_COLOR: "true"
            #  run: |
            #      yarn build:server

            - name: build legacy
              env:
                  FORCE_COLOR: "true"
              run: |
                  yarn build:legacy

            #- name: staging api testtest
            #  if: github.ref == 'refs/heads/dev'
            #  run: |
            #      targetDir=/data/${GITHUB_REPOSITORY}/${GITHUB_REF_NAME}
            #      mkdir -p targetDir
            #      rsync -av api $targetDir/
            #      mkdir -p $targetDir/frontend/dist
            #      rsync -av frontend/dist/ $targetDir/frontend/dist/
            #- name: staging frontend
            #  if: github.ref == 'refs/heads/dev'
            #  run: |
            #      docker compose -p ${GITHUB_REF_NAME}-${GITHUB_REPOSITORY_NAME}-${GITHUB_REPOSITORY_OWNER} up -d --build --remove-orphans

            # Lighthouse Analysis Step
            - name: Lighthouse Analysis
              run: |
                  mkdir -p ${{ github.workspace }}/lighthouse-reports
                  docker run --rm -v ${{ github.workspace }}/lighthouse-reports:/lighthouse-reports femtopixel/google-lighthouse http://liveserver/ --output json --output-path ${{ github.workspace }}/lighthouse-reports/lighthouse-report.json --chrome-flags="--headless --no-sandbox --disable-dev-shm-usage"

            # Notify-Lighthouse Step
            - name: Notify Lighthouse
              run: |
                  docker run --rm \
                  -e PLUGIN_FROM=noreply@gitbase.de \
                  -e PLUGIN_HOST=smtp.basehosts.de \
                  -e PLUGIN_RECIPIENT=recipient@example.com \
                  -e PLUGIN_SUBJECT="Lighthouse Report" \
                  -v ${{ github.workspace }}/lighthouse-reports:/lighthouse-reports \
                  drillster/drone-email /lighthouse-reports/lighthouse-report.json

            - name: deploy
              if: github.ref == 'refs/heads/master'
              env:
                  RSYNC_USER: "allkids_rsync_master"
                  RSYNC_PASS: ${{ secrets.rsync_master }}
              run: |
                  scripts/deploy.sh ftp1.webmakers.de $RSYNC_USER $RSYNC_PASS
