Github
Learn how to integrate GitHub with Soda.
Publish Contracts on Merge
Overview
Action
name: Publish Updated Contracts on Merge
on:
push:
branches:
- main
jobs:
publish-contracts:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install soda-postgres
run: pip install -i https://pypi.dev.sodadata.io "soda>=4.0.0.dev1" -U
- name: Get all changed files
id: changed-files
uses: tj-actions/changed-files@v46
- name: List all changed files
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: |
for file in ${ALL_CHANGED_FILES}; do
echo "$file was changed"
done
- name: Debug environment variables
env:
SODA_CLOUD_API_KEY: ${{ secrets.SODA_CLOUD_API_KEY }}
SODA_CLOUD_API_SECRET: ${{ secrets.SODA_CLOUD_API_SECRET }}
run: |
echo "Environment variables status:"
echo "SODA_CLOUD_API_KEY: $(if [ -n "$SODA_CLOUD_API_KEY" ]; then echo "✅ Set (${#SODA_CLOUD_API_KEY} chars)"; else echo "❌ Not set"; fi)"
echo "SODA_CLOUD_API_SECRET: $(if [ -n "$SODA_CLOUD_API_SECRET" ]; then echo "✅ Set (${#SODA_CLOUD_API_SECRET} chars)"; else echo "❌ Not set"; fi)"
- name: Filter and publish contracts
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
SODA_CLOUD_CONFIG_FILE_PATH: soda-cloud.yaml
SODA_CLOUD_API_KEY: ${{ secrets.SODA_CLOUD_API_KEY }}
SODA_CLOUD_API_SECRET: ${{ secrets.SODA_CLOUD_API_SECRET }}
run: |
for file in ${ALL_CHANGED_FILES}; do
if [[ "$file" == contracts/*.yml || "$file" == contracts/*.yaml ]]; then
echo "Publishing $file"
echo "Executing: soda contract publish --contract \"$file\" --soda-cloud ${SODA_CLOUD_CONFIG_FILE_PATH}"
soda contract publish --contract "$file" --soda-cloud ${SODA_CLOUD_CONFIG_FILE_PATH}
else
echo "Skipping $file (not a contract)"
fi
done
What It Does
Required GitHub Secrets
Customization Options
Option
Description
Example output

Verify Contracts on Pull Request
Overview
Action
What It Does
Required Secrets
Customization Options
Option
Description
Example output


Last updated
Was this helpful?
