GitLab CI를 사용하여 로컬에서 테스트를 실행 하시겠습니까?
GitLab 프로젝트가 GitLab CI에 구성된 경우 로컬에서 빌드를 실행할 수있는 방법이 있습니까?
랩톱을 빌드 "러너"로 바꾸고 싶지 않고 Docker를 활용하고 .gitlab-ci.yml
로컬에서 테스트를 실행 하고 싶습니다 (즉, 모두 미리 구성되어 있음). 또 다른 장점은 로컬 및 CI에서 동일한 환경을 사용하고 있다는 것입니다.
다음은 Docker를 사용하여 Travis 빌드를 로컬에서 실행하는 방법 의 예입니다 . GitLab과 비슷한 것을 찾고 있습니다.
몇 달 전부터 다음을 사용하여 가능합니다 gitlab-runner
.
gitlab-runner exec docker my-job-name
이 작업을 수행하려면 컴퓨터에 도커 와 gitlab-runner
설치 가 모두 필요합니다 .
파일에 image
정의 된 키 도 필요 .gitlab-ci.yml
합니다. 그렇지 않으면 작동하지 않습니다.
다음은 현재 로컬에서 테스트하는 데 사용하는 줄입니다 gitlab-runner
.
gitlab-runner exec docker test --docker-volumes "/home/elboletaire/.ssh/id_rsa:/root/.ssh/id_rsa:ro"
편집 : 당신은 추가 피할 수
--docker-volumes
에 기본적으로 설정 키와 함께/etc/gitlab-runner/config.toml
. 자세한 내용은 공식 문서를 참조하십시오 .
주석의 혼란으로 인해 여기에 gitlab-runner --help
결과를 붙여 넣으 므로 gitlab-runner가 로컬에서 빌드를 만들 수 있음을 알 수 있습니다.
gitlab-runner --help
NAME:
gitlab-runner - a GitLab Runner
USAGE:
gitlab-runner [global options] command [command options] [arguments...]
VERSION:
1.1.0~beta.135.g24365ee (24365ee)
AUTHOR(S):
Kamil Trzciński <ayufan@ayufan.eu>
COMMANDS:
exec execute a build locally
list List all configured runners
run run multi runner service
register register a new runner
install install service
uninstall uninstall service
start start service
stop stop service
restart restart service
status get status of a service
run-single start single runner
unregister unregister specific runner
verify verify all registered runners
artifacts-downloader download and extract build artifacts (internal)
artifacts-uploader create and upload build artifacts (internal)
cache-archiver create and upload cache artifacts (internal)
cache-extractor download and extract cache artifacts (internal)
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug debug mode [$DEBUG]
--log-level, -l "info" Log level (options: debug, info, warn, error, fatal, panic)
--cpuprofile write cpu profile to file [$CPU_PROFILE]
--help, -h show help
--version, -v print the version
보시다시피 exec
명령은 execute a build locally
.
이 프로세스는 자체 머신을 사용하여 도커 컨테이너를 사용하여 테스트를 실행하는 것입니다. 이것은 사용자 지정 러너를 정의하는 것이 아닙니다 . 이렇게하려면 리포지토리의 CI / CD 설정으로 이동하여 설명서를 읽으십시오. 러너가 gitlab.com에서 실행되는 대신 실행되도록하려면 러너에 사용자 지정 및 고유 태그를 추가하고 태그가 지정된 작업 만 실행하고 러너가 담당 할 모든 작업에 태그를 지정해야합니다.
Docker 이미지를 사용하여 Gitlab을 실행하는 경우 : https://hub.docker.com/r/gitlab/gitlab-ce , docker.sock
볼륨 옵션으로 로컬 을 노출하여 파이프 라인을 실행할 수 -v /var/run/docker.sock:/var/run/docker.sock
있습니다.. 이 옵션을 Gitlab 컨테이너에 추가하면 작업자가 호스트의 도커 인스턴스에 액세스 할 수 있습니다.
The GitLab runner appears to not work on Windows yet and there is an open issue to resolve this.
So, in the meantime I am moving my script code out to a bash script, which I can easily map to a docker container running locally and execute.
In this case I want to build a docker container in my job, so I create a script 'build':
#!/bin/bash
docker build --pull -t myimage:myversion .
in my .gitlab-ci.yaml I execute the script:
image: docker:latest
services:
- docker:dind
before_script:
- apk add bash
build:
stage: build
script:
- chmod 755 build
- build
To run the script locally using powershell I can start the required image and map the volume with the source files:
$containerId = docker run --privileged -d -v ${PWD}:/src docker:dind
install bash if not present:
docker exec $containerId apk add bash
Set permissions on the bash script:
docker exec -it $containerId chmod 755 /src/build
Execute the script:
docker exec -it --workdir /src $containerId bash -c 'build'
Then stop the container:
docker stop $containerId
And finally clean up the container:
docker container rm $containerId
ReferenceURL : https://stackoverflow.com/questions/32933174/use-gitlab-ci-to-run-tests-locally
'programing' 카테고리의 다른 글
Delphi 2006-2010 오류 : "C : \ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr 파일을 만들 수 없습니다." (0) | 2021.01.15 |
---|---|
GitLab에 릴리스 / 바이너리를 저장하는 방법은 무엇입니까? (0) | 2021.01.15 |
여러 로더가있는 웹팩 로더에 쿼리를 추가하는 방법은 무엇입니까? (0) | 2021.01.15 |
AWS EC2 Auto Scaling 그룹 : 최소 및 최대를 얻지 만 원하는 인스턴스 제한은 무엇입니까? (0) | 2021.01.14 |
Docker-compose mysql 연결이 준비되었는지 확인 (0) | 2021.01.14 |