Docker Gitlab-runner 实现持续部署

2021-04-23 engineer

环境

  • 群晖 DS1821+ 搭载的 Docker 环境
  • DockerHub 的 Gitlab(11.11.8)
  • DockerHub 的 Gitlab-runner(13.11.0, Ubuntu)

参考

https://www.cnblogs.com/sanduzxcvbnm/p/13724671.html

步骤

  1. sudo docker pull gitlab/gitlab-runner:latest 从群晖 docker 中拉镜像
  2. 在 docker 中绑定卷:

    1. : /etc/gitlab-runner
    2. : /var/run/docker.sock
    3. <宿主机需要处理的文件路径> :
  3. sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register 群晖 shell 中注册 runner
    # gitlab-runner register
    
    Please enter the gitlab-ci coordinator URL:
    # 示例:http://gitlab.alibaba-inc.com/ci
    Please enter the gitlab-ci token for this runner:
    # xxxxxx(在 project 页的 specifid runner 获得 token)
    Please enter the gitlab-ci description for this runner:
    # 示例:qd_api_runner
    Please enter the gitlab-ci tags for this runner (comma separated):
    # 示例:hwy
    Whether to run untagged builds [true/false]:
    # true
    Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
    # shell (由于个人需求是操作宿主机文件,所以选择 shell, SSH 也可以)

想要的功能是利用 runner,将 repo commit 中的文件复制到另一个宿主机目录。为此,需要将目标宿主机目录映射到 runner 内部(上文「绑定卷」的第三条),之后,在 repo 根目录下的 .gitlab-ci.yml 文件中写下如下配置文件:

deploy:
        stage: deploy
        script:
                - pwd
                - ls -al docs
                - ls -al /home/dest-folder/docs
                - cp docs/README.md /home/dest-folder/docs/.
        tags:
                - deploy-docsify

完成。这个活儿主要是要把 runner 容器运行 shell 命令的层次关系搞懂即可。

Comments
Write a Comment