Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion adbc_drivers_dev/templates/dev_issues.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
permissions:
issues: write
if: github.event.comment.body == 'take'
runs-on: ubuntu-latest
runs-on: ubuntu-slim
steps:
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
Expand Down
2 changes: 1 addition & 1 deletion adbc_drivers_dev/templates/dev_pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ permissions:
jobs:
pr_standard:
name: "Check PR"
runs-on: ubuntu-latest
runs-on: ubuntu-slim

steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
Expand Down
10 changes: 8 additions & 2 deletions adbc_drivers_dev/templates/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,12 @@ jobs:

- name: Validate
if: runner.os == 'Linux'
<% if secrets["validate"] %>
env:
<% for name, val in secrets["validate"].items() %>
<{name}>: ${{ secrets.<{val}> }}
<% endfor %>
<% endif %>
working-directory: go
run: |
set -a
Expand Down Expand Up @@ -361,9 +367,9 @@ jobs:

- name: Build Library
working-directory: go
<% if secrets and "build" in secrets %>
<% if secrets["build:release"] %>
env:
<% for name, val in secrets["build"].items() %>
<% for name, val in secrets["build:release"].items() %>
<{name}>: ${{ secrets.<{val}> }}
<% endfor %>
<% endif %>
Expand Down
25 changes: 24 additions & 1 deletion adbc_drivers_dev/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
# TOML does not support nulls
MORE_DEFAULTS = {
"environment": None,
"secrets": {},
}


Expand Down Expand Up @@ -91,6 +90,28 @@ def generate_workflows(args) -> int:

workflows = args.repository / ".github/workflows"

secrets = {
"build:release": {},
"test": {},
"validate": {},
}

if "secrets" in params:
defined_secrets = params.pop("secrets")

for secret, secret_value in defined_secrets.items():
if isinstance(secret_value, str):
for context in secrets:
secrets[context][secret] = secret_value
elif isinstance(secret_value, dict):
name = secret_value["secret"]
for scope in secret_value.get("contexts", secrets.keys()):
secrets[scope][secret] = name
else:
raise TypeError(
f"Secret {secret} must be a string or mapping, not {type(secret_value)}"
)

if params["lang"].get("go"):
template = env.get_template("test.yaml")
write_workflow(
Expand All @@ -99,6 +120,7 @@ def generate_workflows(args) -> int:
"go_test.yaml",
{
**params,
"secrets": secrets,
"pull_request_trigger_paths": [".github/workflows/go_test.yaml"],
"release": False,
"workflow_name": "Test",
Expand All @@ -110,6 +132,7 @@ def generate_workflows(args) -> int:
"go_release.yaml",
{
**params,
"secrets": secrets,
"pull_request_trigger_paths": [".github/workflows/go_release.yaml"],
"release": True,
"workflow_name": "Release",
Expand Down