diff --git a/.github/workflows/build-beta.yml b/.github/workflows/build-beta.yml index ad2a7e4..6a06854 100644 --- a/.github/workflows/build-beta.yml +++ b/.github/workflows/build-beta.yml @@ -17,13 +17,15 @@ jobs: strategy: matrix: include: - - tag: alpine-beta + - version: "0.9.3.0" + tag: alpine-beta folder: beta/alpine file: Dockerfile platforms: linux/amd64,linux/arm64 - - tag: source - folder: beta/source - file: Dockerfile + - version: master + tag: source + folder: build/latest + file: Dockerfile.source platforms: linux/amd64 steps: @@ -61,5 +63,7 @@ jobs: ghcr.io/soup-bowl/opensimulator-docker:${{ matrix.tag }}, platforms: ${{ matrix.platforms }} file: "${{ matrix.file }}" + build-args: | + OPENSIM_VERSION=${{ matrix.version }} cache-from: type=gha cache-to: type=gha,mode=max diff --git a/beta/source/defaults/OpenSim.ini b/beta/source/defaults/OpenSim.ini deleted file mode 100644 index 06e02e1..0000000 --- a/beta/source/defaults/OpenSim.ini +++ /dev/null @@ -1,39 +0,0 @@ - -[Const] - BaseHostname = "localhost" - BaseURL = http://${Const|BaseHostname} - PublicPort = "9000" - PrivURL = ${Const|BaseURL} - PrivatePort = "8003" - -[Permissions] - automatic_gods = false - implicit_gods = false - allow_grid_gods = true - -[Network] - http_listener_port = 9000 - ExternalHostNameForLSL = ${Const|BaseHostname} - shard = "OpenSim" - -[ClientStack.LindenCaps] - Cap_GetTexture = "localhost" - Cap_GetMesh = "localhost" - Cap_AvatarPickerSearch = "localhost" - Cap_GetDisplayNames = "localhost" - -[BulletSim] - AvatarToAvatarCollisionsByDefault = true - -[XEngine] - AppDomainLoading = false - DeleteScriptsOnStartup = false - -[OSSL] - Include-osslDefaultEnable = "config-include/osslDefaultEnable.ini" - -[Architecture] - Include-Architecture = "config-include/Standalone.ini" - -[WebStats] - enabled = true diff --git a/beta/source/defaults/SQLiteStandalone.ini b/beta/source/defaults/SQLiteStandalone.ini deleted file mode 100644 index 200a9c9..0000000 --- a/beta/source/defaults/SQLiteStandalone.ini +++ /dev/null @@ -1,39 +0,0 @@ -; These are the initialization settings for running OpenSim Standalone with an SQLite database - -[DatabaseService] - StorageProvider = "OpenSim.Data.SQLite.dll" - ConnectionString = "URI=file:sqlite-database/OpenSim.db,version=3,UseUTF16Encoding=True" - -[AssetService] - ConnectionString = "URI=file:sqlite-database/Asset.db,version=3" - -; The HGAssetService section controls the connection given to the AssetService in a Hypergrid configuration. -; This has to be separate from [AssetService] because the Hypergrid facing connector uses [HGAssetService] for its config data instead. -; However, the internal asset service will still use the [AssetService] section. -; Therefore, you will almost certainly want the ConnectionString in [HGAssetService] to be the same as in [AssetService] -; so that they both access the same database. -; This issue does not apply to normal MySQL/MSSQL configurations, since by default they use the settings in [DatabaseService] and -; do not have separate connection strings for different services. -[HGAssetService] - ConnectionString = "URI=file:sqlite-database/Asset.db,version=3" - -[InventoryService] - ;ConnectionString = "URI=file:inventory.db,version=3" - ; if you have a legacy inventory store use the connection string below - ConnectionString = "URI=file:sqlite-database/inventory.db,version=3,UseUTF16Encoding=True" - -[AvatarService] - ConnectionString = "URI=file:sqlite-database/avatars.db,version=3" - -[AuthenticationService] - ConnectionString = "URI=file:sqlite-database/auth.db,version=3" - -[UserAccountService] - ConnectionString = "URI=file:sqlite-database/userprofiles.db,version=3" - -[GridUserService] - ConnectionString = "URI=file:sqlite-database/griduser.db,version=3" - -[FriendsService] - ConnectionString = "URI=file:sqlite-database/friends.db,version=3" - diff --git a/beta/source/defaults/StandaloneCommon.ini b/beta/source/defaults/StandaloneCommon.ini deleted file mode 100644 index b9e9fc5..0000000 --- a/beta/source/defaults/StandaloneCommon.ini +++ /dev/null @@ -1,43 +0,0 @@ -; This is the main configuration file for an instance of OpenSim running in standalone mode - -[Hypergrid] - HomeURI = "${Const|BaseURL}:${Const|PublicPort}" - -[Modules] - AssetCaching = "FlotsamAssetCache" - Include-FlotsamCache = "config-include/FlotsamCache.ini" - -[AssetService] - DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll" - AssetLoaderArgs = "assets/AssetSets.xml" - -[LibraryModule] - LibraryName = "Library" - -[LoginService] - WelcomeMessage = "OpenSimulator is running!" - SRV_HomeURI = "${Hypergrid|HomeURI}" - SRV_InventoryServerURI = "${Const|BaseURL}:${Const|PublicPort}" - SRV_AssetServerURI = "${Const|BaseURL}:${Const|PublicPort}" - SRV_ProfileServerURI = "${Const|BaseURL}:${Const|PublicPort}" - SRV_FriendsServerURI = "${Const|BaseURL}:${Const|PublicPort}" - SRV_IMServerURI = "${Const|BaseURL}:${Const|PublicPort}" - MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/" - -[GridInfoService] - login = ${Const|BaseURL}:${Const|PublicPort}/ - gridname = "OpenSimulator Instance" - gridnick = "osss" - welcome = ${Const|BaseURL}:8080 - -[GatekeeperService] - AllowTeleportsToAnyRegion = true - -[EntityTransfer] - AccountForAppearance = "Test User, Astronaut Smith" - -[UserProfilesService] - Enabled = false - LocalServiceModule = "OpenSim.Services.UserProfilesService.dll:UserProfilesService" - UserAccountService = OpenSim.Services.UserAccountService.dll:UserAccountService - AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService" diff --git a/beta/source/docker-entrypoint.sh b/beta/source/docker-entrypoint.sh deleted file mode 100755 index 3b213f7..0000000 --- a/beta/source/docker-entrypoint.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash -set -Eeo pipefail - -chown -R $(id -u):$(id -g) defaults - -if [ ! -e OpenSim.ini ]; then - echo >&2 "INFO: No OpenSim configuration found, pulling one together." - cp defaults/OpenSim.ini OpenSim.ini - - if [ -n "${PHYSICS_ENGINE}" ]; then - echo -e "\n[Startup] - physics = ${PHYSICS_ENGINE:-BulletSim}" >> OpenSim.ini - fi - - echo -e "\n[Estates] - DefaultEstateName = ${ESTATE_NAME:-Default Estate} - DefaultEstateOwnerName = ${ESTATE_OWNER_NAME:-Foo Bar} - DefaultEstateOwnerUUID = ${ESTATE_OWNER_UUID:-00000000-0000-0000-0000-000000000000} - DefaultEstateOwnerEMail = ${ESTATE_OWNER_EMAIL:-user@example.com} - DefaultEstateOwnerPassword = ${ESTATE_OWNER_PASSWORD:-password}" >> OpenSim.ini - - if [[ "${DATABASE_ENGINE}" == "mysql" ]]; then - echo -e "\n[Messaging] - StorageProvider = \"OpenSim.Data.MySQL.dll\" - ConectionString = \"Data Source=${MYSQL_SERVER:-db};Database=${MYSQL_DATABASE:-opensim};User ID=${MYSQL_USER:-root};Password=${MYSQL_PASSWORD};Old Guids=true;\"" >> OpenSim.ini - fi -else - echo >&2 "INFO: OpenSimulator general configuration found. Skipping..." -fi - -if [ ! -e config-include/StandaloneCommon.ini ] && [ ! -e config-include/GridCommon.ini ]; then - echo >&2 "INFO: No Grid Common configuration found, pulling one together." - cp defaults/StandaloneCommon.ini config-include/StandaloneCommon.ini - - echo "[DatabaseService]" >> config-include/StandaloneCommon.ini - if [[ "${DATABASE_ENGINE}" == "mysql" ]]; then - echo " StorageProvider = \"OpenSim.Data.MySQL.dll\"" >> config-include/StandaloneCommon.ini - echo " ConnectionString = \"Data Source=${MYSQL_SERVER:-db};Database=${MYSQL_DATABASE:-opensim};User ID=${MYSQL_USER:-root};Password=${MYSQL_PASSWORD};Old Guids=true;\"" >> config-include/StandaloneCommon.ini - else - echo " Include-Storage = \"config-include/storage/SQLiteStandalone.ini\"" >> config-include/StandaloneCommon.ini - fi - - echo "[GridService] - StorageProvider = \"OpenSim.Data.Null.dll:NullRegionData\" - Region_${REGION_NAME:-Region} = \"DefaultRegion, FallbackRegion\" - ExportSupported = true" >> config-include/StandaloneCommon.ini - - if [ -n "${GRID_WELCOME}" ]; then - sed -i -e "s/OpenSimulator is running!/${GRID_WELCOME}/g" config-include/StandaloneCommon.ini - fi - - if [ -n "${GRID_NAME}" ]; then - sed -i -e "s/OpenSimulator Instance/${GRID_NAME}/g" config-include/StandaloneCommon.ini - fi -else - echo >&2 "INFO: Standalone or Grid configuration found. Skipping..." -fi - -if [ `find Regions -maxdepth 1 -name '*.ini' | wc -l` -eq 0 ]; then - echo >&2 "INFO: No region details found, pulling one together." - - echo "[${REGION_NAME:-Region}] - RegionUUID = $(uuidgen) - Location = ${REGION_LOCATION:-1000,1000} - InternalAddress = 0.0.0.0 - InternalPort = 9000 - AllowAlternatePorts = False - ExternalHostName = ${REGION_EXTERNAL_HOSTNAME:-localhost}" >> Regions/Regions.ini -else - echo >&2 "INFO: Looks like there's region definitions. Skipping..." -fi - -if [ ! -e config-include/storage/SQLiteStandalone.ini ]; then - cp defaults/SQLiteStandalone.ini config-include/storage/SQLiteStandalone.ini - mkdir -p sqlite-database -fi - -exec "$@" diff --git a/beta/source/Dockerfile b/build/latest/Dockerfile.source similarity index 89% rename from beta/source/Dockerfile rename to build/latest/Dockerfile.source index 8b40b26..59b6cad 100644 --- a/beta/source/Dockerfile +++ b/build/latest/Dockerfile.source @@ -2,9 +2,10 @@ ARG DOTNET_VERSION=8.0 FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} AS build +ARG OPENSIM_VERSION=0.9.3.0 # Cache Bust to avoid caching skipping the latest commit ADD https://api.github.com/repos/opensim/opensim/git/refs/heads/master version.json -RUN git clone --depth 1 --branch master https://github.com/opensim/opensim.git /app +RUN git clone --depth 1 --branch "${OPENSIM_VERSION}" https://github.com/opensim/opensim.git /app WORKDIR /app RUN rm -rf .git && \ ./runprebuild.sh && \ diff --git a/beta/source/docker-compose.yml b/docker-compose.yml similarity index 87% rename from beta/source/docker-compose.yml rename to docker-compose.yml index 14eef45..7ba4ff4 100644 --- a/beta/source/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.6' services: db: image: docker.io/library/mariadb:10.5 @@ -11,10 +10,14 @@ services: environment: MYSQL_DATABASE: metaverse MYSQL_ROOT_PASSWORD: password + metaverse: container_name: opensim build: - context: . + context: ./build/latest + dockerfile: Dockerfile.source + args: + - OPENSIM_VERSION=master depends_on: db: condition: service_healthy