Short info
This article is about how you can use Docker Container to test your codes. Which you have on GitLab
How to use Docker Container?
Set up of simple CI/CD
- Log in to gitlab.eufus.psnc.pl
- On the top bar, select Menu > Projects and find your project
- Press "+" button and select New File
- File must be in root of your repository and be called
.gitlab-ci.yml
(mind the '.' at the beginning of the file name) Prepare content for CI / CD purposes - you can use simple example below as a template
Executing script on Gateway is a little bit different than using Docker image. Please investigate carefully
before_script
section in example.gitlab-ci.ymlstages: - Test Docker Execution inside Docker container: stage: Test Docker tags: - Docker image: 'gitlab.eufus.psnc.pl:5050/g2michal/imas-based-docker/ual-fc2k' before_script: - module load IMAS - imasdb test - tar -xf beaver-data/data/input/input.tar.gz -C $HOME/public/imasdb/test/3/0 script: - make - ./bin/main
The ual-fc2k is a private repository. You have to request access in order to use Docker image
- Complete each section. Remember that each project has different requirements, so the commands must be adapted to your code.
- image - allows to specify a custom Docker image and a list of services that can be used for time of the build
tags - The tag indicates whether the task is to be performed by HPC or Docker.
Use Docker in this example. Using HPC is described here- before_script - is used to define the command that should be run before all builds, including deploy builds
- script - defines a shell script which is executed by Runner
- after_script - is used to define the command that will be run after for builds
- At the end press Commit changes
How to check my CI/CD tasks?
Please visit this page
How to use external private repository inside Docker Container?
In rare occasions it might happen you want to clone another repository from a completely different location and use it during CI/CD execution phase. You can do this by cloning repository inside Docker
container
- Prepare your personal access token. Take a look here to find documentation - link.
- Log in to gitlab.eufus.psnc.pl
- On the top bar, select Menu > Projects and find your project
On the left sidebar, select Settings > CI/CD
- Expand Variables
- Click Add Variable
Enter variable name in the
Key
field. We are using nameCREDENTIALS
- in this tutorialEnter <your_github_username>:<your_gitlab_token> as the
Value
.Remove Protect variable checkbox to use it in each tag or branch
Mark Mask variable to protect your confidential data from others.
Access token serves the purpose of password.
!!! Be careful! If somebody intercepts your token, all your repositories might be at risk! Do not share your access tokens !!!- Press Add variable.
If you performed the steps correctly, the list should display as below Update you .gitlab-ci.yml file to use variable with access token
.gitlab-ci.ymlstages: - Test Docker with access to external repository Execution inside Docker container: stage: Test Docker with access to external repository tags: - Docker image: 'gitlab.eufus.psnc.pl:5050/g2michal/imas-based-docker/ual-fc2k' before_script: - module load IMAS - imasdb test - git clone https://$CREDENTIALS@github.com/mkopsnc/beaver-data.git - tar -xf beaver-data/data/input/input.tar.gz -C $HOME/public/imasdb/test/3/0 script: - make - ./bin/main
Check your CI/CD pipelines. If everything is okay, job should be successful
The scientific work is published for the realization of the international project co-financed by Polish Ministry of Science and Higher Education in 2019 from financial resources of the program entitled "PMW"; Agreement No. 5040/H2020/Euratom/2019/2
This work has been carried out within the framework of the EUROfusion Consortium and has received funding from the Euratom research and training programme 2014–2020 under grant agreement No 633053. The views and opinions expressed herein do not necessarily reflect those of the European Commission or ITER