2

I am running a script in the CI/CD of the pipeline. The goal is to get a string to work with.
When I get that result, I save it into a variable and save result in the yaml file of the dockerfile.

I am wanting to pass that variable from the CI environment, into the docker-compose container. So, I am trying to export this like another things are exported, however it doesn't work:

ci/pdf/jenkins-changes.sh
LOG="$(cat ".log")"
export LOG

I have added a variables.env file that looks like this:

LOG=LOG

And then modified the docker-compose.yaml to read the var :

pdf: image: thisimage/this build: context: ../ dockerfile: ./docker/Dockerfile.name args: git_branch: ${GIT_BRANCH} env_file: - variables.env environment: - LOG=${LOG} volumes: - do-build:/src/do-build

And in the script that finally runs the docker-container, I have also Declared it: FROM ubuntu:16.04 as pdf-builder

ARG log
ENV log=${log}
RUN LOG=${log}
RUN export $LOG

And right after, I run the script.sh that requires the variable, however, it returns Unbound variable and breaks.

LOG=${log}
echo ${LOG}
Vanessa
  • 351
  • 4
  • 16

1 Answers1

0

The answer to this question was:

ci/pdf/jenkins-changes.sh 
LOG="$(cat ".log")"
export LOG

Then pass it as an argument, instead of a variable:

pdf:
    image: thisimage/this
    build:
    context: ../
    dockerfile: ./docker/Dockerfile.name
    args:
        git_branch: ${GIT_BRANCH}
    env_file:
    - variables.env
    environment:
    - LOG=${LOG}
    volumes:
    - do-build:/src/do-build

And then, in the dockerfile call it and define it.

ARG log

This should leave it global for any script to use it.

Vanessa
  • 351
  • 4
  • 16