安装gitlab-runner创建CI/CD流水线

1.本地部署gitlab和gitlab容器

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    container_name: gitlab
    hostname: 'git.local'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://git.local'
        gitlab_rails['gitlab_shell_ssh_port'] = 22
    ports:
      - "80:80"
      - "443:443"
      - "22:22"
    volumes:
      - "$GITLAB_HOME/config:/etc/gitlab"
      - "$GITLAB_HOME/logs:/var/log/gitlab"
      - "$GITLAB_HOME/data:/var/opt/gitlab"
    networks:
      - gitlab-network

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    restart: always
    container_name: gitlab-runner
    hostname: gitlab-runner
    depends_on:
      - gitlab
    volumes:
     - "$GITLAB_HOME/gitlab-runner:/etc/gitlab-runner"
     - /var/run/docker.sock:/var/run/docker.sock
    networks:
        - gitlab-network

networks:
  gitlab-network:
    name: gitlab-network

 

 

使用https自签名证书的话,需要把domain.crt和domain.key(域名自定义)放到GITLAB_HOME/config/ssl/目录下,同时放一份到GITLAB_HOME/gitlab-runner/certs/下。GITLAB_HOME为自定义的gitlab存放数据的目录。

2.创建Runner

创建一个项目,在settting-CI/CD-Runners点击create project runner,填写tags,勾选Run untagged jobs

点击create runner创建,记住token

3.注册runner

回到创建gitlab-runner容器的终端

docker exec -it gitlab-runner gitlab-runner register

输入gitlab url

输入token

输入runner名字

输入 executor,我填的docker

输入docker镜像名字,我用来执行Python,填的python:3.13.7,你也可以填别的

4.创建流水线

在项目根目录创建.gitlab-ci.yml 文件,比如写入示例文件

build-job:
  stage: build
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"
    - python -c "print('Hello, runner')"

test-job1:
  stage: test
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
  environment: production

提交修改,在右侧的build-piplines就可以看到执行的流水线,点击可以看到任务执行情况。

流水线执行时如果报错"Could not resolve host",可以在gitlab-runner/config.toml文件的[runners.docker] 下面添加一行extra_hosts = ["git.local:host-gateway"] ,这是由于docker容器无法解析本地域名。

THE END