From 396403ee63c2d90f2184c560ab1d176653c8757e Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Fri, 2 Dec 2022 17:19:35 +0100 Subject: [PATCH 1/7] Rename directories ocp-helm-charts/ -> helm-charts/ ocp-deployments/ -> values/ (contains files which are used with 'helm upgrade --values the-file' --- .github/workflows/release.yml | 2 +- .../packit-service-validation/Chart.yaml | 0 .../packit-service-validation/templates/job-run-validation.yml | 0 .../packit-service-validation/templates/secret-github.yaml | 0 .../packit-service-validation/templates/secret-sentry.yml | 0 .../packit-service-validation/values.yaml | 0 {ocp-deployments => values}/packit-service-validation/Makefile | 0 .../packit-service-validation/production.yaml | 0 .../packit-service-validation/staging.yaml | 0 9 files changed, 1 insertion(+), 1 deletion(-) rename {ocp-helm-charts => helm-charts}/packit-service-validation/Chart.yaml (100%) rename {ocp-helm-charts => helm-charts}/packit-service-validation/templates/job-run-validation.yml (100%) rename {ocp-helm-charts => helm-charts}/packit-service-validation/templates/secret-github.yaml (100%) rename {ocp-helm-charts => helm-charts}/packit-service-validation/templates/secret-sentry.yml (100%) rename {ocp-helm-charts => helm-charts}/packit-service-validation/values.yaml (100%) rename {ocp-deployments => values}/packit-service-validation/Makefile (100%) rename {ocp-deployments => values}/packit-service-validation/production.yaml (100%) rename {ocp-deployments => values}/packit-service-validation/staging.yaml (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 32f5149..6680103 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,6 @@ jobs: - name: Run chart-releaser uses: helm/chart-releaser-action@v1 with: - charts_dir: ocp-helm-charts + charts_dir: helm-charts env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/ocp-helm-charts/packit-service-validation/Chart.yaml b/helm-charts/packit-service-validation/Chart.yaml similarity index 100% rename from ocp-helm-charts/packit-service-validation/Chart.yaml rename to helm-charts/packit-service-validation/Chart.yaml diff --git a/ocp-helm-charts/packit-service-validation/templates/job-run-validation.yml b/helm-charts/packit-service-validation/templates/job-run-validation.yml similarity index 100% rename from ocp-helm-charts/packit-service-validation/templates/job-run-validation.yml rename to helm-charts/packit-service-validation/templates/job-run-validation.yml diff --git a/ocp-helm-charts/packit-service-validation/templates/secret-github.yaml b/helm-charts/packit-service-validation/templates/secret-github.yaml similarity index 100% rename from ocp-helm-charts/packit-service-validation/templates/secret-github.yaml rename to helm-charts/packit-service-validation/templates/secret-github.yaml diff --git a/ocp-helm-charts/packit-service-validation/templates/secret-sentry.yml b/helm-charts/packit-service-validation/templates/secret-sentry.yml similarity index 100% rename from ocp-helm-charts/packit-service-validation/templates/secret-sentry.yml rename to helm-charts/packit-service-validation/templates/secret-sentry.yml diff --git a/ocp-helm-charts/packit-service-validation/values.yaml b/helm-charts/packit-service-validation/values.yaml similarity index 100% rename from ocp-helm-charts/packit-service-validation/values.yaml rename to helm-charts/packit-service-validation/values.yaml diff --git a/ocp-deployments/packit-service-validation/Makefile b/values/packit-service-validation/Makefile similarity index 100% rename from ocp-deployments/packit-service-validation/Makefile rename to values/packit-service-validation/Makefile diff --git a/ocp-deployments/packit-service-validation/production.yaml b/values/packit-service-validation/production.yaml similarity index 100% rename from ocp-deployments/packit-service-validation/production.yaml rename to values/packit-service-validation/production.yaml diff --git a/ocp-deployments/packit-service-validation/staging.yaml b/values/packit-service-validation/staging.yaml similarity index 100% rename from ocp-deployments/packit-service-validation/staging.yaml rename to values/packit-service-validation/staging.yaml From b8221e30443ee8db33b49b50b0930fc66319c11a Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Fri, 2 Dec 2022 17:23:04 +0100 Subject: [PATCH 2/7] Add import-images chart --- helm-charts/import-images/.helmignore | 17 ++++++++++ helm-charts/import-images/Chart.yaml | 8 +++++ .../templates/job-import-images.yaml | 31 +++++++++++++++++ helm-charts/import-images/values.yaml | 34 +++++++++++++++++++ values/import-images/Makefile | 8 +++++ .../import-images/fedora-source-git-prod.yaml | 9 +++++ values/import-images/packit-prod.yaml | 9 +++++ values/import-images/stream-prod.yaml | 9 +++++ 8 files changed, 125 insertions(+) create mode 100644 helm-charts/import-images/.helmignore create mode 100644 helm-charts/import-images/Chart.yaml create mode 100644 helm-charts/import-images/templates/job-import-images.yaml create mode 100644 helm-charts/import-images/values.yaml create mode 100644 values/import-images/Makefile create mode 100644 values/import-images/fedora-source-git-prod.yaml create mode 100644 values/import-images/packit-prod.yaml create mode 100644 values/import-images/stream-prod.yaml diff --git a/helm-charts/import-images/.helmignore b/helm-charts/import-images/.helmignore new file mode 100644 index 0000000..a95278e --- /dev/null +++ b/helm-charts/import-images/.helmignore @@ -0,0 +1,17 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +# Common backup files +*.swp +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm-charts/import-images/Chart.yaml b/helm-charts/import-images/Chart.yaml new file mode 100644 index 0000000..de6749d --- /dev/null +++ b/helm-charts/import-images/Chart.yaml @@ -0,0 +1,8 @@ +apiVersion: v2 +name: import-images +description: A Helm chart for import-images CronJob +type: application + +# Increment each time you make changes +# to the chart and its templates. +version: 0.1.0 diff --git a/helm-charts/import-images/templates/job-import-images.yaml b/helm-charts/import-images/templates/job-import-images.yaml new file mode 100644 index 0000000..e793076 --- /dev/null +++ b/helm-charts/import-images/templates/job-import-images.yaml @@ -0,0 +1,31 @@ +# https://docs.openshift.com/container-platform/latest/rest_api/workloads_apis/cronjob-batch-v1.html +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ .Release.Name }} +spec: + schedule: {{ .Values.cronjob.schedule | quote }} + jobTemplate: + spec: + template: + spec: + containers: + - name: import-images + image: "{{ .Values.image.repo }}:{{ .Values.image.tag }}" + env: + - name: KUBECONFIG + value: /tmp/.kube/config + - name: HOST + value: {{ .Values.host }} + - name: TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: {{ .Values.secret.key }} + - name: SERVICE + value: {{ .Values.service }} + - name: DEPLOYMENT + value: {{ .Values.deployment }} + resources: + {{- toYaml .Values.resources | nindent 16 }} + restartPolicy: OnFailure diff --git a/helm-charts/import-images/values.yaml b/helm-charts/import-images/values.yaml new file mode 100644 index 0000000..c3d014c --- /dev/null +++ b/helm-charts/import-images/values.yaml @@ -0,0 +1,34 @@ +# Cron job parameters +cronjob: + # At 02:00 on Tuesday + schedule: "0 2 * * 2" + +# Container image +image: + # Image repository without a tag + repo: quay.io/packit/import-images + # Image tag + tag: ~ + +# Openshift cluster +host: ~ + +# name of the secret with token of a service account used to login to the cluster +secret: + name: ~ + key: token + +# packit / stream / fedora-source-git +service: packit + +# prod / stg +deployment: prod + +# Pod resources maximum +resources: + limits: + cpu: "100m" + memory: "80Mi" + requests: + cpu: "100m" + memory: "80Mi" diff --git a/values/import-images/Makefile b/values/import-images/Makefile new file mode 100644 index 0000000..e30295e --- /dev/null +++ b/values/import-images/Makefile @@ -0,0 +1,8 @@ +PROJECT ?= packit-prod + +install: + oc project $(PROJECT) + helm upgrade $(EXTRA_OPTIONS) --install --cleanup-on-fail import-images ../../helm-charts/import-images/ --values $(PROJECT).yaml + +dryrun: + make install EXTRA_OPTIONS="--debug --dry-run" diff --git a/values/import-images/fedora-source-git-prod.yaml b/values/import-images/fedora-source-git-prod.yaml new file mode 100644 index 0000000..a4fc8d4 --- /dev/null +++ b/values/import-images/fedora-source-git-prod.yaml @@ -0,0 +1,9 @@ +image: + tag: "4050635" + +host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 + +secret: + name: importimager-token-8wlrc + +service: fedora-source-git diff --git a/values/import-images/packit-prod.yaml b/values/import-images/packit-prod.yaml new file mode 100644 index 0000000..df66c60 --- /dev/null +++ b/values/import-images/packit-prod.yaml @@ -0,0 +1,9 @@ +image: + tag: "4050635" + +host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 + +secret: + name: importimager-token-gjfb6 + +service: packit diff --git a/values/import-images/stream-prod.yaml b/values/import-images/stream-prod.yaml new file mode 100644 index 0000000..8394c84 --- /dev/null +++ b/values/import-images/stream-prod.yaml @@ -0,0 +1,9 @@ +image: + tag: "4050635" + +host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 + +secret: + name: importimager-token-lwwsk + +service: stream From 170ddbcb29efc413af4b9e5e6b3a0873b2cbad32 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Fri, 2 Dec 2022 18:00:44 +0100 Subject: [PATCH 3/7] Have separate READMEs --- Makefile | 5 -- README.md | 59 +++++-------------- .../templates/job-run-validation.yml | 3 +- values/import-images/README.md | 25 ++++++++ values/packit-service-validation/Makefile | 2 +- values/packit-service-validation/README.md | 33 +++++++++++ 6 files changed, 75 insertions(+), 52 deletions(-) delete mode 100644 Makefile create mode 100644 values/import-images/README.md create mode 100644 values/packit-service-validation/README.md diff --git a/Makefile b/Makefile deleted file mode 100644 index 2c757b0..0000000 --- a/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -packit-service-validation-install: - make -C ocp-deployments/packit-service-validation install - -packit-service-validation-dryrun: - make -C ocp-deployments/packit-service-validation dryrun diff --git a/README.md b/README.md index 89cd744..fbd2ca8 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,19 @@ -# [Unified Openshift Deployment Process](https://docs.google.com/presentation/d/1MlLuuawzxJg6U15zbPby6JAtNNEWZAhfGEWNcpYSWeo) +# Helm Charts -for the [Packit Service Validation](https://github.com/packit/deployment/tree/main/cron-jobs/packit-service-validation). +for +* [Packit Service Validation cron job](https://github.com/packit/deployment/tree/main/cron-jobs/packit-service-validation) +* [Import-images cron job](https://github.com/packit/deployment/tree/main/cron-jobs/import-images) -To deploy the *Packit Service Validation* through *Helm* follow this steps: +## Deployment -### Setup deployment +All charts are deployed automatically via GitHub/Gitlab CI/CI. -Helm uses an **image** created through a GitHub action and pushed to Quay.io, -the **tag** for this image is the first *7 digit for the commit SHA* of the packit/deployment repo. +For instructions how to do it manually, see +* [packit-service-validation/README.md](values/packit-service-validation/README.md) +* [import-images/README.md](values/import-images/README.md) -To use a new image update the referenced tag -[here](https://github.com/packit/udp/blob/main/ocp-deployments/packit-service-validation-prod.yaml#L18). +## Releases -### Install Helm Chart - -Login to OpenShift cluster and switch to proper project. In case of packit-service validation -it's `cyborg` project @ [PSI Cluster](https://ocp4.psi.redhat.com). - - oc login --token=sha256~.... --server= .... - oc project cyborg - -Get secrets from Bitwarden. -Sentry from `extra-vars.yml` in `secrets-packit-[prod|stg]` item and -GitHub token from `Release/usercont bot` item. - - export SENTRY=$( echo -n 'token from bitwarden' | base64 ) - export GITHUB=$( echo -n 'token from bitwarden' | base64 ) - -#### Install from this repo - - make packit-service-validation-install DEPLOYMENT=[production|staging] - -#### Install from chart repository - -If you're going to use the chart from outside (without having this repo cloned), -you can install the chart from our chart repository. You just need to have a file -with keys overriding those defined in `values.yaml` with `~` value. - - helm repo add packit https://helm.packit.dev - helm repo update - helm upgrade --install --cleanup-on-fail packit-service-validation packit/packit-service-validation --set secrets.sentry=${SENTRY} --set secrets.github=${GITHUB} --values your-values-file.yaml - -### Render templates - -If you just want to see how the rendered templates would look like: - - make packit-service-validation-dryrun DEPLOYMENT=[production|staging] - -### Releases There's a [release workflow](https://github.com/packit/udp/blob/main/.github/workflows/release.yml) to automate releasing the Helm charts. It uses [Helm Chart Releaser Action](https://github.com/marketplace/actions/helm-chart-releaser) @@ -57,3 +23,8 @@ and whenever there's a new chart version, creates a corresponding GitHub release named for the chart version, adds Helm chart artifacts to the release, and creates or updates an `index.yaml` file with metadata about those releases, which is then hosted on GitHub Pages at [helm.packit.dev](https://helm.packit.dev). + +## [Unified Openshift Deployment Process](https://docs.google.com/presentation/d/1MlLuuawzxJg6U15zbPby6JAtNNEWZAhfGEWNcpYSWeo) + +We use images created by a GitHub workflow and pushed to Quay.io, +the **tag** for an image is the first *7 digit for the commit SHA*. diff --git a/helm-charts/packit-service-validation/templates/job-run-validation.yml b/helm-charts/packit-service-validation/templates/job-run-validation.yml index 265dbf9..45f379f 100644 --- a/helm-charts/packit-service-validation/templates/job-run-validation.yml +++ b/helm-charts/packit-service-validation/templates/job-run-validation.yml @@ -1,4 +1,4 @@ -# https://docs.openshift.com/container-platform/4.11/rest_api/workloads_apis/cronjob-batch-v1.html +# https://docs.openshift.com/container-platform/latest/rest_api/workloads_apis/cronjob-batch-v1.html apiVersion: batch/v1 kind: CronJob metadata: @@ -13,7 +13,6 @@ spec: containers: - name: run-validation image: "{{ .Values.image.repo }}:{{ .Values.image.tag }}" - imagePullPolicy: IfNotPresent env: - name: GITHUB_TOKEN valueFrom: diff --git a/values/import-images/README.md b/values/import-images/README.md new file mode 100644 index 0000000..f8b7af2 --- /dev/null +++ b/values/import-images/README.md @@ -0,0 +1,25 @@ +## Install + +Login to the Openshift cluster: + + oc login --token=sha256~.... --server= .... + +### Install from this repo + + make install PROJECT=packit-prod + +### Install from chart repository + +If you're going to use the chart from outside (without having this repo cloned), +you can install the chart from our chart repository. You just need to have a file +with keys overriding those defined in `values.yaml` with `~` value. + + helm repo add packit https://helm.packit.dev + helm repo update + helm upgrade --install --cleanup-on-fail import-images packit/import-images --values your-values-file.yaml + +### Render templates + +If you just want to see how the rendered templates would look like: + + make dryrun PROJECT=packit-prod diff --git a/values/packit-service-validation/Makefile b/values/packit-service-validation/Makefile index 976c104..a0fd233 100644 --- a/values/packit-service-validation/Makefile +++ b/values/packit-service-validation/Makefile @@ -1,7 +1,7 @@ DEPLOYMENT ?= production install: - helm upgrade $(EXTRA_OPTIONS) --install --cleanup-on-fail packit-$(DEPLOYMENT)-validation ../../ocp-helm-charts/packit-service-validation/ --set secrets.sentry=${SENTRY} --set secrets.github=${GITHUB} --values $(DEPLOYMENT).yaml + helm upgrade $(EXTRA_OPTIONS) --install --cleanup-on-fail packit-$(DEPLOYMENT)-validation ../../helm-charts/packit-service-validation/ --set secrets.sentry=${SENTRY} --set secrets.github=${GITHUB} --values $(DEPLOYMENT).yaml dryrun: make install EXTRA_OPTIONS="--debug --dry-run" diff --git a/values/packit-service-validation/README.md b/values/packit-service-validation/README.md new file mode 100644 index 0000000..2ff848a --- /dev/null +++ b/values/packit-service-validation/README.md @@ -0,0 +1,33 @@ +## Install + +Login to [PSI](https://ocp4.psi.redhat.com) and switch to `cyborg` project. + + oc login --token=sha256~.... --server= .... + oc project cyborg + +Get secrets from Bitwarden. +Sentry from `extra-vars.yml` in `secrets-packit-[prod|stg]` item and +GitHub token from `Release/usercont bot` item. + + export SENTRY=$( echo -n 'token from bitwarden' | base64 ) + export GITHUB=$( echo -n 'token from bitwarden' | base64 ) + +### Install from this repo + + make install DEPLOYMENT=[production|staging] + +### Install from chart repository + +If you're going to use the chart from outside (without having this repo cloned), +you can install the chart from our chart repository. You just need to have a file +with keys overriding those defined in `values.yaml` with `~` value. + + helm repo add packit https://helm.packit.dev + helm repo update + helm upgrade --install --cleanup-on-fail packit-service-validation packit/packit-service-validation --set secrets.sentry=${SENTRY} --set secrets.github=${GITHUB} --values your-values-file.yaml + +### Render templates + +If you just want to see how the rendered templates would look like: + + make dryrun DEPLOYMENT=[production|staging] From 51b8a0e7df4f820945ebf3502fd12d63cf4baa87 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Mon, 5 Dec 2022 14:29:12 +0100 Subject: [PATCH 4/7] Update release workflow No need to install Helm as it's already installed on the runner https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md The action is probably needed only when one wants a specific version. --- .github/workflows/release.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6680103..3ef4ce1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,10 +7,12 @@ on: jobs: release: + # To not run in forks + if: github.repository_owner == 'packit' runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 @@ -19,11 +21,6 @@ jobs: git config user.name "$GITHUB_ACTOR" git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - - name: Install Helm - uses: azure/setup-helm@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - name: Run chart-releaser uses: helm/chart-releaser-action@v1 with: From a6475d6a1e20e62816398269801bfcfa46bb8e28 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Mon, 5 Dec 2022 18:24:10 +0100 Subject: [PATCH 5/7] Workflow for deploying import-images --- .github/workflows/deploy-import-images.yml | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/deploy-import-images.yml diff --git a/.github/workflows/deploy-import-images.yml b/.github/workflows/deploy-import-images.yml new file mode 100644 index 0000000..48fa501 --- /dev/null +++ b/.github/workflows/deploy-import-images.yml @@ -0,0 +1,38 @@ +name: Deploy import-images cron job + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'helm-charts/import-images/**/*.yaml' + - 'values/import-images/*.yaml' + +jobs: + deploy: + # To not run in forks + if: github.repository_owner == 'packit' + runs-on: ubuntu-latest + environment: prod + env: + OC_SERVER: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 + strategy: + matrix: + project: [packit-prod, stream-prod, fedora-source-git-prod] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Deploy + run: | + if [ ${{ matrix.project }} == 'packit-prod' ]; then + TOKEN=${{ secrets.PACKIT_PROD_TOKEN }} + elif [ ${{ matrix.project }} == 'stream-prod' ]; then + TOKEN=${{ secrets.STREAM_PROD_TOKEN }} + elif [ ${{ matrix.project }} == 'fedora-source-git-prod' ]; then + TOKEN=${{ secrets.FEDORA_SOURCE_GIT_PROD_TOKEN }} + fi + oc login --token=$TOKEN --server=$OC_SERVER + make -C values/import-images/ install PROJECT=${{ matrix.project }} From 4f0578334617b80b66f53acb79e066d05c08ee22 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Mon, 5 Dec 2022 19:22:13 +0100 Subject: [PATCH 6/7] Use pipeline service account it has 'edit' role so it can do everything the importimager can. The sa is created by RH OpenShift Pipeline Operator. --- values/import-images/fedora-source-git-prod.yaml | 2 +- values/import-images/packit-prod.yaml | 2 +- values/import-images/stream-prod.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/values/import-images/fedora-source-git-prod.yaml b/values/import-images/fedora-source-git-prod.yaml index a4fc8d4..630c364 100644 --- a/values/import-images/fedora-source-git-prod.yaml +++ b/values/import-images/fedora-source-git-prod.yaml @@ -4,6 +4,6 @@ image: host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 secret: - name: importimager-token-8wlrc + name: pipeline-token-m8z9n service: fedora-source-git diff --git a/values/import-images/packit-prod.yaml b/values/import-images/packit-prod.yaml index df66c60..ce09b6b 100644 --- a/values/import-images/packit-prod.yaml +++ b/values/import-images/packit-prod.yaml @@ -4,6 +4,6 @@ image: host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 secret: - name: importimager-token-gjfb6 + name: pipeline-token-6mc7z service: packit diff --git a/values/import-images/stream-prod.yaml b/values/import-images/stream-prod.yaml index 8394c84..92fd98a 100644 --- a/values/import-images/stream-prod.yaml +++ b/values/import-images/stream-prod.yaml @@ -4,6 +4,6 @@ image: host: https://api.auto-prod.gi0n.p1.openshiftapps.com:6443 secret: - name: importimager-token-lwwsk + name: pipeline-token-dw46p service: stream From bb167b765f7c24b090fb2b040d4580aa923d1350 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Tue, 6 Dec 2022 15:25:32 +0100 Subject: [PATCH 7/7] Skip helmlint in CI, it requires helm binary --- .pre-commit-config.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2435661..6805ed7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v4.4.0 hooks: - id: check-merge-conflict - id: check-symlinks @@ -23,3 +23,7 @@ repos: args: - https://github.com/packit/udp.git stages: [manual, push] + +ci: + # requires helm binary + skip: [helmlint]