Compare commits

...

21 Commits

Author SHA1 Message Date
19208e00fe bugfix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 36s
2024-08-20 14:39:28 +00:00
527285a487 icon fix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 47s
2024-07-11 19:23:20 +00:00
2aef815c81 fixes
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 47s
2024-07-11 18:36:15 +00:00
ed25b0e8ba fixes
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Failing after 24s
2024-07-11 18:35:03 +00:00
9c71629910 fixes
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Failing after 23s
2024-07-11 18:25:00 +00:00
ab20b9a621 fixes made a mongodump on current local database for tests to have data 2024-07-11 18:21:10 +00:00
ab3f5cfbbf fixes
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Failing after 0s
2024-07-11 18:20:59 +00:00
81724cb20d fix made a mongodump on current local database for tests to have data 2023-12-26 14:15:45 +00:00
4098ade419 fix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 1s
deploy to production / deploy (push) Successful in 1m15s
2023-12-26 14:15:40 +00:00
232682671f fix made a mongodump on current local database for tests to have data 2023-12-26 14:11:52 +00:00
867624df97 fix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 1m8s
2023-12-26 14:11:46 +00:00
200da771cd fix made a mongodump on current local database for tests to have data 2023-12-26 14:05:28 +00:00
db2a168f4b fix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 1m15s
2023-12-26 14:04:50 +00:00
62737151ee fix made a mongodump on current local database for tests to have data 2023-12-26 12:54:43 +00:00
5565db4d8c fix
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 1s
deploy to production / deploy (push) Successful in 1m5s
2023-12-26 12:54:35 +00:00
190ecbe521 lighthouse
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 0s
deploy to production / deploy (push) Successful in 1m11s
2023-12-26 12:48:02 +00:00
94c14f3e1d lighthouse made a mongodump on current local database for tests to have data 2023-12-26 12:45:34 +00:00
8184ffecf4 lighthouse
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 1s
deploy to production / deploy (push) Failing after 28s
2023-12-26 12:45:24 +00:00
edfca1f007 tst! and also made a mongodump on current local database for tests to have data
Some checks failed
deploy to production / lighthouse-evaluation (push) Failing after 1s
deploy to production / deploy (push) Failing after 16s
2023-12-24 10:12:06 +00:00
d752df1c15 prepush hooks and also made a mongodump on current local database for tests to have data and also made a mongodump on current local database for tests to have data 2023-12-24 10:08:21 +00:00
9bca27bf72 prepush hooks and also made a mongodump on current local database for tests to have data 2023-12-24 09:50:03 +00:00
172 changed files with 1398 additions and 1316 deletions

View File

@@ -0,0 +1,76 @@
name: initialize database
description: initialize database by using database of test environment
author: BinKrassDuFass
inputs:
MONGODB_SERVICE_NAME:
description: 'Name of the MongoDB service'
required: true
default: 'mongo'
TIBI_USERNAME:
description: 'Username of the Tibi account'
required: true
default: 'admin'
TIBI_PASSWORD:
description: 'Password of the Tibi account'
required: true
default: 'admin'
TIBI_API_URL:
description: 'URL of the Tibi API'
required: true
default: 'http://tibi-server:8080/api/v1'
TIBI_API_CONFIG_PATH:
description: 'Path of the Tibi API config'
required: true
default: "${{github.workspace}}/api/config.yml}}"
TIBI_API_NAMESPACE:
description: 'Namespace of the Tibi API'
required: true
PROJECT_NAME:
description: 'Name of the project'
required: true
runs:
using: composite
steps:
- name: Setup mongo tools
shell: bash
run: |
echo "::group::setup Mongo keys"
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
sudo apt-get install -y gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
echo "::endgroup::"
echo "::group::mongodb tools"
sudo apt-get update
echo "aptitude install mongodb-database-tools"
sudo apt-get install -y mongodb-database-tools
echo "::endgroup::"
echo "mongodump --version"
mongodump --version
- name: Restore MongoDB Data
run: |
echo "::group::initialize mongo data"
mongorestore --uri "mongodb://${{inputs.MONGODB_SERVICE_NAME}}:27017" ./.github/actions/init-db/mongo-dump
echo "::endgroup::"
shell: bash
- name: set config in tibi
shell: bash
run: ./.github/actions/init-db/setConfigInTibiProject.sh ${{inputs.TIBI_USERNAME}} ${{inputs.TIBI_PASSWORD}} ${{inputs.TIBI_API_URL}} ${{inputs.TIBI_API_CONFIG_PATH}} ${{inputs.TIBI_API_NAMESPACE}} ${{inputs.PROJECT_NAME}}

