Select only operations supported by the current compatibility contract.
Run LocalCloud in team CI
The Public Preview License permits ongoing internal CI for individuals and organizations, including for-profit companies. Keep the job isolated, pin the image, and validate against real Google Cloud separately.
Do not run tests unless the health gate succeeds; retain logs when startup fails.
Treat these as templates until exercised with a pinned image on the selected CI runner.
Technical examples for internal automation
Use these templates only within the governing Public Preview License. Exercise networking, health, image identity, and cleanup on the exact runner.
name: GCP Integration Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
localcloud:
image: jaysen2apache/localcloud:latest
ports:
- 24080:24080
- 24082:24082
- 24087:24087
options: --memory 4g
steps:
- uses: actions/checkout@v4
- name: Wait for LocalCloud
run: |
for i in $(seq 1 30); do
if curl -fsS http://localhost:24080/health; then exit 0; fi
sleep 2
done
docker logs localcloud
exit 1
- name: Run integration tests
env:
BIGQUERY_EMULATOR_HOST: http://localhost:24087
PUBSUB_EMULATOR_HOST: localhost:24082
run: pytest tests/integration/ integration-tests:
image: python:3.12
services:
- name: jaysen2apache/localcloud:latest
alias: localcloud
variables:
BIGQUERY_EMULATOR_HOST: http://localcloud:24087
PUBSUB_EMULATOR_HOST: localcloud:24082
before_script:
- pip install -r requirements.txt
- |
for i in $(seq 1 30); do
if curl -fsS http://localcloud:24080/health; then exit 0; fi
sleep 2
done
exit 1
script:
- pytest tests/integration/ pipeline {
agent { docker { image 'python:3.12' } }
stages {
stage('Integration Tests') {
steps {
docker.image('jaysen2apache/localcloud:latest')
.withRun('--memory 4g -p 24087:24087 -p 24082:24082') { c ->
docker.image('appropriate/curl')
.inside("--link ${c.id}:localcloud") {
sh """
for i in $(seq 1 30); do
if curl -fsS http://localcloud:24080/health; then exit 0; fi
sleep 2
done
exit 1
"""
}
withEnv([
'BIGQUERY_EMULATOR_HOST=http://localcloud:24087',
'PUBSUB_EMULATOR_HOST=localcloud:24082'
]) {
sh 'pytest tests/integration/'
}
}
}
}
}
} What bounded local emulation can add
Exercise documented operations without routing the local test step to a real Google Cloud project. This is a technical boundary, not a quantified cost claim.
Use one data volume, project, and fixture namespace per job. Explicitly reset or seed state and do not assume emulator concurrency or isolation matches Google Cloud.
Catch endpoint, request-shape, and fixture errors before the guarded real-Google-Cloud release step. No cross-runner latency or duration benchmark is claimed.
The bounded local job should not need production GCP credentials. Stop if an SDK tries to reach Google Cloud; keep release credentials in a separate guarded job.
Frequently asked questions
How much do GCP-integrated CI/CD pipelines cost?
Cost depends on your Google Cloud usage, pricing, regions, and billing agreements. This site has no maintained dataset supporting a typical per-run or monthly savings figure. Use authorized billing data for estimates.
Does LocalCloud support GitHub Actions, GitLab CI, and Jenkins?
Yes. The Public Preview License permits non-production internal CI for individuals and organizations, including for-profit companies. Exact runner networking and service-container behavior must still be tested.
Will my tests behave differently in CI vs local development?
They can differ because of image identity, runner resources, networking, ports, concurrency, and retained state. Pin a qualified image digest, isolate state, and validate production behavior separately.
How fast does LocalCloud start in CI?
No maintained cross-runner startup benchmark is available. Poll http://localhost:24080/health with a job timeout and inspect logs on failure.
Can I run parallel test suites against the same LocalCloud runtime?
Use one isolated data volume and project per job. Parallel clients can still contend for service state, resources, and ports; namespace fixtures and verify concurrency behavior rather than assuming isolation guarantees.
Review the license before automating LocalCloud
The Public Preview License permits organization and team CI for non-production development and testing. Keep LocalCloud isolated and validate production behavior separately.