circleci

द्वारा astronomer

एस्ट्रोनॉमर APC रिपॉजिटरी के लिए CircleCI कॉन्फ़िगरेशन लिखने, संपादित करने या समीक्षा करते समय उपयोग करें। इसमें स्क्रिप्ट संगठन, इनलाइन बनाम बाहरी स्क्रिप्ट, और… शामिल है।

npx skills add https://github.com/astronomer/astronomer --skill circleci

CircleCI Configuration Guide

Critical Rules

  1. No long inline scripts — script logic for any language must not be written inline in .circleci/config.yml if the script has complicated flow control. Complicated scripts belong in bin/.
  2. Scripts live in bin/ — every script called from CircleCI must exist as a file in the bin/ directory with an appropriate extension (e.g. bin/my-script.sh, bin/my-script.py).
  3. Pin all versions — never use latest or unpinned tags for Docker images or installed tools. Always specify an exact version to prevent supply chain vulnerabilities and ensure reproducible builds.

Script Organization

Scripts invoked by CircleCI jobs must be committed to the repository under bin/ so they can be:

  • Linted and reviewed like any other source file
  • Tested and run locally without needing CI
  • Reused across multiple jobs or workflows
# ✅ CORRECT — call a script from bin/
steps:
  - run:
      name: Build Helm chart
      command: bin/build-helm-chart.sh
# ❌ WRONG — inline shell logic in the CircleCI config
steps:
  - run:
      name: Build Helm chart
      command: |
        helm package .
        mv astronomer-*.tgz /tmp/chart/

Config Generation Pipeline

.circleci/config.yml is never edited directly. It is a generated file produced by rendering the Jinja2 template .circleci/config.yml.j2 via bin/generate_circleci_config.py:

# Regenerate config.yml from the template
uv run bin/generate_circleci_config.py

The generator injects a small set of computed variables (e.g. ci_runner_version, kube_versions, machine_image_version, docker_images) into the template at render time. Always edit .circleci/config.yml.j2, then regenerate.


Version Pinning

Always pin exact versions for Docker images and any tools installed during a job. Using latest or loose tags introduces supply chain risk and makes builds non-reproducible.

All pinned versions must be declared as Jinja2 variables at the top of .circleci/config.yml.j2, not scattered inline throughout the file. This makes them easy to audit and update in one place. All version declarations must include a link to where the list of released versions can be found, so that updating them is straightforward and doesn't require searching online to find more recent releases.

{# ✅ CORRECT — versions declared at top of config.yml.j2 #}
{#- https://circleci.com/docs/guides/execution-managed/building-docker-images/#docker-version -#}
{%- set circleci_docker_version = 'docker23' -%}

{#- https://circleci.com/developer/machine/image/ubuntu-2404 -#}
{%- set machine_image_version = 'ubuntu-2404:2025.09.1' -%}
# Then referenced inline:
docker:
  - image: cimg/python:{{ python_image_version }}
# ❌ WRONG — version hardcoded inline, not declared at top
docker:
  - image: cimg/python:3.8.1
# ❌ WRONG — unpinned image
docker:
  - image: cimg/python:latest
# ✅ CORRECT — pinned tool version installed in a step
- run:
    name: Install helm
    command: bin/install-ci-tools.py 3.17.2

# ❌ WRONG — unversioned tool install
- run:
    name: Install helm
    command: curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

astronomer की और Skills

airflow-adapter
astronomer
एयरफ्लो एडेप्टर पैटर्न v2/v3 API संगतता के लिए। एडेप्टर, संस्करण पहचान, या नए API तरीकों को जोड़ने पर उपयोग करें जिन्हें काम करने की आवश्यकता है...
official
aip-user-stories
astronomer
AIP से PR कार्यान्वयन (पोस्ट मोड) के साथ सत्यापित रेसिपी प्लेबुक, या बिना कार्यान्वयन (प्री मोड) के AIP से अनुमानित उपयोगकर्ता कहानियाँ उत्पन्न करें। उपयोग…
official
airflow-java-sdk
astronomer
Guide for contributing to the Airflow Java SDK (AIP-108). Use this skill whenever a contributor is working in the `java-sdk/` directory or on the Java…
official
airflow-new-sdk
astronomer
एयरफ्लो (AIP-108) के लिए बिल्कुल नए भाषा SDK को लागू करने का मार्गदर्शन। इस कौशल का उपयोग तब करें जब कोई योगदानकर्ता किसी नई प्रोग्रामिंग भाषा के लिए समर्थन जोड़ना चाहता हो —…
official
airflow-translations
astronomer
Apache Airflow UI के लिए अनुवाद जोड़ें या अपडेट करें। लोकेल सेट करने, अनुवाद फ़ाइलें तैयार करने, लोकेल-विशिष्ट के साथ अनुवाद करने के लिए मार्गदर्शन करता है…
official
magpie-setup
astronomer
एक प्रोजेक्ट रिपॉजिटरी में स्नैपशॉट-आधारित अपनाने की प्रक्रिया के माध्यम से apache-magpie फ्रेमवर्क को अपनाएं और बनाए रखें। एक अपनाने वाले के रिपॉजिटरी में प्रतिबद्ध एकमात्र फ्रेमवर्क कौशल…
official
prepare-providers-documentation
astronomer
Replace the manual commit-by-commit classification step in `breeze release-management prepare-provider-documentation` with AI-driven classification. For each…
official
chart-tests
astronomer
हेल्म चार्ट परीक्षणों को लिखने, संपादित करने, समीक्षा करने या चलाने के लिए उपयोग करें, जो Astronomer APC रिपॉजिटरी के लिए हैं। इसमें pytest पैटर्न, render_chart() का उपयोग, उप-चार्ट… शामिल हैं।
official