View File

@@ -1,19 +0,0 @@
name: initialize database
description: initialize database by using database of test environment
author: BinKrassDuFass
inputs:
MONGODB_SERVICE_NAME:
description: 'Name of the MongoDB service'
required: true
default: 'mongo'
runs:
using: composite
steps:
- name: Install MongoDB tools
run: sudo apt-get install -y mongodb-database-tools
- name: Restore MongoDB Data
run: mongorestore --uri "mongodb://${{inputs.MONGODB_SERVICE_NAME}}:27017" /.gitea/

View File

@@ -1,116 +0,0 @@
const axios = require("axios")
const { MongoClient } = require("mongodb")
const fs = require("fs")
const util = require("util")
// Function to log objects in a detailed manner
function logObj(o) {
console.log(util.inspect(o, false, null, true))
}
// Function to preload the database with collections
async function preloadDatabase(db, collections) {
for (const { name, file } of collections) {
const content = fs.readFileSync(file, "utf8")
const data = JSON.parse(content)
const collection = db.collection(name)
await collection.insertMany(data)
const insertedData = await collection.find({}).toArray()
if (insertedData.length !== data.length) {
console.error(
`Mismatch in collection ${name}: expected ${data.length} documents, found ${insertedData.length}`
)
} else {
console.log(`Successfully verified ${insertedData.length} documents in ${name}`)
}
}
}
async function initializeDatabase(config) {
try {
const dbClient = new MongoClient(config.mongodbUri)
await dbClient.connect()
let db = dbClient.db(config.tibiDbPrefix)
await db.collection("project").deleteMany({ namespace: config.projectApiNamespace })
const dbName = config.tibiDbPrefix + "_" + config.projectApiNamespace
db = dbClient.db(dbName)
await db.dropDatabase()
// Login to Tibi API
const loginResponse = await axios.post(config.tibiApiUrl + "/login", {
username: config.tibiUsername,
password: config.tibiPassword,
})
const tibiToken = loginResponse.data.token
// Create project
let project
try {
const projectResponse = await axios.post(
config.tibiApiUrl + "/project",
{
configFile: config.projectApiConfig,
name: config.projectApiNamespace,
namespace: config.projectApiNamespace,
description: config.projectApiNamespace,
},
{
headers: {
"X-Auth-Token": tibiToken,
},
}
)
project = projectResponse.data
} catch (e) {
logObj(e)
throw e
}
// Check if project is online
const projectStatus = await axios.get(config.tibiApiUrl + "/project/" + project.id, {
headers: {
"X-Auth-Token": tibiToken,
},
})
if (!projectStatus.data.api.isOnline) {
throw new Error(`Project ${config.projectApiNamespace} is not online.`)
}
// Define collections to preload into the database
const collections = [
// Define your collections here as per your Cypress plugin logic
// { name: "collectionName", file: "path/to/file.json" },
// ... other collections
]
await preloadDatabase(db, collections)
await dbClient.close()
} catch (error) {
console.error("Error initializing the database:", error)
throw error
}
}
// Run the script if it's executed directly
if (require.main === module) {
const config = {
projectApiNamespace: process.env.PROJECT_API_NAMESPACE,
mongodbUri: process.env.MONGODB_URI,
tibiDbPrefix: process.env.TIBI_DB_PREFIX,
tibiApiUrl: process.env.TIBI_API_URL,
// Add other required environment variables here
}
initializeDatabase(config)
.then(() => console.log("Database initialized successfully"))
.catch((err) => {
console.error("Failed to initialize database:", err)
process.exit(1)
})
}
module.exports = initializeDatabase

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"admin.system.version"}],"uuid":"c25383adb2a64a8ca31b3bc5cbcb6690"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"admin.system.version"}],"uuid":"c25383adb2a64a8ca31b3bc5cbcb6690"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"unique":true,"key":{"name":{"$numberInt":"1"}},"name":"name_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"_fts":"text","_ftsx":{"$numberInt":"1"}},"name":"textindex","ns":"tibi.project","weights":{"name":{"$numberInt":"1"}},"default_language":"german","language_override":"language","textIndexVersion":{"$numberInt":"3"}}],"uuid":"a0a6733bdb52400f9f3b17985bc28bcc"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"unique":true,"key":{"username":{"$numberInt":"1"}},"name":"username_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"_fts":"text","_ftsx":{"$numberInt":"1"}},"name":"textindex","ns":"tibi.user","weights":{"$**":{"$numberInt":"1"}},"default_language":"german","language_override":"language","textIndexVersion":{"$numberInt":"3"}}],"uuid":"ba627bbd4ac24b3ca92aebdc33b7d4b0"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.lighthouse"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.lighthouse"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.lighthouse"}],"uuid":"fca0bbd4089a43689609593178154de9"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.lighthouseSubpath"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.lighthouseSubpath"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.lighthouseSubpath"}],"uuid":"b72120ec4cd34054a83833dce78c869f"}

