Артефакт — конечный продукт разработки кода.
Artifact registry, или Artifact repository, или хранилище артефактов — это система централизованного хранения и версионирования артефактов.
Архитектура типичного хранилища артефактов:
stages:
- build
- deploy
image: alpine
before_script:
- apk add --update curl
build:
stage: build
script:
- tar -cvf output.tar .
- >-
curl
--header "JOB-TOKEN: $CI_JOB_TOKEN"
--upload-file output.tar
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/tararchive/0.0.0/archive.tar"
deploy:
stage: deploy
script:
- >-
curl
--header "JOB-TOKEN: $CI_JOB_TOKEN"
-o input.tar
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/tararchive/0.0.0/archive.tar"
- tar -xvf input.tar
stages:
- build
- deploy
image: python:3.11
build:
stage: build
cache:
paths:
- .pip/
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip"
TWINE_USERNAME: "gitlab-ci-token"
TWINE_PASSWORD: "$CI_JOB_TOKEN"
script:
- pip install build twine
- python -m build
- python -m twine upload --repository-url $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi dist/*
deploy:
stage: deploy
cache:
paths:
- .pip/
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.pip"
PIP_EXTRA_INDEX_URL: "https://gitlab-ci-token:$CI_JOB_TOKEN@$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi/simple"
script:
- pip install -U yourmodule
- python -m yourmodule
stages:
- build
- deploy
build:
stage: build
image: docker
services:
- docker:dind
script:
- echo $CI_JOB_TOKEN | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
deploy:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: manual
tags:
- prod
script:
- echo $CI_JOB_TOKEN | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
- docker pull "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
- docker stop prod
- docker rm prod
- docker run -p 80:80 --name prod "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
Узкоспециализированные решения по хранению артефактов имеют широкий дополнительный функционал, кроме собственно хранения артефактов: