RedHat Operator Bundle certification process
이 문서는 RedHat Marketplace를 위한 OLM 번들 제출을 위한 인증 프로세스를 안내합니다. 이는 Red Hat Software Certification Workflow Guide를 기반으로 합니다.
다음 프로세스는 scripts/tools/publish.sh
에서 부분적으로 자동화됩니다. 이 프로세스를 실행하려면 publish.sh ${VERSION} redhat-marketplace
를 사용할 수 있습니다. 자세한 내용은 스크립트 문서를 참조하세요.
이 문서 전반에 걸쳐 공통 클러스터 인프라 및 공통 GitHub 계정(gl-distribution-oc
)가 사용됩니다. 사용자 지정 클러스터/GitHub 계정을 사용하는 경우에는 이에 맞게 조정하십시오.
OpenShift 클러스터 프로비저닝
사전 요구 사항
-
gl-distribution-oc
GitHub 계정에 개인 SSH 키 추가(로컬 사본은${HOME}/.ssh/gldoc_github
에 있음) -
Git 작업에는
gl-distribution-oc
리포지토리에 액세스하는 별도의 SSH 키가 필요하므로, 샘플 래퍼 스크립트(operator_certification.sh
) 사용은 도움이 될 수 있습니다. 다른 로드된 개인 키가 먼저 제공되면 GitHub이 연결을 거부할 수 있기 때문입니다:#!/bin/sh OC_SSH_KEYFILE=${OC_SSH_KEYFILE:-"${HOME}/.ssh/gldoc_github"} export GIT_SSH_COMMAND="ssh -i ${OC_SSH_KEYFILE} -o IdentitiesOnly=yes" exec $@
-
olm_bundle.sh
사전 요구 사항:task
yq
opm
환경 설정
클러스터는 배포 파이프라인을 사용하여 배포됩니다. 해당 클러스터의 파이프라인 deploy_cluster
작업에서 아티팩트를 얻으세요.
VERSION="0.11.0"
# CLUSTER_DIR: "deploy_cluster" 작업으로부터 얻은 아티팩트가 있는 디렉토리
CLUSTER_DIR=${HOME}/clusters/redhat-certification-ocp49
export TKN=${CLUSTER_DIR}/bin/tkn
# 프로비저닝된 클러스터의 "admin" 수준 kubeconfig 사용
export KUBECONFIG=${CLUSTER_DIR}/auth/kubeconfig
export GIT_USERNAME="gl-distribution-oc"
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# 아래 이메일은 우리의 일시적인 해결책이므로 아래와 같이 사용하십시오.
# https://gitlab.com/gitlab-org/distribution/team-tasks/-/issues/1097
# 그리고
# https://gitlab.com/gitlab-org/distribution/team-tasks/-/issues/1082
# 가 해결될 때까지 사용하십시오
export GIT_EMAIL="dmakovey+operator-certification@gitlab.com"
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
export GIT_FORK_REPO_URL="git@github.com:gl-distribution-oc/certified-operators.git"
export GIT_BRANCH="gitlab-operator-kubernetes-${VERSION}"
export OPERATOR_BUNDLE_PATH="operators/gitlab-operator-kubernetes/${VERSION}"
위의 셸 코드를 환경 파일(예: my.env
)로 저장하고 필요한 곳에서 소스로 사용하는 것이 편리할 수 있습니다: source /path/to/my.env
.
리포지토리 설정
리포지토리 포크
인증된 및 마켓플레이스 오퍼레이터 모두에 대해 이미 포크가 생성되었습니다: - certified-operators 또는 - redhat-marketplace-operators
참고:
아래의 operator_certification.sh
래퍼 스크립트 사용은 선택 사항입니다.
-
로컬로 포크를 클론합니다:
pushd ${HOME} operator_certification.sh git clone git@github.com:gl-distribution-oc/certified-operators.git
-
포크의
main
브랜치를 최신 상태로 가져옵니다:git remote add upstream git@github.com:redhat-openshift-ecosystem/certified-operators.git git rebase -i upstream/main operator_certification.sh git push
-
릴리스를 위한 새 브랜치를 생성합니다:
git checkout -b gitlab-operator-kubernetes-${VERSION} CATALOG_REPO_CLONE=${HOME}/certified-operators
-
gitlab-operator
로컬 디렉토리로 돌아갑니다:popd
번들 생성
OSDK_BASE_DIR=".build/cert" \
DOCKER="podman" \
OLM_PACKAGE_VERSION=${VERSION} \
OPERATOR_TAG=${VERSION} \
scripts/olm_bundle.sh build_manifests generate_bundle patch_bundle
제출을 위해 번들 적절히 주석 달기
BUNDLE_DIR=.build/cert/bundle PREVIOUS_OPERATOR_VERSION="x.y.z" OLM_UPGRADE_MODE="replaces" \
redhat/operator-certification/scripts/configure_bundle.sh adjust_annotations adjust_csv
변경 사항을 복사하고 포크한 리포지토리로 푸시하기
이 시점에서 번들을 새 위치로 복사해야 합니다(CATALOG_REPO_CLONE
의 값을 포크 리포지토리에서 검색하세요):
cp -r .build/cert/bundle ${CATALOG_REPO_CLONE}/operators/gitlab-operator-kubernetes/${VERSION}
( cd ${CATALOG_REPO_CLONE} && git add operators/gitlab-operator-kubernetes/${VERSION} \
&& git commit -am "Add gitlab-operator-${VERSION}" \
&& operator_certification.sh git push origin gitlab-operator-kubernetes-${VERSION})
인증 파이프라인 실행
GitHub 사용자 이름과 이메일은 이 단계에 대해 가져와야 하며, GIT_USERNAME
및 GIT_EMAIL
에서 사용해야 합니다.
OCP에서 적절한 프로젝트로 전환하십시오:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
set_project
작업 공간 템플릿 생성:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
create_workspace_template
그런 다음 파이프라인을 실행합니다:
redhat/operator-certification/scripts/operator_certification_pipeline.sh \
run_certification_pipeline_automated
이렇게 하면 Upstream PR이 생성되고 RedHat 포털에 제출이 열립니다.