Binary file not shown.

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"unique":true,"key":{"name":{"$numberInt":"1"}},"name":"name_1","ns":"tibi.project"},{"v":{"$numberInt":"2"},"key":{"_fts":"text","_ftsx":{"$numberInt":"1"}},"name":"textindex","ns":"tibi.project","weights":{"name":{"$numberInt":"1"}},"default_language":"german","language_override":"language","textIndexVersion":{"$numberInt":"3"}}],"uuid":"a0a6733bdb52400f9f3b17985bc28bcc"}

Binary file not shown.

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"unique":true,"key":{"username":{"$numberInt":"1"}},"name":"username_1","ns":"tibi.user"},{"v":{"$numberInt":"2"},"key":{"_fts":"text","_ftsx":{"$numberInt":"1"}},"name":"textindex","ns":"tibi.user","weights":{"$**":{"$numberInt":"1"}},"default_language":"german","language_override":"language","textIndexVersion":{"$numberInt":"3"}}],"uuid":"ba627bbd4ac24b3ca92aebdc33b7d4b0"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.backups"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.backups"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.backups"}],"uuid":"4993cf280e844b5b80fe208350713002"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.banner"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.banner"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.banner"}],"uuid":"7346de51448b4a27b289a0e32336d0b6"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.content"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.content"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.content"},{"v":{"$numberInt":"2"},"key":{"meta.datum":{"$numberInt":"1"}},"name":"meta.datum_1","ns":"tibi_allkids_erfurt.content"}],"uuid":"df9951d7cf964e5e8a22360c09aa27c7"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.forms"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.forms"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.forms"}],"uuid":"7815c4dfc9d9460c8aac8cf94cc67ea6"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.navigation"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.navigation"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.navigation"}],"uuid":"d989bd0ea7ba4ea4ae728b8a6baa62ba"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.ssr"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.ssr"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.ssr"},{"v":{"$numberInt":"2"},"unique":true,"key":{"path":{"$numberInt":"1"}},"name":"path_1","ns":"tibi_allkids_erfurt.ssr"}],"uuid":"75869e19f8164beabe53366265b10208"}

View File

