Make a daily build of the TOPPERS kernel with Gitlab and Docker

originally

At my previous workplace, the environment for daily builds was set up, but when I was thrown into a place where it wasn't the case, I started with how to build the environment, and I was worried about how to combine tool chains. Also, even if you build or check the operation on your local PC, if you expand it to another site, you will be told "○○ Not Found". That's why the Docker container as an environment construction was attractive and shifted, but I started with the idea that it can also be used as a CI / CD environment. I used to use Jenkins before shifting to the container environment, but I wanted to containerize the Jenkins environment as well, and since I introduced Gitlab to my current workplace, I moved from Jenkins to Gitlab runner.

Good points of CI/CD

OK, NG is clear and the result is notified. I've set it up to throw into Slack, but I've skipped it and left it failed for the last few months ... If you don't fix it as soon as you get an error, your back will get heavier.

image.png

Target of daily build

Build the 3rd generation kernel of TOPPERS (ASP3, FMP3, HRP3, HRMP3). The target environment where everything can be built is Zynq-7000. I will not write about building Gitlab runner, so please check it separately. You can use it even if you install the Docker environment on your local PC without using Gitlab.

Docker image

Use toppersjp/armgcc-ubuntu for the Docker image of the build environment. I have not confirmed everything, but I think that it is compatible with the development environment of TOPPERS 3rd generation ARM target. QEMU is also included. (Athrill has a separate package because the development speed is fast) The Docker file is on Github, so if you want to customize it, please use it here or Fork.

.gitlab-ci.yml I will write it like this. (Partially changed from the file actually used) The gitlab-ci command is pretty close to a shell script, so I think it's relatively easy to get started.

image: toppersjp/armgcc-ubuntu:7-2018-q2

stages:
    - build

daily build_asp3:
    stage: build
    tags:
        - ci-asp
    script:
        - wget https://www.toppers.jp/download.cgi/asp3_zybo_z7_gcc-20191009.zip
        - unzip asp3_zybo_z7_gcc-20191009.zip
        - mv asp3_3.5 asp3
        - wget https://www.toppers.jp/download.cgi/tecsgen-1.7.0.tgz
        - tar xfz tecsgen-1.7.0.tgz
        - cp -rf tecsgen-1.7.0/tecsgen/ asp3/.
        - cp -rf cfg asp3/.
        - mkdir -p /home/asp3/obj; cd /home/asp3/obj
        - ../configure.rb -T zybo_z7_gcc
        - make

Now you can check the build by running it.

image.png

Get the pipeline path badge on README.md!

In the case of gitlab -ci, describe it in the md file like this.

[![build status](https://(gitlabrepository)/badges/master/pipeline.svg)](https://(gitlabrepository)/commits/master)

image.png

Recommended Posts

Make a daily build of the TOPPERS kernel with Gitlab and Docker
Build a NAS with DLNA function at the speed of a second with Raspberry Pi and Docker Compose
Build a Node-RED environment with Docker to move and understand
How to build a Jenkins server with a Docker container on CentOS 7 of VirtualBox and access the Jenkins server from a local PC
Build a Node.js environment with Docker
The story of pushing a Docker container to GitHub Package Registry and Docker Hub with GitHub Actions
Build Metabase with Docker on Lightsail and make it https with nginx
I tried to build the environment of PlantUML Server with Docker
Create a flyway jar with maven and docker build (migrate) with docker-maven-plugin
One file of Docker x Laravel threat! Build a local development environment with the minimum configuration
Build a PureScript development environment with Docker
Communicate Gitlab and Gitlab Runner launched with Docker
[docker] [nginx] Make a simple ALB with nginx
Build a Wordpress development environment with Docker
[Copy and paste] Build a Laravel development environment with Docker Compose Part 2
[Copy and paste] Build a Laravel development environment with Docker Compose Participation
Make a margin to the left of the TextField
Build a Laravel / Docker environment with VSCode devcontainer
Build a WordPress development environment quickly with Docker
Build Apache and Tomcat environment with Docker. By the way, Maven & Java cooperation
Prepare a scraping environment with Docker and Java
A reminder of Docker and development environment construction
A quick note on using jshell with the official Docker image of the JDK
Until you build a Nuxt.js development environment with Docker and touch it with VS Code
[Rails] [Docker] Copy and paste is OK! How to build a Rails development environment with Docker
[Docker] How to see the contents of Volumes. Start a container with root privileges.
How to quit Docker for Mac and build a Docker development environment with Ubuntu + Vagrant
[Java] Cut out a part of the character string with Matcher and regular expression
Build Elastic Stack with Docker and analyze IIS logs
Build an environment of Ruby2.7.x + Rails6.0.x + MySQL8.0.x with Docker
Easily build a Vue.js environment with Docker + Vue CLI
The story of making a reverse proxy with ProxyServlet
[CentOS] Download and build the specified version of Git
[Note] Build a Python3 environment with Docker in EC2
Verification of the relationship between Docker images and containers
(For myself) Build gitlab with ubuntu18.04 + docker for home (Note)
Build WordPress environment with Docker (Local) and AWS (Production)
Build a bulletin board API with authentication and authorization with Rails # 18 ・ Implementation of final user controller
[Oracle Cloud] Build a 4-Node RAC environment of Oracle Database 19c with Docker on OCI Compute
The story of building a Java version of Minecraft server with GCP (and also set a whitelist)
Until you build a project described in scala with Maven and execute it with the scala command.
Build a bulletin board API with authentication authorization in Rails # 12 Association of user and post
A crappy guy who makes layout adjustments sober and efficient with the development of libGDX
[Docker] Build a site on Hugo and publish it on GitHub
Create a Docker image with the Oracle JDK installed (yum
A story packed with the basics of Spring Boot (solved)
Make Docker confusing with Pokemon and make it easier to attach
Check the operation of two roles with a chat application
I want to make a list with kotlin and java!
Easy environment construction of MySQL and Redis with Docker and Alfred
I want to make a function with kotlin and java!
The nth and n + 1st characters of a Ruby string
I tried JAX-RS and made a note of the procedure
Make facebook messenger with talk API of api.ai and a3rt
Build Docker Image lightweight and fast with CodeBuild with Santa Banner
[Docker] Delete only the volume associated with a specific container
I tried to build the environment of WSL2 + Docker + VSCode
Explain the benefits of the State pattern with a movie rating
Elasticsearch> Build with docker, get Twitter information and visualize with Kibana
Install Ruby 3.0.0 Preview 1 with a combination of Homebrew and rbenv
Create Rails5 and postgresql environment with Docker and make pgadmin available