Skip to content

v3.1のリリース#50

Merged
mzw merged 61 commits intomasterfrom
release-v3.1
Sep 2, 2022
Merged

v3.1のリリース#50
mzw merged 61 commits intomasterfrom
release-v3.1

Conversation

@savvan0h
Copy link
Copy Markdown
Collaborator

@savvan0h savvan0h commented Sep 2, 2022

詳細

Moodle

  • moodle-dockerのバージョンを2e82e11d98に固定(Moodle 3.4がサポートしないPostgreSQL 12の使用を回避)
  • Compose V2でコンテナ名が変更されないように互換性オプション( COMPOSE_COMPATIBILITY )を有効化

xAPIステートメント変換

  • logstore_standard_log.origin を条件にステートメント変換対象のログを選択する機能の追加

config/app.js

filter: {
  logstoreStandardLog: {
    origin: {
      exclude: ['origin1', 'origin2'] // 除外するオリジンを配列で指定
    }
  }
}
  • LRS.urlurl に変更し、Learning LockerのURLを設定
  • LRS.clients.defaultLRS.client に変更
  • LRS.clients.scoped を削除し、Learning LockerのAPIからLRSの接続情報を取得するように変更
  • ePPNを用いたステートメント振り分け有無を ePPNScoped で設定

config/app.js

url: 'http://learninglocker',
LRS: {
  client: {
    key: '',
    secret: ''
  },
  ePPNScoped: false,
}
  • object.definition のドキュメント不良を修正
  • HTML形式のカバレッジレポートが表示できない問題の修正

Caliperステートメント変換

  • logstore_standard_log.origin を条件にステートメント変換対象のログを選択する機能の追加

.env

EXCLUDED_ORIGINS= origin1,origin2,... # 除外するオリジンをカンマ区切りで指定

Learning Locker

  • pm2のバージョンを4に固定

OpenLRW

  • OpenJDKのベースイメージを openjdk:8-slim-buster に変更
  • ビルド時にaptパッケージを更新

Superset

  • データベースを superset-db コンテナ の superset に変更
  • superset load_examples の実行を削除

Superset-DB

  • PostgreSQLのリポジトリ設定ファイルを追加
  • 初期化処理時のPostgreSQLをポート番号 5433 で起動し、Supersetの不正な接続を抑止

JupyterHub

  • jupyterhub/notebooks をマウントし、ノートブックを永続化
  • jupyter ユーザのUID/GIDを環境変数で指定する機能の追加

docker-compose.yml

  jupyterhub:
    ...
    environment:
      - LOCAL_UID=<UID>
      - LOCAL_GID=<GID>

全般

  • データベースのボリュームをバインドマウントから名前付きボリュームに変更

テスト内容

  • Moodleのインストール
$ bin/moodle_install 
Cloning into 'moodle-docker'...
remote: Enumerating objects: 914, done.
remote: Counting objects: 100% (55/55), done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 914 (delta 20), reused 37 (delta 13), pack-reused 859
Receiving objects: 100% (914/914), 196.54 KiB | 15.12 MiB/s, done.
Resolving deltas: 100% (480/480), done.
Note: switching to '2e82e11d98'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 2e82e11 Merge pull request #216 from NickLambellGCH/master
Cloning into 'moodle'...
remote: Enumerating objects: 1313724, done.
remote: Counting objects: 100% (996/996), done.
remote: Compressing objects: 100% (500/500), done.
remote: Total 1313724 (delta 520), reused 700 (delta 463), pack-reused 1312728
Receiving objects: 100% (1313724/1313724), 438.65 MiB | 2.58 MiB/s, done.
Resolving deltas: 100% (983151/983151), done.
Updating files: 100% (18420/18420), done.
[+] Running 6/6
 ⠿ Network moodle-docker_default        Created                                                                                    0.0s
 ⠿ Container moodle-docker_mailhog_1    Started                                                                                    0.5s
 ⠿ Container moodle-docker_selenium_1   Started                                                                                    0.6s
 ⠿ Container moodle-docker_exttests_1   Started                                                                                    0.6s
 ⠿ Container moodle-docker_db_1         Started                                                                                    0.5s
 ⠿ Container moodle-docker_webserver_1  Started                                                                                    0.8s

image

image

  • Dockerイメージのビルド
$ docker-compose build --no-cache 

