If you want to set a variable only for one run, you can add an export
command when you configure the self-hosted runner on the Github repository, before running the ./run.sh
command:
Example (linux) with a TEST
variable:
# Create the runner and start the configuration experience
$ ./config.sh --url https://github.com/owner/repo --token ABCDEFG123456
# Add new variable
$ export TEST="MY_VALUE"
# Last step, run it!
$ ./run.sh
That way, you will be able to access the variable by using $TEST
, and it will also appear when running env
:
job:
runs-on: self-hosted
steps:
- run: env
- run: echo $VAR
If you want to set a variable permanently, you can add a file to the etc/profile.d/<filename>.sh
, as suggested by @frennky above, but you will also have to update the shell for it be aware of the new env variables, each time, before running the ./run.sh
command:
Example (linux) with a HTTP_PROXY
variable:
# Create the runner and start the configuration experience
$ ./config.sh --url https://github.com/owner/repo --token ABCDEFG123456
# Create new profile http_proxy.sh file
$ sudo touch /etc/profile.d/http_proxy.sh
# Update the http_proxy.sh file
$ sudo vi /etc/profile.d/http_proxy.sh
# Add manually new line in the http_proxy.sh file
$ export HTTP_PROXY=http://my.proxy:8080
# Save the changes (:wq)
# Update the shell
$ bash
# Last step, run it!
$ ./run.sh
That way, you will also be able to access the variable by using $HTTP_PROXY
, and it will also appear when running env
, the same way as above.
job:
runs-on: self-hosted
steps:
- run: env
- run: echo $HTTP_PROXY
- run: |
cd $HOME
pwd
cd ../..
cat etc/profile.d/http_proxy.sh
The etc/profile.d/<filename>.sh
will persist, but remember that you will have to update the shell each time you want to start the runner, before executing ./run.sh
command. At least that is how it worked with the EC2 instance I used for this test.
Reference
run: env
command print the $VAR on the console when you execute it inside your self-hosted runner? (Workflow example and run on github runners). If yes, did you try using${{ env.VAR }}
? – Colonelrun: env
does not show all the env variables.${{ env.VAR }}
also does not access it – Burdock/etc/profile.d/
? – Minnaminnaminnie