@@ -0,0 +1 @@
{"options":{},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_","ns":"tibi_allkids_erfurt.temperature"},{"v":{"$numberInt":"2"},"key":{"insertTime":{"$numberInt":"1"}},"name":"insertTime_1","ns":"tibi_allkids_erfurt.temperature"},{"v":{"$numberInt":"2"},"key":{"updateTime":{"$numberInt":"1"}},"name":"updateTime_1","ns":"tibi_allkids_erfurt.temperature"}],"uuid":"eb60c1bc334c4fa2a473fdb6c99b3e6a"}

View File

@@ -0,0 +1,108 @@
#!/bin/bash
# Start a GitHub Actions group for input validation
echo "::group::Validating Inputs"
# Check if the correct number of arguments is passed
if [ "$#" -ne 6 ]; then
echo "Incorrect number of arguments provided."
echo "Usage: $0 <TIBI_USERNAME> <TIBI_PASSWORD> <TIBI_API_URL> <PROJECT_API_CONFIG> <PROJECT_NAMESPACE> <PROJECT_NAME>"
exit 1
fi
# Assigning passed arguments to variables for better readability
TIBI_USERNAME=$1
TIBI_PASSWORD=$2
TIBI_API_URL=$3
PROJECT_API_CONFIG=$4
PROJECT_NAMESPACE=$5
PROJECT_NAME=$6
echo "Provided TIBI_USERNAME: $TIBI_USERNAME"
echo "TIBI_API_URL: $TIBI_API_URL"
# Be cautious with logging sensitive data like passwords and tokens
# Echoing the password or sensitive information is generally not recommended
# End the input validation group
echo "::endgroup::"
# Start a group for authentication
echo "::group::Authenticating User"
# Prepare authentication request payload
auth_payload=$(jq -n --arg username "$TIBI_USERNAME" --arg password "$TIBI_PASSWORD" '{username: $username, password: $password}')
echo "Authentication payload: $auth_payload"
# Fetch the authentication token
echo "Requesting authentication token..."
auth_response=$(curl -s -X POST -H "Content-Type: application/json" -d "$auth_payload" "$TIBI_API_URL/login")
# Logging the response for debugging (remove sensitive data as necessary)
echo "Authentication response: $auth_response"
# Extract token from the response
TIBI_AUTH_TOKEN=$(echo $auth_response | jq -r '.token')
# Check if the token was successfully retrieved
if [ -z "$TIBI_AUTH_TOKEN" ]; then
echo "Failed to get authentication token. Exiting script."
exit 1
fi
echo "Authentication token received successfully."
echo "::endgroup::"
# Start a group for fetching project data
echo "::group::Fetching Project Data"
# Get the list of projects from the API
echo "Retrieving projects..."
response=$(curl -s -H "X-Auth-Token: $TIBI_AUTH_TOKEN" "$TIBI_API_URL/project")
echo $response
projects=$(echo $response) # Parse the JSON response to get project data
echo "::endgroup::"
# Start a group for processing project data
echo "::group::Processing Project Data"
# Initialize variables to track project existence
projectFound=false
projectId=""
# Loop through each project to find if the required project exists
for row in $(echo "${projects}" | jq -r '.[] | @base64'); do
_jq() {
echo ${row} | base64 --decode | jq -r ${1}
}
api_name=$(_jq '.name')
# Check if the current project's namespace matches the target
if [ "$api_name" == "$PROJECT_NAME" ]; then
projectId=$(_jq '.id')
projectData=$(echo ${row} | base64 --decode)
projectFound=true
break
fi
done
echo "::endgroup::"
# Start a group for creating or updating the project
echo "::group::Creating or Updating Project"
# Conditionally create a new project or update the existing one
if [ "$projectFound" = true ]; then
echo "Project found with ID: $projectId, updating..."
# Prepare updated project data
updatedProjectData=$(echo $projectData | jq --arg configFile "$PROJECT_API_CONFIG" '.configFile = $configFile | del(.id)')
# Send a PUT request to update the project
updateResponse=$(curl -s -X PUT -H "Content-Type: application/json" -H "X-Auth-Token: $TIBI_AUTH_TOKEN" -d "$updatedProjectData" "$TIBI_API_URL/project/$projectId")
# Logging the response for debugging (remove sensitive data as necessary)
echo "Update response: $updateResponse"
else
echo "Project not found. Creating new project..."
# Send a POST request to create a new project
createResponse=$(curl -s -X POST -H "Content-Type: application/json" -H "X-Auth-Token: $TIBI_AUTH_TOKEN" -d "{\"configFile\":\"$PROJECT_API_CONFIG\", \"name\":\"$PROJECT_NAMESPACE\", \"namespace\":\"$PROJECT_NAMESPACE\", \"description\":\"$PROJECT_NAMESPACE\"}" "$TIBI_API_URL/project")
fi
echo "::endgroup::"

View File

@@ -3,80 +3,24 @@ name: deploy to production
on: "push"
jobs:
lighthouse-evaluation:
runs-on: ubuntu-latest
container:
image: ubuntu-latest
services:
mongo:
image: mongo:4.2
ports:
- 27017:27017
maildev:
image: gitbase.de/robin/maildev:latest
ports:
- 80:80
- 25:25
tibi-server:
image: gitbase.de/cms/tibi-server
ports:
- 8080:8080
env:
DB_DIAL: mongodb://mongo
API_PORT: 8080
MAIL_HOST: maildev:25
SECURITY_ALLOWABSOLUTEPATHS: "true"
SECURITY_ALLOWUPPERPATHS: "true"
SECURITY_ALLOWRELATIVEPATHS: "true"
live-server:
image: gitbase.de/robin/live-server:latest
ports:
- 8081:8081
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: "20"
- name: Load .env file
run: |
set -a
source .env
set +a
- name: Initialize database
run: node /.gitea/actions/init-db
env:
PROJECT_API_NAMESPACE: $TIBI_NAMESPACE
MONGODB_URI: mongodb://mongo #service name!
TIBI_DB_PREFIX: $TIBI_PREFIX
TIBI_API_URL: http://tibi-server:8080/api/v1
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
options: --name mongo
maildev:
image: gitbase.de/robin/maildev:latest
ports:
- 80:80
- 25:25
options: --name maildev
tibi-server:
image: gitbase.de/cms/tibi-server
@@ -89,11 +33,17 @@ jobs:
SECURITY_ALLOWABSOLUTEPATHS: "true"
SECURITY_ALLOWUPPERPATHS: "true"
SECURITY_ALLOWRELATIVEPATHS: "true"
options: --name tibi-server
volumes:
- ${{ github.workspace }}:/repo
live-server:
image: gitbase.de/robin/live-server:latest
image: gitbase.de/robin/apache-image:latest
ports:
- 8081:8081
- 8081:80
volumes:
- ${{ github.workspace }}/frontend:/usr/local/apache2/htdocs/
options: --name live-server
steps:
- uses: actions/checkout@v3
@@ -103,29 +53,31 @@ jobs:
- name: setup node 18
uses: actions/setup-node@v3
- name: container within a step
uses: docker://node:20-alpine3.19
- name: Initialize database
uses: ./.github/actions/init-db
with:
entrypoint: echo
args: "dastest"
- name: check docker networking infos
run: |
echo "${{ toJson(job) }}"
echo "${{ github }}"
docker network ls
docker network inspect bridge
docker network inspect host
docker network inspect none
docker network inspect container:${{ job.services.tibi-server.id }}
docker network inspect container:${{ job.services.live-server.id }}
docker network inspect container:${{ job.services.mongo.id }}
docker network inspect container:${{ job.services.maildev.id }}
TIBI_API_NAMESPACE: allkids_erfurt
TIBI_API_CONFIG_PATH: /repo/api/config.yml
PROJECT_NAME: AllKids
- name: install dependencies
env:
FORCE_COLOR: "true"
- name: SERVICE RESTART
uses: docker://docker
with:
args: docker restart live-server tibi-server mongo maildev
- name: Cache node modules
uses: actions/cache@v3
with:
path: |
.yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: setup yarn
run: |
npm install -g yarn
corepack enable
corepack prepare yarn@3.2.4 --activate
yarn install
- name: modify config
@@ -165,38 +117,61 @@ jobs:
run: |
yarn build:server
- name: build legacy
env:
FORCE_COLOR: "true"
run: |
yarn build:legacy
#- name: Load .env file
# run: |
# set -a
# source .env
# set + a
- name: Wait for Live Server
- name: SERVICE RESTART
uses: docker://docker
with:
args: docker restart live-server tibi-server
- name: wait for boot
run: |
attempts=0
max_attempts=2
while ! curl --output /dev/null --silent --head --fail http://live-server:8081; do
if [ $attempts -eq $max_attempts ]; then
echo "Live server not ready after $max_attempts attempts"
echo "${{ toJson(job) }}"
curl -v http://live-server:8081
exit 1
fi
attempts=$((attempts+1))
echo "Waiting for live-server to be ready... attempt $attempts"
sleep 5
done
sleep 15
- name: Inspect Service Containers
run: |
for container_id in $(docker ps --format '{{.ID}}'); do
echo "::group:: Container logs:"
docker logs $container_id || true
echo "::endgroup::"
done
#- name: Wait for Live Server
# run: |
# attempts=0
# max_attempts=5
# same port since its inside the same network, so not 8081....
# while ! curl --fail "http://live-server:80"; do
# if [ $attempts -eq $max_attempts ]; then
# echo "Live server not ready after $max_attempts attempts"
# echo "${{ toJson(job) }}"
# curl -v "http://live-server:80" || true
# echo "::group::liveserver logs"
# docker logs live-server
# echo "::endgroup::"
# echo "::group:: tibi-server logs"
# docker logs tibi-server
# echo "::endgroup::"
# echo "::group:: tibi-server curl"
# docker exec live-server cat /var/log/apache2/access.log || true
# docker exec live-server bash -c "apt-get update && apt-get install -y curl"
# docker exec live-server echo $PATH
# docker exec live-server bash -c 'curl -v "http://tibi-server:8080/api/v1/_/allkids_erfurt/ssr?token=owshwerNwoa&url=/noindex"'
# echo "::endgroup::"
# exit 1
# fi
# attempts=$((attempts+1))
# echo "Waiting for live-server to be ready... attempt $attempts"
# sleep 5
# done
- name: Test HTTP Request
run: |
echo "Live server not ready after $max_attempts attempts"
echo "${{ toJson(job) }}"
echo "${{ job.services.live-server.id }}"
echo "${{ job.services.tibi-server.id }}"
echo "${{ job.services.mongo.id }}"
docker logs "${{ job.services.tibi-server.id }}"
docker logs "${{ job.services.live-server.id }}"
curl -v http://live-server:8081
curl -v http://live-server:80
- name: Install Chrome
run: |
@@ -210,18 +185,94 @@ jobs:
- name: Lighthouse Analysis
run: |
yarn add lighthouse
npx lighthouse http://127.0.0.1:8081 --output json --output-path /tmp/lighthouse-report.json --chrome-flags="--headless --no-sandbox --disable-dev-shm-usage"
npx lighthouse http://live-server:80 --output json --output-path /tmp/lighthouse-report.json --chrome-flags="--headless --no-sandbox --disable-dev-shm-usage"
# Notify-Lighthouse Step
- name: Notify Lighthouse
- name: upload-to-nextcloud
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 }}/tmp:/lighthouse-reports \
drillster/drone-email /tmp/lighthouse-report.json
sudo apt-get update && sudo apt-get install -y curl bash findutils
export datetime=`date +%Y-%m-%d_%H-%M-%S`
mkdir -p /tmp/cloudsend/${GITHUB_REF_NAME}/$${datetime}
mv /tmp/lighthouse-report.json /tmp/cloudsend/${GITHUB_REF_NAME}/$${datetime}/
./scripts/cloudsend.sh /tmp/cloudsend/ https://www.basiswolke.de/index.php/s/xHGsypbqiifnGH5
deploy:
name: deploy
runs-on: ubuntu-latest
container:
image: gitbase.de/actions/ubuntu:latest
volumes:
- /data:/data
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
submodules: true
- run: |
git fetch --force --tags
# setup node 20
- name: setup node 20
uses: actions/setup-node@v3
with:
node-version: 20
- name: install dependencies
run: |
npm install -g yarn
yarn install
- 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
set -o allexport
. ./.env
echo "PROJECT_RELEASE=${SENTRY_PROJECT}.r`git rev-list HEAD --count`-`git describe --all --long | sed 's+/+-+'`" >> .env
. ./.env
set +o allexport
echo ______ .env ______
cat .env
echo
sed -i 's#\(const release = \).*#\1"'${PROJECT_RELEASE}'"#g' api/hooks/config-client.js
sed -i 's#\(const originURL = \).*#\1"'${LIVE_URL}'"#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
# sed -i 's#\(PREVIEW_URL=\).*#\1'${LIVE_URL}/preview'#g' api/config.yml.env
echo ______ api/config.yml.env ______
cat api/config.yml.env
- 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: deploy
if: github.ref == 'refs/heads/master'

Some files were not shown because too many files have changed in this diff Show More