diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index d6a3c49b..e924cc11 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -6,131 +6,237 @@ on: release: types: [created] pull_request: - types: [ labeled, synchronize ] - - -# Enables BuildKit -env: - DOCKER_BUILDKIT: 1 + types: [labeled, synchronize] jobs: - build-front: if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: - - name: Checkout uses: actions/checkout@v2 - - # Create a slugified value of the branch - - uses: rlespinasse/github-slug-action@3.1.0 - - - name: "Build and push front image" - uses: docker/build-push-action@v1 + - name: Setup NodeJS + uses: actions/setup-node@v2 + with: + node-version: '14' + + # messages + - name: Install messages dependencies + run: yarn install + working-directory: messages + + - name: Build proto messages + run: yarn run ts-proto && yarn run copy-to-front-ts-proto && yarn run json-copy-to-front + working-directory: messages + + # docker + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 with: - dockerfile: front/Dockerfile - path: ./ username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - repository: thecodingmachine/workadventure-front - tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - add_git_labels: true + + - uses: rlespinasse/github-slug-action@3.1.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: thecodingmachine/workadventure-front + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: front/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: thecodingmachine/workadventure-front:${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + labels: ${{ steps.meta.outputs.labels }} build-back: if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: - - name: Checkout uses: actions/checkout@v2 - # Create a slugified value of the branch - - uses: rlespinasse/github-slug-action@3.1.0 - - - name: "Build and push back image" - uses: docker/build-push-action@v1 + - name: Setup NodeJS + uses: actions/setup-node@v2 + with: + node-version: '14' + + # messages + - name: Install messages dependencies + run: yarn install + working-directory: messages + + - name: Build proto messages + run: yarn run proto && yarn run copy-to-back + working-directory: messages + + # docker + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 with: - dockerfile: back/Dockerfile - path: ./ username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - repository: thecodingmachine/workadventure-back - tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - add_git_labels: true + + - uses: rlespinasse/github-slug-action@3.1.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: thecodingmachine/workadventure-back + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: back/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: thecodingmachine/workadventure-back:${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + labels: ${{ steps.meta.outputs.labels }} build-pusher: if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: - - name: Checkout uses: actions/checkout@v2 - # Create a slugified value of the branch - - uses: rlespinasse/github-slug-action@3.1.0 - - - name: "Build and push back image" - uses: docker/build-push-action@v1 + - name: Setup NodeJS + uses: actions/setup-node@v2 + with: + node-version: '14' + + # messages + - name: Install messages dependencies + run: yarn install + working-directory: messages + + - name: Build proto messages + run: yarn run proto && yarn run copy-to-pusher && yarn run json-copy-to-pusher + working-directory: messages + + # docker + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 with: - dockerfile: pusher/Dockerfile - path: ./ username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - repository: thecodingmachine/workadventure-pusher - tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - add_git_labels: true + + - uses: rlespinasse/github-slug-action@3.1.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: thecodingmachine/workadventure-pusher + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: pusher/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: thecodingmachine/workadventure-pusher:${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + labels: ${{ steps.meta.outputs.labels }} build-uploader: if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 - - name: Checkout - uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 - # Create a slugified value of the branch - - uses: rlespinasse/github-slug-action@3.1.0 - - - name: "Build and push back image" - uses: docker/build-push-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 with: - dockerfile: uploader/Dockerfile - path: ./ username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - repository: thecodingmachine/workadventure-uploader - tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - add_git_labels: true + + - uses: rlespinasse/github-slug-action@3.1.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: thecodingmachine/workadventure-uploader + + - name: Build and push + uses: docker/build-push-action@v2 + with: + file: uploader/Dockerfile + push: true + tags: thecodingmachine/workadventure-uploader:${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + labels: ${{ steps.meta.outputs.labels }} build-maps: if: ${{ github.event_name == 'push' || github.event_name == 'release' || github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'deploy') }} runs-on: ubuntu-latest steps: - - name: Checkout uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 - # Create a slugified value of the branch - - uses: rlespinasse/github-slug-action@3.1.0 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 - - name: "Build and push front image" - uses: docker/build-push-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 with: - dockerfile: maps/Dockerfile - path: maps/ username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - repository: thecodingmachine/workadventure-maps - tags: ${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} - add_git_labels: true + + - uses: rlespinasse/github-slug-action@3.1.0 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: thecodingmachine/workadventure-maps + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: maps/ + file: maps/Dockerfile + push: true + tags: thecodingmachine/workadventure-maps:${{ github.event_name == 'pull_request' && env.GITHUB_HEAD_REF_SLUG || env.GITHUB_REF_SLUG }} + labels: ${{ steps.meta.outputs.labels }} deeploy: needs: diff --git a/.github/workflows/end_to_end_tests.yml b/.github/workflows/end_to_end_tests.yml index 560e1dc3..e369fe2f 100644 --- a/.github/workflows/end_to_end_tests.yml +++ b/.github/workflows/end_to_end_tests.yml @@ -23,6 +23,12 @@ jobs: run: npx playwright install --with-deps - name: 'Setup .env file' run: cp .env.template .env + - name: Install messages dependencies + run: yarn install + working-directory: messages + - name: Build proto messages + run: yarn run proto-all + working-directory: messages - name: Build WorkAdventure run: docker-compose -f docker-compose.yaml -f docker-compose.e2e.yml build --parallel - name: Start WorkAdventure diff --git a/front/src/Components/Lazy.svelte b/front/src/Components/Lazy.svelte new file mode 100644 index 00000000..9817ba5c --- /dev/null +++ b/front/src/Components/Lazy.svelte @@ -0,0 +1,21 @@ + + + +{#if when} + {#await loading then { default: Component }} + + {/await} +{/if} diff --git a/front/src/Components/MainLayout.svelte b/front/src/Components/MainLayout.svelte index 3e6c406b..f1200640 100644 --- a/front/src/Components/MainLayout.svelte +++ b/front/src/Components/MainLayout.svelte @@ -12,7 +12,6 @@ import AudioManager from "./AudioManager/AudioManager.svelte"; import CameraControls from "./CameraControls.svelte"; import EmbedScreensContainer from "./EmbedScreens/EmbedScreensContainer.svelte"; - import EmoteMenu from "./EmoteMenu/EmoteMenu.svelte"; import HelpCameraSettingsPopup from "./HelpCameraSettings/HelpCameraSettingsPopup.svelte"; import LayoutActionManager from "./LayoutActionManager/LayoutActionManager.svelte"; import Menu from "./Menu/Menu.svelte"; @@ -38,6 +37,7 @@ import { LayoutMode } from "../WebRtc/LayoutManager"; import { actionsMenuStore } from "../Stores/ActionsMenuStore"; import ActionsMenu from "./ActionsMenu/ActionsMenu.svelte"; + import Lazy from "./Lazy.svelte"; let mainLayout: HTMLDivElement; @@ -116,9 +116,7 @@ {/if} - {#if $emoteMenuStore} - - {/if} + import("./EmoteMenu/EmoteMenu.svelte")} /> {#if hasEmbedScreen} diff --git a/tests/README.md b/tests/README.md index 927d9bc9..f293b975 100644 --- a/tests/README.md +++ b/tests/README.md @@ -27,6 +27,13 @@ npm run test ## Run on production like environment +Build message types: + +```bash +cd messages/ +yarn run proto-all +``` + Start WorkAdventure with: ```bash