[+] Building 1283.5s (109/109) FINISHED                                                                       
 => [laaas-docker_xapi_stmt_gen internal] load build definition from Dockerfile                          0.0s
 => => transferring dockerfile: 32B                                                                      0.0s
 => [laaas-docker_learninglocker internal] load build definition from Dockerfile                         0.0s
 => => transferring dockerfile: 1.17kB                                                                   0.0s
 => [laaas-docker_superset-db internal] load build definition from Dockerfile                            0.0s
 => => transferring dockerfile: 32B                                                                      0.0s
 => [laaas-docker_caliper_stmt_gen internal] load build definition from Dockerfile                       0.0s
 => => transferring dockerfile: 32B                                                                      0.0s
 => [laaas-docker_jupyterhub internal] load build definition from Dockerfile                             0.0s
 => => transferring dockerfile: 492B                                                                     0.0s
 => [laaas-docker_openlrw internal] load build definition from Dockerfile                                0.0s
 => => transferring dockerfile: 32B                                                                      0.0s
 => [laaas-docker_superset internal] load build definition from Dockerfile                               0.0s
 => => transferring dockerfile: 32B                                                                      0.0s
 => [laaas-docker_xapi_stmt_gen internal] load .dockerignore                                             0.0s
 => => transferring context: 2B                                                                          0.0s
 => [laaas-docker_learninglocker internal] load .dockerignore                                            0.0s
 => => transferring context: 2B                                                                          0.0s
 => [laaas-docker_superset-db internal] load .dockerignore                                               0.0s
 => => transferring context: 2B                                                                          0.0s
 => [laaas-docker_caliper_stmt_gen internal] load .dockerignore                                          0.0s
 => => transferring context: 34B                                                                         0.0s
 => [laaas-docker_jupyterhub internal] load .dockerignore                                                0.0s
 => => transferring context: 2B                                                                          0.0s
 => [laaas-docker_openlrw internal] load .dockerignore                                                   0.0s
 => => transferring context: 2B                                                                          0.0s
 => [laaas-docker_superset internal] load .dockerignore                                                  0.0s 
 => => transferring context: 2B                                                                          0.0s 
 => [laaas-docker_xapi_stmt_gen internal] load metadata for docker.io/library/node:12.22.0               1.9s 
 => [laaas-docker_superset-db internal] load metadata for docker.io/library/centos:centos7               1.9s 
 => [laaas-docker_caliper_stmt_gen internal] load metadata for docker.io/library/php:7.3-alpine          2.1s 
 => [laaas-docker_caliper_stmt_gen internal] load metadata for docker.io/library/composer:1.9            2.1s 
 => [laaas-docker_jupyterhub internal] load metadata for docker.io/continuumio/anaconda3:2019.10         1.7s
 => [laaas-docker_openlrw internal] load metadata for docker.io/library/openjdk:8-slim-buster            3.0s
 => [laaas-docker_openlrw internal] load metadata for docker.io/alpine/git:latest                        2.8s
 => [laaas-docker_openlrw internal] load metadata for docker.io/library/maven:3-jdk-8                    2.7s
 => [laaas-docker_xapi_stmt_gen 1/6] FROM docker.io/library/node:12.22.0@sha256:1f7e77446431e580974828a  0.0s
 => [laaas-docker_xapi_stmt_gen internal] load build context                                             0.1s
 => => transferring context: 4.52kB                                                                      0.0s
 => CACHED [laaas-docker_xapi_stmt_gen 2/6] WORKDIR /usr/local/src                                       0.0s
 => [laaas-docker_xapi_stmt_gen 3/6] RUN mkdir xapi_stmt_gen                                             2.8s
 => CACHED [laaas-docker_jupyterhub 1/6] FROM docker.io/continuumio/anaconda3:2019.10@sha256:9068d48770  0.0s
 => [laaas-docker_jupyterhub internal] load build context                                                0.1s
 => => transferring context: 321B                                                                        0.0s
 => [laaas-docker_jupyterhub 2/6] RUN conda install -y -c conda-forge jupyterhub=0.9.6                 262.0s
 => [laaas-docker_superset internal] load build context                                                  0.2s
 => => transferring context: 170B                                                                        0.0s
 => CACHED [laaas-docker_learninglocker 1/9] FROM docker.io/library/centos:centos7@sha256:c73f515d06b0f  0.0s
 => [laaas-docker_superset-db internal] load build context                                               0.3s
 => => transferring context: 162B                                                                        0.0s
 => [laaas-docker_superset 2/9] RUN yum update -y &&     yum install -y https://repo.ius.io/ius-relea  373.6s
 => [laaas-docker_learninglocker internal] load build context                                            0.3s
 => => transferring context: 78B                                                                         0.0s
 => [laaas-docker_learninglocker  2/13] RUN yum update -y &&     yum -y install curl git python make   431.4s
 => [laaas-docker_superset-db  2/11] RUN yum update -y &&     yum install -y       gcc       gcc-c++   321.0s
 => [laaas-docker_caliper_stmt_gen builder 1/6] FROM docker.io/library/composer:1.9@sha256:3788b2e8abba  0.0s
 => [laaas-docker_caliper_stmt_gen runtime 1/4] FROM docker.io/library/php:7.3-alpine@sha256:fd3ba9775d  0.0s
 => [laaas-docker_caliper_stmt_gen internal] load build context                                          0.2s
 => => transferring context: 5.54kB                                                                      0.1s
 => CACHED [laaas-docker_caliper_stmt_gen builder 2/6] WORKDIR /stage                                    0.0s
 => CACHED [laaas-docker_caliper_stmt_gen runtime 2/4] WORKDIR /app                                      0.0s
 => [laaas-docker_caliper_stmt_gen runtime 3/4] RUN apk update &&    apk --no-cache add sqlite postgr  492.9s
 => [laaas-docker_caliper_stmt_gen builder 3/6] COPY . .                                                 0.8s
 => [laaas-docker_openlrw src  1/11] FROM docker.io/alpine/git@sha256:21461e49220465a1506e10e66468a74e  59.0s
 => => resolve docker.io/alpine/git@sha256:21461e49220465a1506e10e66468a74ebe6dac6d5979fbec0486c147834f  0.1s
 => => sha256:21461e49220465a1506e10e66468a74ebe6dac6d5979fbec0486c147834f289d 2.03kB / 2.03kB           0.0s
 => => sha256:c146fa0eb46124730c078cbf34194675e54998d2293a969e2e0f689bd72751ab 946B / 946B               0.0s
 => => sha256:df6434eeda49cf9829dd6f812e2fe7295c3e900325c3d75e6671da18a5b8b7a8 1.85kB / 1.85kB           0.0s
 => => sha256:213ec9aee27d8be045c6a92b7eac22c9a64b44558193775a1a7f626352392b49 2.81MB / 2.81MB          46.1s
 => => sha256:e40794ee42013856ad485b7f6685605e5469171c09c8ea3e9d46fcd4cb670187 18.40MB / 18.40MB        49.0s
 => => extracting sha256:213ec9aee27d8be045c6a92b7eac22c9a64b44558193775a1a7f626352392b49                3.1s
 => => sha256:0d29e9bc61a21fefc2d4795f4a0ec79bb97d5f6ea041429b8d3ca3d00751d848 99B / 99B                46.6s
 => => extracting sha256:e40794ee42013856ad485b7f6685605e5469171c09c8ea3e9d46fcd4cb670187                7.4s
 => => extracting sha256:0d29e9bc61a21fefc2d4795f4a0ec79bb97d5f6ea041429b8d3ca3d00751d848                0.0s
 => [laaas-docker_openlrw internal] load build context                                                   0.1s
 => => transferring context: 37B                                                                         0.0s
 => [laaas-docker_openlrw runtime 1/8] FROM docker.io/library/openjdk:8-slim-buster@sha256:221a061dbd1  81.1s
 => => resolve docker.io/library/openjdk:8-slim-buster@sha256:221a061dbd1a81efe42e6ce9bc099f7ce318b1f7f  0.1s
 => => sha256:221a061dbd1a81efe42e6ce9bc099f7ce318b1f7f3ba186e387264f14e61dec2 549B / 549B               0.0s
 => => sha256:2cf4b8762f609de44375c31f6b512f9bfe78a83b6070de9ddf27c3ac3e68481e 1.16kB / 1.16kB           0.0s
 => => sha256:977be15c64f8c4830234490ca9f355e955da462247ee7e4e702314197332f821 7.52kB / 7.52kB           0.0s
 => => sha256:751ef25978b2971e15496369695ba51ed5b1b9aaca7e37b18a173d754d1ca820 27.14MB / 27.14MB         6.7s
 => => sha256:140e22108c7d39a72fc1f5f3ba4ffdd55836614e9c53175f5d43ada8b6bbaacc 3.27MB / 3.27MB           1.4s
 => => sha256:64ab07c5523eec5b4894fe8c386d09509a48d5df9197cd11d82c8d688831b64a 211B / 211B               1.2s
 => => sha256:b6fa9ada0dd900153fabf311a465c7dca7a27a82dc658aae3ca642ae0ebaf42d 106.20MB / 106.20MB      44.0s
 => => extracting sha256:751ef25978b2971e15496369695ba51ed5b1b9aaca7e37b18a173d754d1ca820               13.1s
 => => extracting sha256:140e22108c7d39a72fc1f5f3ba4ffdd55836614e9c53175f5d43ada8b6bbaacc                2.6s
 => => extracting sha256:64ab07c5523eec5b4894fe8c386d09509a48d5df9197cd11d82c8d688831b64a                0.0s
 => => extracting sha256:b6fa9ada0dd900153fabf311a465c7dca7a27a82dc658aae3ca642ae0ebaf42d               34.6s
 => [laaas-docker_openlrw builder 1/7] FROM docker.io/library/maven:3-jdk-8@sha256:ff18d86faefa15d1445  96.9s
 => => resolve docker.io/library/maven:3-jdk-8@sha256:ff18d86faefa15d1445d0fa4874408cc96dec068eb3487a0f  0.1s
 => => sha256:29cc4c106af036b3727fad911174511d5af3103710419e1fd3d0718aa217f7ae 2.42kB / 2.42kB           0.0s
 => => sha256:ff18d86faefa15d1445d0fa4874408cc96dec068eb3487a0fc6d07f359a24607 549B / 549B               0.0s
 => => sha256:4edc8c438f43cf132f12c2e984668e727ef3907bdf4c1866285bcacfe466ce55 8.60kB / 8.60kB           0.0s
 => => sha256:001c52e26ad57e3b25b439ee0052f6692e5c0f2d5d982a00a8819ace5e521452 55.00MB / 55.00MB        17.7s
 => => sha256:d9d4b9b6e964657da49910b495173d6c4f0d9bc47b3b44273cf82fd32723d165 5.16MB / 5.16MB           9.2s
 => => sha256:2068746827ec1b043b571e4788693eab7e9b2a95301176512791f8c317a2816a 10.88MB / 10.88MB        14.2s
 => => sha256:9daef329d35093868ef75ac8b7c6eb407fa53abbcb3a264c218c2ec7bca716e6 54.58MB / 54.58MB        38.0s
 => => sha256:d85151f15b6683b98f21c3827ac545188b1849efb14a1049710ebc4692de3dd5 5.42MB / 5.42MB          19.5s
 => => extracting sha256:001c52e26ad57e3b25b439ee0052f6692e5c0f2d5d982a00a8819ace5e521452               21.9s
 => => sha256:52a8c426d30b691c4f7e8c4b438901ddeb82ff80d4540d5bbd49986376d85cc9 210B / 210B              20.3s
 => => sha256:8754a66e005039a091c5ad0319f055be393c7123717b1f6fee8647c338ff3ceb 105.92MB / 105.92MB      56.9s
 => => sha256:39bc17d35d34ad756fdb0e4d938d529d901eed8ab34d0ec458db1197cd4c479d 8.74MB / 8.74MB          42.9s
 => => extracting sha256:d9d4b9b6e964657da49910b495173d6c4f0d9bc47b3b44273cf82fd32723d165                1.7s
 => => sha256:3262383b247749a26f3f83373afc4a3c6984b3de294a5c47d0798acec20f6bc6 855B / 855B              43.4s
 => => sha256:25bbf367674f80baebc54faa6734c6a0a759f9f470b739bae286075987524f25 362B / 362B              43.8s
 => => extracting sha256:2068746827ec1b043b571e4788693eab7e9b2a95301176512791f8c317a2816a                5.6s
 => => extracting sha256:9daef329d35093868ef75ac8b7c6eb407fa53abbcb3a264c218c2ec7bca716e6               28.9s
 => => extracting sha256:d85151f15b6683b98f21c3827ac545188b1849efb14a1049710ebc4692de3dd5                1.7s
 => => extracting sha256:52a8c426d30b691c4f7e8c4b438901ddeb82ff80d4540d5bbd49986376d85cc9                0.0s
 => => extracting sha256:8754a66e005039a091c5ad0319f055be393c7123717b1f6fee8647c338ff3ceb               11.8s
 => => extracting sha256:39bc17d35d34ad756fdb0e4d938d529d901eed8ab34d0ec458db1197cd4c479d                0.6s
 => => extracting sha256:3262383b247749a26f3f83373afc4a3c6984b3de294a5c47d0798acec20f6bc6                0.0s
 => => extracting sha256:25bbf367674f80baebc54faa6734c6a0a759f9f470b739bae286075987524f25                0.0s
 => [laaas-docker_caliper_stmt_gen builder 4/6] RUN composer install --no-dev &&     composer build     98.9s
 => [laaas-docker_xapi_stmt_gen 4/6] WORKDIR /usr/local/src/xapi_stmt_gen                                0.3s
 => [laaas-docker_xapi_stmt_gen 5/6] COPY xapi_stmt_gen .                                                1.3s
 => [laaas-docker_xapi_stmt_gen 6/6] RUN npm i                                                         118.5s
 => [laaas-docker_openlrw src  2/11] WORKDIR /app                                                        1.8s
 => [laaas-docker_openlrw src  3/11] RUN git clone -b develop https://github.com/udzuki/OpenLRW.git      6.6s
 => [laaas-docker_openlrw src  4/11] WORKDIR OpenLRW                                                     0.3s
 => [laaas-docker_openlrw src  5/11] RUN git checkout 07d409d8b0803e0a29ab26014fb1676a4f446461           3.2s
 => [laaas-docker_openlrw src  6/11] WORKDIR /app                                                        0.2s
 => [laaas-docker_openlrw src  7/11] RUN git clone -b develop https://github.com/udzuki/lai-event.git    4.9s
 => [laaas-docker_openlrw src  8/11] WORKDIR lai-event                                                   0.3s
 => [laaas-docker_openlrw src  9/11] RUN git checkout 8b421d446a74cc186086d4a71a68481f65ae2452           3.2s
 => [laaas-docker_openlrw src 10/11] WORKDIR /app/OpenLRW                                                0.3s
 => [laaas-docker_openlrw src 11/11] RUN cp -r ../lai-event/src/main/java/org/apereo/openlrw/ src/main/  1.8s
 => [laaas-docker_openlrw runtime 2/8] RUN apt-get update && apt-get -y upgrade                         52.6s
 => [laaas-docker_openlrw builder 2/7] RUN mkdir -p /build                                               0.7s
 => [laaas-docker_openlrw builder 3/7] WORKDIR /build                                                    0.1s
 => [laaas-docker_openlrw builder 4/7] COPY --from=src /app/OpenLRW/pom.xml /build                       0.1s
 => [laaas-docker_openlrw builder 5/7] RUN mvn -B dependency:resolve dependency:resolve-plugins        670.9s
 => [laaas-docker_caliper_stmt_gen builder 5/6] WORKDIR tenantcreator                                    0.1s
 => [laaas-docker_caliper_stmt_gen builder 6/6] RUN composer install --no-dev                           14.3s
 => [laaas-docker_learninglocker] exporting to image                                                   119.0s
 => => exporting layers                                                                                 66.1s
 => => writing image sha256:f6a6b5375ddd7809cfc3b0292979cc09d971a109905dc4e07a601eeff5d7473e             0.0s
 => => naming to docker.io/library/laaas-docker_xapi_stmt_gen                                            0.0s
 => => writing image sha256:2e5d19ff41f9e06fec743740fd355f1f98e6fbda0c15c6492fe9b90f5f8086b7             0.0s
 => => naming to docker.io/library/laaas-docker_superset-db                                              0.0s
 => => writing image sha256:1fbdfa02df31cf875b90377d8530b7ab086e8e2d053b5dfa3b891b80a11bc7fe             0.0s
 => => naming to docker.io/library/laaas-docker_caliper_stmt_gen                                         0.0s
 => => writing image sha256:f6b3126f163a8ff099966aea0167fbd00f8e19d1c5a59b91dddc4d1a6fcef7b8             0.0s
 => => naming to docker.io/library/laaas-docker_superset                                                 0.0s
 => => writing image sha256:6209421530647bfc709e81920d431e635d96d381bf16afc9152f19a84bb32042             0.0s
 => => naming to docker.io/library/laaas-docker_openlrw                                                  0.0s
 => => writing image sha256:df3ae5798b9f3b8fd188c00c6a8be83d64746a50ce8558d712fb65855fa823d1             0.0s
 => => naming to docker.io/library/laaas-docker_jupyterhub                                               0.0s
 => => writing image sha256:e31b9b86f6c102a39940ee4f735b66bde9525625081782d3cea9f59a5f5f7728             0.0s
 => => naming to docker.io/library/laaas-docker_learninglocker                                           0.0s
 => [laaas-docker_openlrw runtime 3/8] RUN mkdir /app                                                    1.0s
 => [laaas-docker_openlrw runtime 4/8] RUN mkdir /app/config                                             1.0s
 => [laaas-docker_openlrw runtime 5/8] RUN mkdir /app/log                                                1.1s
 => [laaas-docker_openlrw runtime 6/8] WORKDIR /app                                                      0.1s
 => [laaas-docker_jupyterhub 3/6] RUN conda install -y -c r r-irkernel=0.8.15  # Install R             890.1s
 => [laaas-docker_superset-db  3/11] RUN curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.  23.8s
 => [laaas-docker_superset-db  4/11] COPY pgdg-96.repo /etc/yum.repos.d/                                 0.1s
 => [laaas-docker_superset-db  5/11] RUN yum install -y       postgresql96-contrib       postgresql96-  25.9s
 => [laaas-docker_superset-db  6/11] WORKDIR /usr/local/src                                              0.1s
 => [laaas-docker_superset-db  7/11] RUN git clone https://github.com/Kozea/Multicorn.git --depth 1 -b  12.5s
 => [laaas-docker_superset 3/9] COPY requirements.txt .                                                  0.1s
 => [laaas-docker_superset 4/9] RUN . venv/bin/activate &&     pip install --upgrade setuptools==57.5  276.4s
 => [laaas-docker_superset-db  8/11] WORKDIR /usr/local/src                                              0.1s
 => [laaas-docker_superset-db  9/11] RUN git clone https://github.com/udzuki/yam_fdw.git &&     cd yam  21.7s
 => [laaas-docker_superset-db 10/11] COPY --chown=postgres:postgres   entrypoint.sh pg_hba.conf postgre  0.2s
 => [laaas-docker_superset-db 11/11] RUN chmod 755 /init/entrypoint.sh /init/setup.sh                    0.8s
 => [laaas-docker_learninglocker  3/13] RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/  97.5s
 => [laaas-docker_caliper_stmt_gen runtime 4/4] COPY --from=builder /stage /app                          2.1s
 => [laaas-docker_learninglocker  4/13] WORKDIR /usr/local/src                                           0.1s
 => [laaas-docker_learninglocker  5/13] RUN git clone https://github.com/LearningLocker/learninglocker.  3.1s
 => [laaas-docker_learninglocker  6/13] WORKDIR /usr/local/src/learninglocker                            0.1s
 => [laaas-docker_learninglocker  7/13] COPY .env.learninglocker .env                                    0.1s
 => [laaas-docker_learninglocker  8/13] RUN source ~/.bashrc &&     yarn install &&     yarn build-al  571.8s
 => [laaas-docker_superset 5/9] COPY superset_config.py /root/.superset/                                 0.1s
 => [laaas-docker_superset 6/9] COPY wait-for-it.sh /wait-for-it.sh                                      0.1s
 => [laaas-docker_superset 7/9] COPY entrypoint.sh /entrypoint.sh                                        0.1s
 => [laaas-docker_superset 8/9] COPY init.sh /init.sh                                                    0.1s
 => [laaas-docker_superset 9/9] RUN chmod +x /wait-for-it.sh /entrypoint.sh /init.sh                     0.7s
 => [laaas-docker_openlrw builder 6/7] COPY --from=src /app/OpenLRW/src /build/src                       0.3s
 => [laaas-docker_openlrw builder 7/7] RUN mvn package                                                 125.1s
 => [laaas-docker_openlrw runtime 7/8] COPY --from=builder /build/target/*.jar app.jar                   0.2s
 => [laaas-docker_openlrw runtime 8/8] COPY docker-start.sh /app/docker-start.sh                         0.0s
 => [laaas-docker_learninglocker  9/13] WORKDIR /usr/local/src                                           0.1s
 => [laaas-docker_learninglocker 10/13] RUN git clone https://github.com/LearningLocker/xapi-service.gi  3.8s
 => [laaas-docker_learninglocker 11/13] WORKDIR /usr/local/src/xapi-service                              0.1s
 => [laaas-docker_learninglocker 12/13] COPY .env.xapi-service .env                                      0.0s
 => [laaas-docker_learninglocker 13/13] RUN source ~/.bashrc &&     yarn install --ignore-engines &&   106.0s
 => [laaas-docker_jupyterhub 4/6] RUN conda install -y psycopg2=2.8.4                                   56.8s
 => [laaas-docker_jupyterhub 5/6] COPY entrypoint.sh /usr/local/bin/entrypoint.sh                        0.1s
 => [laaas-docker_jupyterhub 6/6] RUN chmod +x /usr/local/bin/entrypoint.sh                              0.5s
  • Dockerコンテナの起動
$ docker-compose up -d

[+] Running 12/12
 ⠿ Container caliper_log_db         Started                                                             17.0s
 ⠿ Container learninglocker_redis   Started                                                             15.7s
 ⠿ Container superset-db            Started                                                             17.1s
 ⠿ Container openlrw_mongo          Running                                                              0.0s
 ⠿ Container openlrw_web            Started                                                             17.5s
 ⠿ Container learninglocker_mongo   Started                                                             15.7s
 ⠿ Container jupyterhub             Started                                                             17.3s
 ⠿ Container learning_analytics_db  Started                                                             16.5s
 ⠿ Container xapi_stmt_gen          Started                                                             17.3s
 ⠿ Container superset               Started                                                             18.6s
 ⠿ Container learninglocker         Started                                                             18.5s
 ⠿ Container caliper_stmt_gen       Started                                                              6.1slo
  • Moodleの学習ログをxAPIステートメントに変換できること
$ docker exec -it xapi_stmt_gen npm start

> xapi_stmt_gen@0.1.0 start /usr/local/src/xapi_stmt_gen
> node server.js

[2022-08-30 16:57:42.130] [INFO] - Starting xAPI statement generator.
[2022-08-30 16:57:43.498] [INFO] - [SEQ:1][SCOPE:default] Sending 4 statements...
[2022-08-30 16:57:43.710] [INFO] - [SEQ:1][SCOPE:default] 4 statements added.
[2022-08-30 16:57:43.878] [INFO] - [SEQ:1058][SCOPE:default] Sending 3 statements...
[2022-08-30 16:57:43.908] [INFO] - [SEQ:1058][SCOPE:default] 3 statements added.
[2022-08-30 16:57:43.930] [INFO] - Finished logstore_standard_logs translation.
[2022-08-30 16:57:43.938] [INFO] - Finished scorm_scoes_track translation.

image

  • Moodleの学習ログをCaliperステートメントに変換できること
$ docker-compose run --rm caliper_stmt_gen

[+] Running 3/0
 ⠿ Container caliper_log_db  Running                                                               0.0s
 ⠿ Container openlrw_mongo   Running                                                               0.0s
 ⠿ Container openlrw_web     Running                                                               0.0s

translating logstore_standard_log...
1061/1061 [============================] 100%

completed
It seems there is no scorm scoes track event in DB.
> db.mongoEvent.find().pretty()
{
        "_id" : ObjectId("630dc4109ae8dc71beea268e"),
        "userId" : "2",
        "organizationId" : "eb314ecf-3b82-49b3-afe7-fde586351804",
        "tenantId" : "62cc9b73f14a704339126bcb",
        "event" : {
                "_id" : "urn:uuid:bbf9ab9f-07b7-4491-be58-e1ff2594d158",
                "context" : "http://purl.imsglobal.org/ctx/caliper/v1p2",
                "type" : "SessionEvent",
                "agent" : {
                        "_id" : "http://localhost:8000/user/profile.php?id=2",
                        "type" : "Person",
                        "name" : "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
                        "description" : ""
                },
                "action" : "LoggedIn",
                "object" : {
                        "_id" : "http://localhost:8000",
                        "type" : "SoftwareApplication"
                },
                "edApp" : {
                        "_id" : "http://localhost:8000",
                        "type" : "SoftwareApplication",
                        "name" : "moodle"
                },
                "eventTime" : ISODate("2022-08-30T07:48:13Z"),
                "timeZoneOffset" : NumberLong(0)
        },
        "_class" : "org.apereo.openlrw.events.service.repository.MongoEvent"
}
...
  • xAPIステートメント変換スクリプトのテスト
$ npm test

> xapi_stmt_gen@0.1.0 test
> istanbul cover --include-all-sources jasmine

Randomized with seed 59399
Started
........................................................................................................
................................................


152 specs, 0 failures
Finished in 79.621 seconds
Randomized with seed 59399 (jasmine --random=true --seed=59399)

=============================== Coverage summary ===============================
Statements   : 97.88% ( 7566/7730 )
Branches     : 69.12% ( 188/272 )
Functions    : 92.81% ( 645/695 )
Lines        : 97.89% ( 7566/7729 )
================================================================================
  • Caliperステートメント変換スクリプトのテスト
$ sh tests/test.sh 
...
> vendor/bin/phpunit -c ./tests/ --colors=always
PHPUnit 8.3.4 by Sebastian Bergmann and contributors.

Eppn (Tests\Feature\Eppn)
 ✔ Get from eppn table with string
 ✔ Get from eppn table with boolean
 ✔ Update eppn table
 ✔ Not update eppn table
 ✔ Get without eppn table with string
 ✔ Get without eppn table with boolean

Excluded Origins (Tests\Feature\ExcludedOrigins)
 ✔ Excluded origins with params
 ✔ Excluded origins without params

Get Lrs (Tests\Feature\GetLrs)
 ✔ Get eppn scope

Logging (Tests\Feature\Logging)
 ✔ Execution log
 ✔ Failed log
 ✔ Scorm scoes track execution log
 ✔ Scorm scoes track failed log
 ✔ Multiple execution log
 ✔ Multiple scorm scoes track execution log

Macro Extend (Tests\Feature\MacroExtend)
 ✔ Collection should have translate macro
 ✔ Str should have geteventtype macro

Assessable Submitted (Tests\Unit\AssessableSubmitted)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Attempt Started (Tests\Unit\AttemptStarted)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Generated values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Attempt Submitted (Tests\Unit\AttemptSubmitted)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Generated values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Broken Data (Tests\Unit\BrokenData)
 ✔ Should catch if data not found
 ✔ Validator should return true when broken and false if not
 ✔ Should contain meta data

Cmi Core Total Time (Tests\Unit\CmiCoreTotalTime)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Generated values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Course Module Viewed (Tests\Unit\CourseModuleViewed)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Course Viewed (Tests\Unit\CourseViewed)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Dashboard Viewed (Tests\Unit\DashboardViewed)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Discussion Viewed (Tests\Unit\DiscussionViewed)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Scoreraw Submitted (Tests\Unit\ScorerawSubmitted)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Generated values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Submission Graded (Tests\Unit\SubmissionGraded)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Generated values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Subscription Created (Tests\Unit\SubscriptionCreated)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Subscription Deleted (Tests\Unit\SubscriptionDeleted)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

User Loggedin (Tests\Unit\UserLoggedin)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

User Loggedout (Tests\Unit\UserLoggedout)
 ✔ Should be supported
 ✔ Translator should implement abstract methods
 ✔ Should set event time at translator
 ✔ Can get compiler
 ✔ Should set event time at compiler
 ✔ Action values
 ✔ Actor values
 ✔ Object values
 ✔ Event time values
 ✔ Edapp values
 ✔ Get original username
 ✔ Should be registable

Time: 54.46 seconds, Memory: 54.00 MB

OK (193 tests, 353 assertions)
  • SupersetでxAPIステートメントを可視化できること

image

  • SupersetでCaliperステートメントを可視化できること

image

  • JupyterHubでxAPIステートメントを分析できること

image

  • JupyterHubでCaliperステートメントを分析できること

image

  • 動画ログのxAPIステートメント変換
$ npm test

> xapi_stmt_gen@1.0.0 test
> istanbul cover --include-all-sources jasmine

Randomized with seed 77949
Started
.................


17 specs, 0 failures
Finished in 1.057 seconds
Randomized with seed 77949 (jasmine --random=true --seed=77949)

=============================== Coverage summary ===============================
Statements   : 95.98% ( 717/747 )
Branches     : 41.67% ( 5/12 )
Functions    : 91.53% ( 54/59 )
Lines        : 95.98% ( 717/747 )
================================================================================
  • 動画ログのCaliperステートメント変換
$ composer test
> vendor/bin/phpunit -c ./tests/ --colors=always
PHPUnit 8.5.19 by Sebastian Bergmann and contributors.

Supported Event (Tests\Translator\SupportedEvent)
 ✔ Exists method
 ✔ Is supported
 ✔ Is not supported
 ✔ Can get recipe class
 ✔ Can not get recipe class

Video Logs Event (Tests\Translator\VideoLogsEvent)
 ✔ Should be defined
 ✔ Should not be defined

Video Operation (Tests\Translator\VideoOperation)
 ✔ Exists method
 ✔ Translation

Sender (Tests\Sender\Sender)
 ✔ Should be registable
 ✔ Could not register

Video Changed Speed (Tests\Recipe\VideoChangedSpeed)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Disabled Closed Captioning (Tests\Recipe\VideoDisabledClosedCaptioning)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Enabled Closed Captioning (Tests\Recipe\VideoEnabledClosedCaptioning)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Ended (Tests\Recipe\VideoEnded)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Forwarded To (Tests\Recipe\VideoForwardedTo)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Jumped To (Tests\Recipe\VideoJumpedTo)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Paused (Tests\Recipe\VideoPaused)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Resumed (Tests\Recipe\VideoResumed)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Started (Tests\Recipe\VideoStarted)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Target values
 ✔ Edapp values
 ✔ Should be registable

Video Viewed (Tests\Recipe\VideoViewed)
 ✔ Can get compiler
 ✔ Actor values
 ✔ Event time values
 ✔ Action values
 ✔ Object values
 ✔ Edapp values
 ✔ Should be registable

Generate (Tests\Generator\Generate)
 ✔ Generate
 ✔ Generate with invalid event
 ✔ Can not translate
 ✔ Can not send

Time: 1.03 seconds, Memory: 8.00 MB

OK (94 tests, 222 assertions)

チェックリスト

  • ソースコード中に固有の設定値などが含まれていないこと
  • ソフトウェアの動作テストが良好であること
  • 目的にあった適切なソフトウェアライセンスが選択されていること
  • ソースコードの一部に異なる著作権者がいる場合は調整済であること

savvan0h and others added 30 commits January 20, 2022 13:41
feat: xAPIステートメント変換でLRS.urlの設定手順を排除
feat: 機関ごとのLRSをLearning LockerのREST APIから取得
fix: Superset DBでPostgreSQL 9.6のインストールに失敗
…sqlite

feat: Supersetのデータベースとしてsuperset-dbコンテナを使用
fix: object.definitionのxAPIステートメント仕様不正
feat: ノートブックの永続化
fix: xAPIステートメント変換のテストでHTML形式のカバレッジレポートが表示されない
feat: xAPIステートメント変換でlogstore_standard_log.originを条件にステートメント変換対象のログを選択
savvan0h added 25 commits June 6, 2022 17:14
feat: Caliperステートメント変換でlogstore_standard_log.originを条件にステートメント変換対象のログを選択
chore: [CVE-2022-2068] OpenLRWのOpenSSLをアップデート
moodle-dockerのPostgreSQL更新に伴うMoodleのエラー(ERROR: column d.adsrc does not exist)
fix: Moodleの起動時にComposeの互換性オプション(COMPOSE_COMPATIBILITY)を有効化
fix: Learning Lockerの起動に失敗(Unexpected token import)
feat: データベースのボリュームをバインドマウントから名前付きボリュームに変更
fix: JupyterHubの起動失敗(PermissionError: [Errno 13] Permission denied: '/home/jupyter/.local')
@savvan0h savvan0h requested a review from mzw September 2, 2022 07:58
Copy link
Copy Markdown
Collaborator

@mzw mzw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mzw mzw merged commit 62e1b06 into master Sep 2, 2022
@savvan0h savvan0h deleted the release-v3.1 branch September 2, 2022 09:07
savvan0h added a commit that referenced this pull request Mar 10, 2023
feat: Supersetのアップグレード
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants