CI/CD για AI agents με DOCKUP_TOKEN
CI/CD για AI agents με DOCKUP_TOKEN: authentication χωρίς browser, deployment με αναμονή για terminal state, προστασία secrets και σωστός τερματισμός των pipelines.
Το CI/CD για AI agents λειτουργεί σωστά μόνο όταν το authentication και το deployment εκτελούνται χωρίς να βρίσκεται κάποιος στο terminal. Το browser login, η αντιγραφή one-time codes και τα μηνύματα status που περιέχουν μόνο κείμενο δεν είναι συμβατά με unattended runner. Το Dockup υποστηρίζει τη non-interactive διαδρομή μέσω του DOCKUP_TOKEN, δομημένου JSON και εντολών deploy που επιστρέφουν πραγματικό failure exit code.
Αυτός ο οδηγός δημιουργεί ένα pipeline contract που μπορούν να χρησιμοποιήσουν το Claude Code, το Codex, ένα shell script ή ένα συμβατικό CI job. Οι ίδιοι κανόνες ισχύουν σε όλες τις περιπτώσεις: κάντε inject το token κατά το runtime, επαληθεύστε την ταυτότητα, εντοπίστε ή καθορίστε το ακριβές target, περιμένετε terminal result και διατηρήστε τα διαγνωστικά στοιχεία σε περίπτωση failure.
Γιατί χρειάζεται το CI/CD για AI agents non-interactive authentication;
Το interactive dockup login ανοίγει μια σελίδα authentication και περιμένει ένα token. Αυτό είναι κατάλληλο για το workstation ενός developer, όμως ένας containerized runner μπορεί να μην έχει browser, persistent home directory ή διαθέσιμο άτομο για να κάνει paste οτιδήποτε.
Το DOCKUP_TOKEN λύνει αυτό το όριο:
export DOCKUP_TOKEN="<TOKEN>"
dockup whoami --json
Η environment variable έχει προτεραιότητα έναντι του ~/.dockup/config.json. Η whoami αναφέρει το tokenSource, ώστε το pipeline να μπορεί να αποδείξει ότι χρησιμοποιεί το προβλεπόμενο injected credential και όχι ένα παλιό config file που έχει παραμείνει σε self-hosted runner.
Μην εκτελείτε dockup login -t "$DOCKUP_TOKEN" σε CI, εκτός αν υπάρχει συγκεκριμένος λόγος για να αποθηκεύσετε ένα config file. Η απευθείας παροχή της environment variable περιορίζει το credential στη συγκεκριμένη διεργασία και αποφεύγει την εγγραφή του στον home directory του runner.
Το pipeline δεν πρέπει ποτέ να κάνει echo το token. Απενεργοποιήστε το shell tracing γύρω από εντολές που περιέχουν secrets, αποφύγετε την εκτύπωση ολόκληρου του environment και χρησιμοποιήστε τη λειτουργία masked secrets της CI πλατφόρμας.
Πώς πρέπει να αποθηκεύεται και να γίνεται scope το DOCKUP_TOKEN;
Αποθηκεύστε το token ως encrypted repository, environment ή organization secret. Για production, προτιμήστε ένα environment-level secret, επειδή μπορεί να συνδυαστεί με branch restrictions και manual approvals που παρέχει η CI πλατφόρμα.
Μια ασφαλής πολιτική token απαντά σε πέντε ερωτήσεις:
| Ερώτηση | Προτεινόμενη απάντηση |
|---|---|
| Πού αποθηκεύεται το token; | CI encrypted secret store |
| Πότε εκτίθεται; | Μόνο στο deployment job |
| Ποια branches μπορούν να το χρησιμοποιήσουν; | Protected production branches |
| Ποιος μπορεί να αλλάξει το workflow; | Reviewed maintainers |
| Πώς ελέγχεται η χρήση; | Dockup audit log και CI job history |
Το Dockup υποστηρίζει επίσης permissioned API keys. Παραθέστε τα διαθέσιμα permission names πριν δημιουργήσετε ένα key με περιορισμένο scope:
dockup keys permissions --json
Επιλέξτε μόνο τα ακριβή permission names που επιστρέφει η πλατφόρμα και, στη συνέχεια, δημιουργήστε το key μέσω του permissioned API-key workflow. Κατά τη δημιουργία, αποθηκεύστε με ασφάλεια το generated key και μην το συμπεριλάβετε σε issue, pull request ή agent transcript· ένα deployment job δεν πρέπει να αποκτά ευρεία account administration απλώς επειδή ένα developer token έχει ήδη αυτά τα δικαιώματα.
Το άρθρο AI agent production guardrails παρέχει μια ευρύτερη permission ladder.
Πώς δημιουργείτε ένα deployment pipeline που περιμένει την πραγματική κατάσταση;
Εγκαταστήστε το CLI στο job, επαληθεύστε την ταυτότητα και, στη συνέχεια, κάντε deploy με --wait:
name: production-deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
env:
DOCKUP_TOKEN: ${{ secrets.DOCKUP_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Dockup CLI
run: npm install -g dockup-cli
- name: Verify Dockup identity
run: dockup whoami --json
- name: Deploy and wait
run: dockup deploy production/api --wait --json
Το σημαντικό δεν είναι ο CI vendor. Είναι το command contract. Το dockup deploy ... --wait --json τερματίζει με 0 μόνο όταν το deployment φτάσει σε success. Το default timeout είναι 900 δευτερόλεπτα. Ένα failed build επιστρέφει non-zero exit με deploy_failed, ενώ μια non-terminal operation όταν λήξει το timeout επιστρέφει deploy_timeout.
Επειδή η διεργασία τερματίζει με non-zero, ο runner επισημαίνει το step και το job ως failed. Δεν απαιτείται parsing των logs.
Για ένα linked repository που πρέπει να κάνει push το current branch και να κάνει deploy, το dockup push --json περιμένει από προεπιλογή. Σε ένα CI job που έχει ήδη λάβει Git push event, ένα ρητό dockup deploy <target> είναι συχνά πιο ξεκάθαρο, επειδή αποφεύγει το push από τον runner.
Πώς πρέπει ένα pipeline να καταγράφει logs και error codes;
Διατηρήστε το JSON deployment result ως artifact ή job output, αλλά μην επιτρέψετε σε ένα redirection να αποκρύψει το exit status. Ένα shell pattern μπορεί να καταγράψει και τα δύο:
set +e
dockup deploy production/api --wait --json > deploy-result.json
status=$?
set -e
if [ "$status" -ne 0 ]; then
dockup logs production/api --build --json > build-logs.json || true
cat deploy-result.json
exit "$status"
fi
dockup status production/api --json
Το pipeline τερματίζει με το αρχικό deploy status. Τα build logs συλλέγονται μόνο μετά από failure. Τα runtime logs πρέπει να συλλέγονται όταν το image έχει γίνει build, αλλά η εφαρμογή καταρρέει αργότερα:
dockup logs production/api --json
Για live build visibility, το follow mode εκπέμπει NDJSON:
dockup logs production/api --build -f --json
Το stream τερματίζει όταν τερματίζει και το deployment, ενώ το failure εξακολουθεί να αντιστοιχεί σε non-zero process result. Η λεπτομερής διαγνωστική διαδικασία καλύπτεται στο build και runtime log debugging.
Ένα pipeline πρέπει να κάνει branching βάσει codes και όχι βάσει fragments μηνυμάτων:
| Code | Απόκριση pipeline |
|---|---|
not_logged_in | Άμεσο failure· το secret injection δεν λειτουργεί |
no_target | Failure· η ρύθμιση του target δεν είναι έγκυρη |
deploy_trigger_failed | Failure πριν από την αναμονή· ελέγξτε το error που επιστράφηκε |
deploy_failed | Ανεβάστε τα build logs και προκαλέστε failure |
deploy_timeout | Σημειώστε αβέβαιη κατάσταση· ελέγξτε το status πριν από retry |
needs_confirm | Διακοπή· ένα destructive step δεν έχει approval |
Πώς μπορεί να συμμετέχει ένας agent χωρίς να αποδυναμώσει την ασφάλεια του CI;
Ένας agent μπορεί να προετοιμάσει κώδικα, να ενημερώσει ένα reviewed workflow, να ερμηνεύσει JSON και να συνοψίσει ένα failed build. Δεν χρειάζεται unrestricted access στο production token σε κάθε coding session.
Διαχωρίστε τους ρόλους:
- Development agent: επεξεργάζεται κώδικα και εκτελεί tests τοπικά.
- Review process: επικυρώνει τις αλλαγές στη ρύθμιση του deployment.
- CI runner: λαμβάνει το
DOCKUP_TOKENμόνο μετά το εγκεκριμένο trigger. - Dockup: εκτελεί το deployment και καταγράφει audit events.
- Agent ή operator: ερμηνεύει το αποτέλεσμα και προτείνει recovery.
Αυτή η διάταξη αποτρέπει ένα prompt injection σε άσχετη εργασία από το να αποκτήσει production credentials. Ο agent εξακολουθεί να κατανοεί το pipeline, επειδή οι εντολές και το αναμενόμενο JSON είναι αποθηκευμένα στο repository, ενώ η τιμή του secret παραμένει εκτός repository.
Για deployments που εκτελούνται απευθείας από agent, κάντε inject το token στη συγκεκριμένη διεργασία του Claude Code ή του Codex και εγκαταστήστε το bundled skill:
npm install -g dockup-cli
dockup skill install
dockup whoami --json
Το skill καθοδηγεί και τους δύο agents να χρησιμοποιούν non-interactive authentication, JSON, exact target discovery, terminal-state waiting και confirmation gates.
Τι κάνει το CI/CD για AI agents επαναλήψιμο και ελέγξιμο;
Η repeatability ξεκινά με ένα ρητά καθορισμένο target. Αποθηκεύστε το production/api ως protected pipeline variable ή reviewed literal και όχι ως όνομα που προκύπτει από τον agent κατά το runtime. Επικυρώστε το account πριν από το πρώτο write.
Η idempotency απαιτεί διαφορετική αντιμετώπιση ανά operation:
- Η ανάγνωση identity, status, logs και history είναι ασφαλές να επαναληφθεί.
- Η δημιουργία service πρέπει να ξεκινά με target discovery, ώστε τα retries να μην δημιουργούν duplicate.
- Ένα νέο deploy δημιουργεί άλλο production event και πρέπει να καταγράφεται.
- Οι αλλαγές στο environment είναι mutations και απαιτούν redeploy.
- Τα destruction και pruning δεν πρέπει να αποτελούν αυτόματους στόχους για retry.
Μετά το deployment, συλλέξτε evidence από την πλατφόρμα:
dockup status production/api --json
dockup uptime production/api --hours 24 --json
dockup audit --writes --json
Το uptime μετριέται κάθε λεπτό και περιλαμβάνει τον μέσο χρόνο απόκρισης και τον p95. Το audit output συνδέει το CI mutation με μεταγενέστερο review. Η κατανάλωση CPU, RAM και disk μετριέται επίσης ανά λεπτό σε σχέση με το account balance· το προτεινόμενο Pro plan κοστίζει $20 τον μήνα και περιλαμβάνει $20 usage credit.
Ένα πλήρες pipeline record περιλαμβάνει το Git commit, το Dockup target, το deployment ID, τα timestamps έναρξης και ολοκλήρωσης, το exit code, το terminal status και links προς τα build artifacts. Έτσι, ένα release CI/CD για AI agents παραμένει reproducible ακόμη και όταν το αρχικό agent session δεν είναι πλέον διαθέσιμο.
Το Dockup CLI reference πρέπει να θεωρείται η authoritative πηγή για τις εντολές. Για τη δημιουργία repository πριν ενεργοποιηθεί το CI, ακολουθήστε το Git repository to production.
Ελέγξτε το concurrency και το environment promotion
Δύο successful pipelines μπορούν και πάλι να δημιουργήσουν unsafe release αν εκτελούνται ταυτόχρονα στο ίδιο target. Χρησιμοποιήστε τα concurrency controls της CI πλατφόρμας, ώστε ένα νεότερο production job είτε να περιμένει είτε να αντικαθιστά σκόπιμα ένα παλαιότερο. Το Dockup θα αναφέρει με ακρίβεια κάθε deployment, όμως το repository workflow πρέπει να αποφασίζει τη σειρά των overlapping commits.
Κάντε promote το ίδιο reviewed commit μεταξύ environments αντί να κάνετε rebuild ένα untracked local state. Ένα staging job μπορεί να κάνει deploy το staging/api, να εκτελέσει application checks και, στη συνέχεια, να επιτρέψει σε ένα protected production job να κάνει deploy το production/api. Διατηρήστε ξεχωριστά τα tokens και τα targets, ώστε ένας staging agent να μην μπορεί να περάσει κατά λάθος το όριο.
Ορίστε retry policy για τα timeouts
Το deploy_timeout δεν σημαίνει failure ούτε success. Σημαίνει ότι η operation εκτελούνταν ακόμη όταν ολοκληρώθηκε η αναμονή των 900 δευτερολέπτων. Πριν από retry, ελέγξτε:
dockup status production/api --json
dockup deployments production/api -n 5 --json
Αν το αρχικό deployment φτάσει αργότερα σε success, ένα blind retry θα δημιουργήσει άλλο release. Αν απέτυχε, συλλέξτε το build log. Αν παραμένει non-terminal και το build είναι όντως μεγάλο, επαναλάβετε την παρατήρηση με μεγαλύτερο, τεκμηριωμένο timeout αντί να δημιουργήσετε δεύτερο deployment.
Αυτή η διάκριση αποτρέπει το CI/CD για AI agents από το να μετατρέπει την αβεβαιότητα δικτύου ή χρονισμού σε duplicate production changes.
Καταγράψτε το deployment identity
Συμπεριλάβετε στο CI summary το Dockup account identity, το target, το commit SHA, το deployment ID και το terminal status. Αυτή η μικρή καταγραφή επιτρέπει σε έναν μεταγενέστερο operator να συνδέσει το pipeline run με τα Dockup audit events χωρίς να εκθέσει το token.
Θέστε το workflow σε production
Εγκαταστήστε το CLI στον runner, επαληθεύστε το injected identity και χρησιμοποιήστε το terminal exit status —και όχι μια γραμμή log που φαίνεται επιτυχημένη— ως gate του pipeline.
npm install -g dockup-cli
dockup skill install
Η πρώτη εντολή εγκαθιστά το CLI. Η δεύτερη εγκαθιστά το αντίστοιχο Dockup skill για Claude Code και Codex. Ξεκινήστε δωρεάν στο app.dockup.ai.
FAQ
Τι είναι το DOCKUP_TOKEN;
Το DOCKUP_TOKEN είναι η authentication path μέσω environment για Dockup CLI sessions που δεν μπορούν να ολοκληρώσουν interactive browser login, όπως CI runners, containers και AI agents.
Παρακάμπτει το DOCKUP_TOKEN ένα τοπικό Dockup config file;
Ναι. Το environment token έχει προτεραιότητα και το dockup whoami --json αναφέρει το ενεργό token source.
Πώς γνωρίζει ένα CI job ότι απέτυχε ένα deployment του Dockup;
Εκτελέστε το dockup deploy με --wait και --json. Η εντολή τερματίζει με non-zero και structured failure code όταν το deploy αποτυγχάνει ή λήγει λόγω timeout.
Πρέπει ένα CI workflow να εκτυπώνει το deployment token για debugging;
Όχι. Διατηρήστε το στο CI secret store, αποφύγετε το shell tracing και τα environment dumps και εκθέστε το μόνο στο deployment step.
Μπορούν το Claude Code ή το Codex να χρησιμοποιήσουν την ίδια CI authentication path;
Ναι. Και τα δύο μπορούν να χρησιμοποιήσουν το DOCKUP_TOKEN και το bundled Dockup skill, το οποίο διδάσκει τους ίδιους κανόνες για JSON, target discovery, wait και confirmation.
