diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4321a4a..43e5ac3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -9,21 +9,16 @@ jobs: timeout-minutes: 15 steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup LXD uses: canonical/setup-lxd@main - name: Install dependencies run: | sudo snap install yq - sudo snap install rockcraft --classic --edge + sudo snap install rockcraft --classic --channel=latest/stable --revision 1206 sudo snap install charmcraft --classic --revision 1349 - name: Build ROCK run: | - app_version=$(yq '.version' rockcraft.yaml) - version=$(yq '(.version|split("-"))[0]' rockcraft.yaml) - base=$(yq '(.base|split(":"))[1]' rockcraft.yaml) - tag=${version}-${base}_edge - sed -i "s/${app_version}/${tag}/g" rockcraft.yaml rockcraft pack - name: Upload locally built ROCK artifact uses: actions/upload-artifact@v3 diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 005b369..100b9ab 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -18,13 +18,11 @@ jobs: needs: build strategy: matrix: - env: [integration, ha-integration, tls-integration] + env: [] fail-fast: false steps: - name: Checkout repository - uses: actions/checkout@v3 - with: - ref: 6/edge + uses: actions/checkout@v4 - name: Setup operator environment uses: charmed-kubernetes/actions-operator@main with: @@ -34,14 +32,33 @@ jobs: juju-channel: 3.1/stable # This is needed until # https://bugs.launchpad.net/juju/+bug/1977582 is fixed - bootstrap-options: "--agent-version 3.1.5" + bootstrap-options: "--agent-version 3.1.6" - name: Pin charmcraft version run: | - sudo snap refresh --channel=2.2 charmcraft + sudo snap refresh charmcraft --classic --revision 1349 + sudo snap refresh charmcraft --hold=forever + - name: Install rockcraft + run: | + sudo snap install rockcraft --classic --revision 1206 + sudo snap refresh rockcraft --hold=forever - uses: actions/download-artifact@v3 with: name: mongodb-rock - name: Install tox run: python3 -m pip install tox + + - name: Free disk space + run: | + echo "Free disk space before cleanup" + df -T + # free space in the runner + rockcraft clean + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf /usr/local/share/boost + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + echo "Free disk space after cleanup" + df -T + - name: Integration Tests run: sg snap_microk8s -c "tox -e ${{ matrix.env }}" diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 10c4c87..e8d1f1c 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -40,9 +40,9 @@ jobs: - name: Import and push to GHCR run: | version=$(yq '(.version|split("-"))[0]' rockcraft.yaml) - base=$(yq '(.base|split(":"))[1]' rockcraft.yaml) + base=$(yq '(.base|split("@"))[1]' rockcraft.yaml) tag=${version}-${base}_edge sudo skopeo --insecure-policy copy \ - oci-archive:charmed-mongodb_${tag}_amd64.rock \ + oci-archive:charmed-mongodb_${version}_amd64.rock \ docker-daemon:ghcr.io/canonical/charmed-mongodb:${tag} docker push ghcr.io/canonical/charmed-mongodb:${tag} diff --git a/README.md b/README.md index 492339c..23a0dac 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Charmed MongoDB ROCK is an Open Container Initiative (OCI) image derived from the [Charmed MongoDB Snap](https://snapcraft.io/charmed-mongodb). The tool used to create this ROCK is called [Rockcraft](https://canonical-rockcraft.readthedocs-hosted.com/en/latest/index.html). -The [Charmed MongoDB ROCK](https://github.com/canonical/charmed-mongodb-rock/pkgs/container/charmed-mongodb) is an enhanced, source-available, fully-compatible, drop-in replacement of the OCI image of MongoDB 5.0.13 Community version. In addition, the Charmed MongoDB ROCK package offers more features than the MongoDB Community version, such as backup and restore, monitoring and security features. +The [Charmed MongoDB ROCK](https://github.com/canonical/charmed-mongodb-rock/pkgs/container/charmed-mongodb) is an enhanced, source-available, fully-compatible, drop-in replacement of the OCI image of MongoDB 6.0.6 Community version. In addition, the Charmed MongoDB ROCK package offers more features than the MongoDB Community version, such as backup and restore, monitoring and security features. One benefit of using the Charmed MongoDB ROCK is that it bundles MongoDB with other tools in its ecosystem to be used in the Charmed MongoDB Operator. One of the operators that uses this ROCK is the [Charmed MongoDB (Kubernetes Operator)](https://charmhub.io/mongodb-k8s). @@ -30,11 +30,11 @@ sudo snap install docker ``` Then to use the Charmed MongoDB ROCK run the following command ``` -sudo docker run --rm -it ghcr.io/canonical/charmed-mongodb:5.0.14-22.04_edge +sudo docker run --rm -it ghcr.io/canonical/charmed-mongodb:6.0.6-22.04_edge ``` By running this command you have already started the mongod service with Percona Server for MongoDB. Leave this command running and create another terminal. -*Note if you would like to start `mongod` with custom options you can append your desired options to the container run command i.e.*: `sudo docker run --rm -it ghcr.io/canonical/charmed-mongodb:5.0.14-22.04_edge --bind-ip-all --another-option` *you can read more about [mongod optons here](https://www.mongodb.com/docs/manual/reference/program/mongod/)* +*Note if you would like to start `mongod` with custom options you can append your desired options to the container run command i.e.*: `sudo docker run --rm -it ghcr.io/canonical/charmed-mongodb:6.0.6-22.04_edge --bind-ip-all --another-option` *you can read more about [mongod optons here](https://www.mongodb.com/docs/manual/reference/program/mongod/)* To access your now running MongoDB instance enter the command: ``` @@ -43,11 +43,11 @@ sudo docker container ls This should output something like this: ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -0dddcc9c71d6 ghcr.io/canonical/charmed-mongodb:5.0.14-22.04_edge "/usr/bin/setpriv --…" 44 seconds ago Up 44 seconds romantic_newton +bf08481d18a3 ghcr.io/canonical/charmed-mongodb:6.0.6-22.04_edge "/bin/pebble enter -…" About a minute ago Up About a minute quizzical_sinoussi ``` The name of the container is listed under `NAME` - use this name to connect to your now running database ``` -sudo docker exec --interactive mongo +sudo docker exec --interactive mongosh ``` Now enter `show dbs` this should show you all of your available databases and output something like: ``` @@ -119,7 +119,3 @@ The Charmed MongoDB Operator is free software, distributed under the [Apache Sof ## Trademark Notice "MongoDB" is a trademark or registered trademark of MongoDB, Inc. Other trademarks are property of their respective owners. Charmed MongoDB is not sponsored, endorsed, or affiliated with MongoDB, Inc. - - - - diff --git a/retag_rock.sh b/retag_rock.sh index 30a5f74..761e00d 100755 --- a/retag_rock.sh +++ b/retag_rock.sh @@ -5,7 +5,7 @@ NAME=$(yq '.name' rockcraft.yaml) APP_VERSION=$(yq '.version' rockcraft.yaml) VERSION=$(yq '(.version|split("-"))[0]' rockcraft.yaml) -BASE=$(yq '(.base|split(":"))[1]' rockcraft.yaml) +BASE=$(yq '(.base|split("@"))[1]' rockcraft.yaml) TAG=${VERSION}-${BASE}_edge REGISTRY_NAMESPACE=ghcr.io/canonical diff --git a/rockcraft.yaml b/rockcraft.yaml index 877c66d..95d47d7 100644 --- a/rockcraft.yaml +++ b/rockcraft.yaml @@ -1,8 +1,8 @@ # Copyright 2023 Canonical Ltd. # See LICENSE file for licensing details. name: charmed-mongodb # the name of your ROCK -base: ubuntu:22.04 # the base environment for this ROCK -version: "6.0.6-1" # just for humans. Semantic versioning is recommended +base: ubuntu@22.04 # the base environment for this ROCK +version: "6.0.6-2" # just for humans. Semantic versioning is recommended summary: MongoDB in a rock. # 79 char long summary description: | MongoDB is a source-available cross-platform @@ -71,3 +71,11 @@ parts: source: licenses organize: LICENSE-rock: licenses/LICENSE-rock + + entry: + plugin: dump + source: scripts + organize: + start.sh: bin/start.sh + stage: + - bin/start.sh diff --git a/tox.ini b/tox.ini index 4b0d43e..1ed7ea3 100644 --- a/tox.ini +++ b/tox.ini @@ -8,6 +8,7 @@ setenv = name=charmed-mongodb registry_namespace=ghcr.io/canonical repo=https://github.com/canonical/mongodb-k8s-operator.git + branch=6/edge [testenv:lint] description = run linters @@ -28,8 +29,9 @@ commands = then rockcraft pack; ./retag_rock.sh; fi' bash -ec 'microk8s ctr image import {env:name}_*-$(yq .base rockcraft.yaml | \ cut -c 8-)_edge_amd64.rock --base-name {env:registry_namespace}/{env:name}' - bash -ec 'if ! [ -d operator ]; then git clone {env:repo} operator; fi' {posargs} - tox --workdir operator -c operator -e integration + bash -ec 'if ! [ -d operator ]; then git clone --single-branch --branch {env:branch} {env:repo} operator; fi' {posargs} + tox --workdir operator -c operator -e integration -- --keep-models + [testenv:ha-integration] description = run operator integration tests @@ -42,8 +44,9 @@ commands = then rockcraft pack; ./retag_rock.sh; fi' bash -ec 'microk8s ctr image import {env:name}_*-$(yq .base rockcraft.yaml | \ cut -c 8-)_edge_amd64.rock --base-name {env:registry_namespace}/{env:name}' - bash -ec 'if ! [ -d operator ]; then git clone {env:repo} operator; fi' {posargs} - tox --workdir operator -c operator -e ha-integration + bash -ec 'if ! [ -d operator ]; then git clone --single-branch --branch {env:branch} {env:repo} operator; fi' {posargs} + tox --workdir operator -c operator -e ha-integration -- --keep-models + [testenv:tls-integration] description = run operator integration tests @@ -56,5 +59,5 @@ commands = then rockcraft pack; ./retag_rock.sh; fi' bash -ec 'microk8s ctr image import {env:name}_*-$(yq .base rockcraft.yaml | \ cut -c 8-)_edge_amd64.rock --base-name {env:registry_namespace}/{env:name}' - bash -ec 'if ! [ -d operator ]; then git clone {env:repo} operator; fi' {posargs} + bash -ec 'if ! [ -d operator ]; then git clone --single-branch --branch {env:branch} {env:repo} operator; fi' {posargs} tox --workdir operator -c operator -e tls-integration