supercharge / mongodb-github-action

Use MongoDB in GitHub Actions
MIT License
222 stars 46 forks source link

`mongo` and `mongosh` disappeared? #39

Closed scspijker closed 1 year ago

scspijker commented 1 year ago

Since today our builds fail because they can't find the mongo or mongosh clients. This is for both version 1.7.0 and 1.8.0 of this step.

Did this step install client software before and has something changes / broken, or did we accidentally get mongo client software from Github Actions itself?

marcuspoehls commented 1 year ago

@scspijker Hey Stijn, you should have either the mongodb command when using the MongoDB 4.x release line or mongosh in MongoDB 5.x and 6.x. Can you please check your GitHub Actions logs for this package and have a look which version has been used to start the MongoDB container?

timmyg commented 1 year ago

@scspijker @marcuspoehls seeing similar issue - we relied on this giving us mongo and mongoimport and now getting:

mongo: not found and mongoimport: not found

Using mongo:5.0

marcuspoehls commented 1 year ago

@timmyg Hey Tim, thanks for confirming the issue.

@scspijker @timmyg Tim, Stijn, can you please share a link to a failed GitHub Actions job? I need more details on the error and some context in which it fails.

ringsaturn commented 1 year ago

@marcuspoehls Hi, I made an example repo https://github.com/ringsaturn/mongodb-action-debug for this issue and a sample CI:

marcuspoehls commented 1 year ago

@ringsaturn Thank you for the repo! That helps.

You're using Ubuntu 22.04 on that runner. The new 22.04 runners don't have MongoDB installed anymore. MongoDB was available on 20.04, but removed on 22.04.

That's the reason you can't use the mongo, mongosh, and mongoimport commands directly. They would be available from within the MongoDB docker container. But not directly on the 22.04 host

ringsaturn commented 1 year ago

@marcuspoehls Thanks, it’s problem of Ubuntu 22.04 runner not this action.


For anyone interested in this problem, please track these issues:

marcuspoehls commented 1 year ago

@ringsaturn Thanks for sharing the links!

AdamGerthel commented 1 year ago

Any ideas on how to work around this? I tried installing mongo:

      - name: Install mongosh
        run: |
          sudo apt-get update
          sudo apt-get install 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 jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
          sudo apt-get update
          sudo apt-get install -y mongodb-mongosh

But that didn't help. Still getting mongo: command not found

This is the whole file

name: Run Tests

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      TEST_MONGODB_URI: mongodb://localhost:27017/test

    steps:
      - uses: actions/checkout@v3

      - name: Use Node.js 16.x
        uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: 'yarn'

      - name: Install mongosh
        run: |
          sudo apt-get update
          sudo apt-get install 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 jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
          sudo apt-get update
          sudo apt-get install -y mongodb-mongosh

      - name: Start MongoDB
        uses: supercharge/mongodb-github-action@1.8.0
        with:
          mongodb-version: 6.0

      - run: yarn install
      - run: yarn build
      - run: mongo --eval "db.getSiblingDB('test')"
      - run: yarn test
marcuspoehls commented 1 year ago

@AdamGerthel Hey Adam, GitHub Action runners using Ubuntu-latest doesn’t have MongoDB installed on the host system. That means you can’t use the mongo command. You’re installing the MongoDB Shell mongosh and not MongoDB directly on the host. If I understand it correctly, you must install MongoDB itself to have the mongo command available.

AdamGerthel commented 1 year ago

@marcuspoehls

Ubuntu-latest doesn’t have MongoDB installed on the host system. That means you can’t use the mongo command.

Yeah I know - that's what I was trying to fix by adding the "Install mongosh" step.

You’re installing the MongoDB Shell mongosh and not MongoDB directly on the host.

Ok, I just followed the official install instructions and thought that would work. What would be the way to install mongodb and not mongosh then?

marcuspoehls commented 1 year ago

@AdamGerthel

Your MongoDB installation is missing step 4:

sudo apt-get install -y mongodb-org
AdamGerthel commented 1 year ago

Ok, thanks! Still getting the same error nonetheless:

Run mongo --eval "db.getSiblingDB('test')" /home/runner/work/_temp/596db73b-b917-44a6-b5e8-49f67dea387e.sh: line 1: mongo: command not found Error: Process completed with exit code 127.

It looks like the install went well, so I'm not sure what the problem is. I've tried using Act to be able to test it locally, but for some reason, I haven't been able to get it working (which seems to be because my repo is private).

Any ideas on why mongo still isn't found?

marcuspoehls commented 1 year ago

@AdamGerthel yep, the mongo command is no longer part of the MongoDB 6.0 installation. Sorry, I missed that detail. MongoDB 6.0 uses mongosh

AdamGerthel commented 1 year ago

Works - thanks!

marcuspoehls commented 1 year ago

Sweet!