Pulp CI #3217
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pulp CI | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- main | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# runs at 3:00 UTC daily | |
- cron: '00 3 * * *' | |
env: | |
COLORTERM: 'yes' | |
TERM: 'xterm-256color' | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Check commit message | |
if: github.event_name == 'pull_request' | |
env: | |
GITHUB_CONTEXT: ${{ github.event.pull_request.commits_url }} | |
run: | | |
echo ::group::REQUESTS | |
pip install pygithub | |
echo ::endgroup:: | |
for sha in $(curl $GITHUB_CONTEXT | jq '.[].sha' | sed 's/"//g') | |
do | |
python .ci/scripts/validate_commit_message.py $sha | |
VALUE=$? | |
if [ "$VALUE" -gt 0 ]; then | |
exit $VALUE | |
fi | |
done | |
shell: bash | |
- name: Check code format | |
run: | | |
make tidy fmt vet | |
shell: bash | |
docs: | |
uses: "./.github/workflows/docs-ci.yml" | |
bundle: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check if bundle files are updated | |
run: | | |
.ci/scripts/bundle_check.sh | |
shell: bash | |
bundle-upgrade: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install kind | |
run: | | |
.ci/scripts/kind_with_registry.sh | |
shell: bash | |
- name: Install OLM | |
run: | | |
make sdkbin OPERATOR_SDK_VERSION=v1.29.0 LOCALBIN=/tmp | |
/tmp/operator-sdk olm install | |
shell: bash | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
repository: pulp/pulp-operator | |
ref: 1.0.0-beta.4 | |
- name: Install Pulp CRD | |
run: | | |
make install CONTROLLER_TOOLS_VERSION=v0.14.0 | |
shell: bash | |
- name: Build bundle image | |
run: | | |
make bundle-build bundle-push BUNDLE_IMG=localhost:5001/pulp-operator-bundle:old | |
shell: bash | |
- name: Install the operator | |
run: | | |
/tmp/operator-sdk run bundle --skip-tls localhost:5001/pulp-operator-bundle:old | |
shell: bash | |
- uses: actions/checkout@v4 | |
- name: Build bundle image | |
run: | | |
make bundle-build bundle-push BUNDLE_IMG=localhost:5001/pulp-operator-bundle:new | |
shell: bash | |
- name: Upgrade the operator | |
run: | | |
/tmp/operator-sdk run bundle-upgrade --use-http localhost:5001/pulp-operator-bundle:new | |
shell: bash | |
two-deployments: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install kind | |
run: | | |
.ci/scripts/kind_with_registry.sh | |
shell: bash | |
- name: Install OLM | |
run: | | |
make sdkbin OPERATOR_SDK_VERSION=v1.29.0 LOCALBIN=/tmp | |
/tmp/operator-sdk olm install | |
shell: bash | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Pulp CRD | |
run: | | |
make install | |
shell: bash | |
- name: Build bundle image | |
run: | | |
make bundle-build bundle-push BUNDLE_IMG=localhost:5001/pulp-operator-bundle:testing | |
shell: bash | |
- name: Install the operator | |
run: | | |
/tmp/operator-sdk run bundle --skip-tls localhost:5001/pulp-operator-bundle:testing | |
shell: bash | |
- name: Deploy example-pulp and test-pulp | |
run: | | |
kubectl apply -f config/samples/simple-with-reduced-migration-cpu.yaml | |
kubectl apply -f config/samples/simple-test.yaml | |
- name: Check and wait for example-pulp deployment | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: Check and wait for test-pulp deployment | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/test-pulp --timeout=900s | |
envtest: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Check code format and generate manifests | |
run: | | |
make test | |
shell: bash | |
helm: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "TEST=pulp" >> $GITHUB_ENV | |
echo "INGRESS_TYPE=nodeport" >> $GITHUB_ENV | |
shell: bash | |
- name: Updating registries configuration | |
run: | | |
if [ -f "/etc/docker/daemon.json" ] | |
then | |
echo "INFO: | |
Updating docker configuration | |
" | |
echo "$(cat /etc/docker/daemon.json | jq -s '.[0] + { | |
"insecure-registries" : ["ingress.local","nodeport.local:30000"] | |
}')" | sudo tee /etc/docker/daemon.json | |
sudo service docker restart || true | |
fi | |
if [ -f "/etc/containers/registries.conf" ] | |
then | |
echo "INFO: | |
Updating registries configuration | |
" | |
echo "[registries.insecure] | |
registries = ['ingress.local','nodeport.local:30000'] | |
" | sudo tee -a /etc/containers/registries.conf | |
fi | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Install Pulp Operator | |
run: | | |
make docker-build IMG=localhost/pulp-operator:devel | |
kubectl create ns pulp-operator-system | |
kubectl config set-context --current --namespace=pulp-operator-system | |
helm repo add pulp-operator https://github.com/pulp/pulp-k8s-resources/raw/main/helm-charts/ --force-update | |
helm install --set namespace=pulp-operator-system --set image=localhost/pulp-operator:devel pulp pulp-operator/pulp-operator | |
kubectl apply -f .ci/assets/kubernetes/pulp-admin-password.secret.yaml | |
kubectl apply -f config/samples/simple.yaml | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: Test all components | |
run: | | |
.ci/scripts/pulp_tests.sh -m | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: | | |
.github/workflows/scripts/show_logs.sh | |
helm repo list | |
helm list | |
shell: bash | |
containerized: | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "TEST=pulp" >> $GITHUB_ENV | |
echo "INGRESS_TYPE=nodeport" >> $GITHUB_ENV | |
shell: bash | |
- name: Updating registries configuration | |
run: | | |
if [ -f "/etc/docker/daemon.json" ] | |
then | |
echo "INFO: | |
Updating docker configuration | |
" | |
echo "$(cat /etc/docker/daemon.json | jq -s '.[0] + { | |
"insecure-registries" : ["ingress.local","nodeport.local:30000"] | |
}')" | sudo tee /etc/docker/daemon.json | |
sudo service docker restart || true | |
fi | |
if [ -f "/etc/containers/registries.conf" ] | |
then | |
echo "INFO: | |
Updating registries configuration | |
" | |
echo "[registries.insecure] | |
registries = ['ingress.local','nodeport.local:30000'] | |
" | sudo tee -a /etc/containers/registries.conf | |
fi | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Check code format and generate manifests | |
run: | | |
make manifests generate fmt vet | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: | | |
make docker-build deploy | |
kubectl get namespace | |
kubectl config set-context --current --namespace=pulp-operator-system | |
kubectl apply -f .ci/assets/kubernetes/pulp-admin-password.secret.yaml | |
kubectl apply -f config/samples/simple.yaml | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: KubeLinter | |
if: github.event_name == 'pull_request' | |
run: .ci/scripts/kubelinter.sh | |
- name: Test all components | |
run: | | |
.ci/scripts/pulp_tests.sh -m | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
components: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- COMPONENT_TYPE: ingress | |
- COMPONENT_TYPE: nodeport | |
- COMPONENT_TYPE: telemetry | |
- COMPONENT_TYPE: ldap | |
- COMPONENT_TYPE: external-db | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "TEST=pulp" >> $GITHUB_ENV | |
echo "COMPONENT_TYPE=${{ matrix.COMPONENT_TYPE }}" >> $GITHUB_ENV | |
shell: bash | |
- name: Updating registries configuration | |
run: | | |
if [ -f "/etc/docker/daemon.json" ] | |
then | |
echo "INFO: | |
Updating docker configuration | |
" | |
echo "$(cat /etc/docker/daemon.json | jq -s '.[0] + { | |
"insecure-registries" : ["ingress.local","nodeport.local:30000"] | |
}')" | sudo tee /etc/docker/daemon.json | |
sudo service docker restart || true | |
fi | |
if [ -f "/etc/containers/registries.conf" ] | |
then | |
echo "INFO: | |
Updating registries configuration | |
" | |
echo "[registries.insecure] | |
registries = ['ingress.local','nodeport.local:30000'] | |
" | sudo tee -a /etc/containers/registries.conf | |
fi | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
minikube addons enable ingress | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Check code format and generate manifests | |
run: | | |
make manifests generate fmt vet | |
shell: bash | |
- name: Prepare Object Storage | |
run: | | |
.ci/scripts/prepare-object-storage.sh | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: | | |
make local | |
kubectl get namespace | |
kubectl config set-context --current --namespace=pulp-operator-system | |
kubectl apply -f .ci/assets/kubernetes/pulp-admin-password.secret.yaml | |
if [[ "$COMPONENT_TYPE" == "ingress" ]]; then | |
kubectl apply -f config/samples/simple.ingress.yaml | |
elif [[ "$COMPONENT_TYPE" == "telemetry" ]]; then | |
kubectl apply -f config/samples/telemetry.yaml | |
elif [[ "$COMPONENT_TYPE" == "ldap" ]]; then | |
.ci/scripts/ldap_config.sh | |
kubectl apply -f config/samples/ldap.yaml | |
elif [[ "$COMPONENT_TYPE" == "external-db" ]]; then | |
kubectl create ns db | |
kubectl apply -f config/samples/external_db.yaml | |
kubectl apply -f config/samples/simple-external-db.yaml | |
else | |
kubectl apply -f config/samples/simple.yaml | |
fi | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: KubeLinter | |
if: github.event_name == 'pull_request' | |
run: .ci/scripts/kubelinter.sh | |
- name: Test all components | |
run: | | |
export INGRESS_TYPE=$COMPONENT_TYPE | |
.ci/scripts/pulp_tests.sh -m | |
if [[ "$COMPONENT_TYPE" == "telemetry" ]]; then | |
.ci/scripts/telemetry.sh | |
elif [[ "$COMPONENT_TYPE" == "ldap" ]] ; then | |
.ci/scripts/ldap_test.sh | |
fi | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
galaxy: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- STORAGE: filesystem | |
- STORAGE: azure | |
- STORAGE: s3 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "TEST=galaxy,galaxybackup,galaxyrestore" >> $GITHUB_ENV | |
echo "CI_TEST_STORAGE=${{ matrix.STORAGE }}" >> $GITHUB_ENV | |
echo "API_ROOT=/api/galaxy/pulp/" >> $GITHUB_ENV | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Rename kind to Galaxy | |
run: make rename manifests bundle generate CR_KIND=Galaxy CR_DOMAIN=ansible.com CR_PLURAL=galaxies APP_IMAGE=quay.io/pulp/galaxy-minimal WEB_IMAGE=quay.io/pulp/galaxy-web | |
- name: Check code format and generate manifests | |
run: | | |
make manifests generate fmt vet CR_KIND=Galaxy CR_DOMAIN=ansible.com CR_PLURAL=galaxies APP_IMAGE=quay.io/pulp/galaxy-minimal WEB_IMAGE=quay.io/pulp/galaxy-web | |
shell: bash | |
- name: Prepare Object Storage | |
run: | | |
.ci/scripts/prepare-object-storage.sh | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: | | |
make local CR_KIND=Galaxy CR_DOMAIN=ansible.com CR_PLURAL=galaxies APP_IMAGE=quay.io/pulp/galaxy-minimal WEB_IMAGE=quay.io/pulp/galaxy-web | |
kubectl get namespace | |
kubectl config set-context --current --namespace=pulp-operator-system | |
kubectl apply -f .ci/assets/kubernetes/pulp-admin-password.secret.yaml | |
kubectl apply -f .ci/assets/kubernetes/galaxy_sign.secret.yaml | |
kubectl apply -f .ci/assets/kubernetes/signing_scripts.yaml | |
if [[ "$CI_TEST_STORAGE" == "azure" ]]; then | |
kubectl apply -f .ci/assets/kubernetes/pulp-object-storage.azure.secret.yaml | |
kubectl apply -f config/samples/galaxy.azure.ci.yaml | |
elif [[ "$CI_TEST_STORAGE" == "s3" ]]; then | |
kubectl apply -f .ci/assets/kubernetes/pulp-object-storage.aws.secret.yaml | |
kubectl apply -f config/samples/galaxy.s3.ci.yaml | |
elif [[ "$CI_TEST_STORAGE" == "filesystem" ]]; then | |
kubectl apply -f config/samples/galaxy.yaml | |
fi | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: kubectl wait --for condition=Galaxy-Operator-Finished-Execution galaxy/galaxy-example --timeout=900s | |
shell: bash | |
- name: KubeLinter | |
if: github.event_name == 'pull_request' | |
run: .ci/scripts/kubelinter.sh | |
- name: Test | |
run: .ci/scripts/galaxy_ng-tests.sh -m | |
shell: bash | |
- name: Backup & Restore | |
run: CI_TEST=galaxy .ci/scripts/backup_and_restore.sh -m | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Send Build details to Slack | |
id: slack | |
uses: slackapi/slack-github-action@v1.18.0 | |
if: failure() && github.event_name != 'pull_request' | |
with: | |
payload: | | |
{ | |
"text": "Galaxy Operator CI ${{ job.status }}\nhttps://github.com/pulp/pulp-operator/actions/runs/${{ github.run_id }}", | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Galaxy Operator CI ${{ job.status }}\nhttps://github.com/pulp/pulp-operator/actions/runs/${{ github.run_id }}" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_PULP_CHANNEL }} | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
upgrade: | |
runs-on: ubuntu-latest | |
if: github.ref_name != 'main' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- INGRESS_TYPE: ingress | |
- INGRESS_TYPE: nodeport | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: pulp/pulp-operator | |
ref: main | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "TEST=pulp" >> $GITHUB_ENV | |
echo "INGRESS_TYPE=${{ matrix.INGRESS_TYPE }}" >> $GITHUB_ENV | |
shell: bash | |
- name: Updating registries configuration | |
run: | | |
if [ -f "/etc/docker/daemon.json" ] | |
then | |
echo "INFO: | |
Updating docker configuration | |
" | |
echo "$(cat /etc/docker/daemon.json | jq -s '.[0] + { | |
"insecure-registries" : ["ingress.local","nodeport.local:30000"] | |
}')" | sudo tee /etc/docker/daemon.json | |
sudo service docker restart || true | |
fi | |
if [ -f "/etc/containers/registries.conf" ] | |
then | |
echo "INFO: | |
Updating registries configuration | |
" | |
echo "[registries.insecure] | |
registries = ['ingress.local','nodeport.local:30000'] | |
" | sudo tee -a /etc/containers/registries.conf | |
fi | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
minikube addons enable ingress | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Prepare Object Storage | |
run: | | |
.ci/scripts/prepare-object-storage.sh | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: | | |
make local | |
kubectl get namespace | |
kubectl config set-context --current --namespace=pulp-operator-system | |
kubectl apply -f .ci/assets/kubernetes/pulp-admin-password.secret.yaml | |
if [[ "$INGRESS_TYPE" == "ingress" ]]; then | |
kubectl apply -f config/samples/simple.ingress.yaml | |
else | |
kubectl apply -f config/samples/simple.yaml | |
kubectl patch pulp example-pulp --type=merge -p '{"spec":{"api":{"strategy":{"type":"Recreate"}}}}' | |
fi | |
shell: bash | |
- name: Check and wait pulp-operator deploy [before upgrade] | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: Logs [before upgrade] | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Upgrade pulp-operator | |
run: | | |
make install | |
sleep 1 | |
kubectl get pulps.repo-manager.pulpproject.org | |
sudo systemctl stop pulp-operator.service | |
make local | |
if [[ "$INGRESS_TYPE" == "ingress" ]]; then | |
kubectl apply -f config/samples/simple.ingress.yaml | |
kubectl patch pulp example-pulp --type=merge -p '{"spec": { "web": {"replicas": 1 }}}' | |
kubectl patch pulp example-pulp --type=merge -p '{"spec": { "ingress_annotations": { "nginx.ingress.kubernetes.io/proxy-body-size": "0" } }}' | |
else | |
kubectl apply -f config/samples/simple.yaml | |
kubectl patch pulp example-pulp --type=merge -p '{"spec":{"api":{"strategy":{"type":"Recreate"}}}}' | |
fi | |
sleep 10 | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=900s | |
shell: bash | |
- name: KubeLinter | |
if: github.event_name == 'pull_request' | |
run: .ci/scripts/kubelinter.sh | |
- name: Test all components | |
run: | | |
.ci/scripts/pulp_tests.sh -m | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
deploy: | |
runs-on: ubuntu-latest | |
needs: [containerized, components, galaxy] | |
if: | | |
github.event_name != 'pull_request' && | |
github.repository_owner == 'pulp' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.8' | |
- name: Setup Go environment | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: true | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
shell: bash | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Quay login | |
env: | |
QUAY_BOT_PASSWORD: ${{ secrets.QUAY_BOT_PASSWORD }} | |
QUAY_BOT_USERNAME: pulp+github | |
run: echo "$QUAY_BOT_PASSWORD" | docker login -u "$QUAY_BOT_USERNAME" --password-stdin quay.io | |
- name: Build and Push images | |
run: | | |
make docker-buildx bundle-build bundle-push catalog-build catalog-push | |
shell: bash |