mattmartian

mattmartian

Jenkins: mix: command not found on jenkins file

Im trying to get my jenkins job to run tests, however im having a hard time getting it to work and recognize the command, is there a better way to do this? i want the pipeline to fail if all of the tests dont pass and eventually build it into a docker image to send off to an eks. If any more info is needed please let me know!

Jenkinsfile

pipeline {
  agent any

  stages {
    stage("Build") {
      steps {
        sh "MIX_ENV=test mix do deps.get, deps.compile"
      }
    }

    stage("Test") {
      steps {
        sh "MIX_ENV=test mix test"
      }
    }
  }
}

Marked As Solved

stefanchrobot

stefanchrobot

Looks like Elixir is not installed in the environment where you’re trying to invoke the mix command. Hard to say what’s happening without more context.

But I’d suggest running your test with Docker and Docker Compose so that you can reproduce it locally. Something like this would work:
test/docker-compose.yml:

version: '3'

services:
  db:
    image: postgres:11.12
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: myapp_test

  myapp:
    build:
      context: ../
      dockerfile: test/Dockerfile
    depends_on:
      - db

test/Dockerfile:

FROM hexpm/elixir:1.10.3-erlang-23.3.4-alpine-3.12.0

RUN apk add --update --no-cache build-base

# prepare build dir
WORKDIR /app

RUN mix local.hex --force && \
    mix local.rebar --force
COPY . .
RUN mix do deps.get

ENV MIX_ENV=test
RUN mix compile

CMD mix test

and then run it from CI:

docker-compose -f test/docker-compose.yml build
docker-compose -f test/docker-compose.yml up -d
docker-compose -f test/docker-compose.yml run --rm myapp
docker-compose -f test/docker-compose.yml down

I’d then have a separate Dockerfile for building the release image.

Also Liked

mattmartian

mattmartian

Awesome, thank you so much for the info! and for more context, to start to learn how to get my elixir into jenkins i made an example app and was hooking it up to get it to try and run the unit tests in the test folder, and then if they pass build an image to send off to EKS. This helps a lot i really appreciate it!

Where Next?

Popular in Questions Top

WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
vac
Hi, I’m quite new in Elixir and I’m trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and I...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

Other popular topics Top

hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43806 214
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31307 143
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New

We're in Beta

About us Mission Statement