Deploy
Deploy the Compiler app to Kubernetes via Helm or integrate into your CI/CD pipeline.
Step 1: Prerequisites
| Requirement | Description |
|---|---|
| Log10x License | Your license key (get one) |
| Helm | Helm CLI installed (for k8s deployment) |
| kubectl | Configured to access your cluster (for k8s deployment) |
| GitHub Token | Personal access token with repo scope (create one) |
| Docker Credentials | Registry credentials if pulling from private registries |
Step 2: Choose Deployment Method
The Helm chart deploys a CronJob that periodically compiles symbols from source code and container images.
Best for: Scheduled symbol compilation in production environments.
Run the compiler as a post-build step to ensure symbol libraries stay synchronized with source code changes.
Best for: Event-driven compilation triggered by code commits.
Step 3: Add Helm Repository
Step 4: Configure Application
Create a new file called my-compiler.yaml in your working directory. This Helm values file will be used in all subsequent steps.
Configuration is passed via environment variables and command-line arguments. See your CI platform's secrets management below.
Step 5: GitOps (optional)
Log10x uses GitOps to manage configuration centrally.
Setup steps:
- Fork the Config Repository
- Create a branch for your configuration
- Edit the app configuration to specify your source inputs and symbol outputs
Add GitHub credentials to your my-compiler.yaml:
jobs:
- name: compiler-job
# ... (previous config)
github:
config:
token: "YOUR-GITHUB-TOKEN"
repo: "YOUR-ACCOUNT/REPO-NAME"
branch: "my-compiler-config" # Optional: defaults to main
An Init Container pulls your config before each job run, ensuring always up-to-date configuration.
Step 6: Configure Secrets
Store sensitive credentials in Kubernetes Secrets rather than plain files.
Important: Only add secrets for source repositories you've configured in your Compiler app configuration.
Create the secret:
kubectl create secret generic compiler-credentials \
--from-literal=github-token=YOUR_GITHUB_TOKEN \
--from-literal=docker-username=YOUR_DOCKER_USERNAME \
--from-literal=docker-token=YOUR_DOCKER_TOKEN
Add secret references to your my-compiler.yaml:
jobs:
- name: compiler-job
# ... (previous config)
extraEnv:
# For GitHub source repositories
- name: GH_TOKEN
valueFrom:
secretKeyRef:
name: compiler-credentials
key: github-token
# For Docker registries
- name: DOCKER_USERNAME
valueFrom:
secretKeyRef:
name: compiler-credentials
key: docker-username
- name: DOCKER_TOKEN
valueFrom:
secretKeyRef:
name: compiler-credentials
key: docker-token
# For Artifactory repositories
# - name: ARTIFACTORY_TOKEN
# valueFrom:
# secretKeyRef:
# name: compiler-credentials
# key: artifactory-token
Configure secrets in your CI platform:
| Secret | Description |
|---|---|
GH_TOKEN |
GitHub PAT with repo scope |
DOCKER_USERNAME |
Container registry username |
DOCKER_TOKEN |
Container registry token |
ARTIFACTORY_TOKEN |
Artifactory token (if used) |
Go to Settings > Secrets and variables > Actions > Secrets and add the secrets above.
Go to Settings > CI/CD > Variables and add the secrets above.
Go to Manage Jenkins > Credentials and add credential IDs: github-token, docker-username, docker-token.
Step 7: Deploy
Create .github/workflows/compile.yml:
name: 10x Compile
on:
push:
branches: [main]
jobs:
compile:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run 10x Compiler
run: |
docker run --rm \
-v $(pwd):/work \
-e GH_TOKEN=${{ secrets.GH_TOKEN }} \
-e DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} \
-e DOCKER_TOKEN=${{ secrets.DOCKER_TOKEN }} \
ghcr.io/log-10x/pipeline-10x:latest \
'@github={"token": "${{ secrets.GH_TOKEN }}", "repo": "my-user/my-config"}' \
@apps/compiler
Create .gitlab-ci.yml:
stages:
- compile
tenx_compile:
stage: compile
image: docker:latest
services:
- docker:dind
script:
- docker run --rm \
-e GH_TOKEN=$GH_TOKEN \
-e DOCKER_USERNAME=$DOCKER_USERNAME \
-e DOCKER_TOKEN=$DOCKER_TOKEN \
ghcr.io/log-10x/pipeline-10x:latest \
'@github={"token": "'$GH_TOKEN'", "repo": "my-user/my-config"}' \
@apps/compiler
Create Jenkinsfile:
pipeline {
agent any
stages {
stage('TenX Compile') {
steps {
withCredentials([
string(credentialsId: 'github-token', variable: 'GH_TOKEN'),
string(credentialsId: 'docker-username', variable: 'DOCKER_USERNAME'),
string(credentialsId: 'docker-token', variable: 'DOCKER_TOKEN')
]) {
sh '''
docker run --rm \
-e GH_TOKEN=$GH_TOKEN \
-e DOCKER_USERNAME=$DOCKER_USERNAME \
-e DOCKER_TOKEN=$DOCKER_TOKEN \
ghcr.io/log-10x/pipeline-10x:latest \
'@github={"token": "'$GH_TOKEN'", "repo": "my-user/my-config"}' \
@apps/compiler
'''
}
}
}
}
}
Step 8: Verify
Verify no errors appear in the log file.
Check output files:
Verify symbol files were generated in your configured outputSymbolFolder and outputSymbolLibraryFile paths.
Quickstart Full Sample
log10xLicense: "YOUR-LICENSE-KEY-HERE"
jobs:
- name: compiler-job
runtimeName: my-compiler
schedule: "*/30 * * * *"
args:
- "@apps/compiler"
github:
config:
token: "YOUR-GITHUB-TOKEN"
repo: "YOUR-ACCOUNT/REPO-NAME"
branch: "my-compiler-config"
extraEnv:
- name: GH_TOKEN
valueFrom:
secretKeyRef:
name: compiler-credentials
key: github-token
- name: DOCKER_USERNAME
valueFrom:
secretKeyRef:
name: compiler-credentials
key: docker-username
- name: DOCKER_TOKEN
valueFrom:
secretKeyRef:
name: compiler-credentials
key: docker-token
See the Deploy step above for complete CI/CD configuration examples for GitHub Actions, GitLab CI, and Jenkins.