Skip to content

feat: ✨ add test and update-from-template workflows #134

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
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
36 changes: 36 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Test template creation

on:
push:
branches:
- main
pull_request:

# Least privilege permissions
permissions: read-all

jobs:
test-copier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683

- name: Set up uv
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba
with:
enable-cache: true

- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@9e48da27e184aa238fcb49f5db75469626d43adb # v2.1.9

- name: Install justfile
run: sudo apt install -y just

- name: Set Git user
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "[email protected]"

- name: Test and check template creation
run: just _tests
8 changes: 4 additions & 4 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,15 @@ update-template:

# Check the commit messages on the current branch that are not on the main branch
check-commits:
#!/bin/zsh
#!/usr/bin/env bash
branch_name=$(git rev-parse --abbrev-ref HEAD)
number_of_commits=$(git rev-list --count HEAD ^main)
if [[ ${branch_name} != "main" && ${number_of_commits} -gt 0 ]]
then
# If issue happens, try `uv tool update-shell`
uvx --from commitizen cz check --rev-range main..HEAD
else
echo "On `main` or current branch doesn't have any commits."
echo "On 'main' or current branch doesn't have any commits."
fi

# Check for spelling errors in files
Expand All @@ -48,7 +49,7 @@ check-spelling:

# Test and check that a Python package can be created from the template
test is_seedcase_project:
#!/bin/zsh
#!/usr/bin/env bash
test_name="test-python-package"
test_dir="$(pwd)/_temp/{{ is_seedcase_project }}/$test_name"
template_dir="$(pwd)"
Expand Down Expand Up @@ -103,7 +104,6 @@ test is_seedcase_project:

# Clean up any leftover and temporary build files
cleanup:
#!/bin/zsh
rm -rf _temp

# Build the website using Quarto
Expand Down
55 changes: 55 additions & 0 deletions template/.github/workflows/update-from-template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Update from template

on:
workflow_dispatch:
schedule:
# Every day at 3:30 at night.
- cron: '30 3 * * *'

# Limit token permissions for security
permissions: read-all

jobs:
update-from-template:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit

- name: Check out repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Install Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.13"

- name: Install dependencies
run: |
sudo apt install pipx
pipx ensurepath
pipx install uv rust-just copier

- name: Set User
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Pull request with updates from template
run: |
copier update --trust --defaults --overwrite
any_changes=$(git status --porcelain=v1 2>/dev/null | wc -l)
if [ "$any_changes" -eq 0 ]; then
echo "No updates from the template detected, and no changes found. Stopping and exiting."
exit 0
fi
git checkout -b chore/update-from-template
git add .
git commit -m "chore(sync): :hammer: update changes from template"
gh pr create \
--title "chore(sync): :hammer: update changes from template" \
--body "This PR is automatically generated by the 'update-from-template' workflow. It syncs the latest changes from the template repository with this repository."
7 changes: 4 additions & 3 deletions template/justfile.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,15 @@ build-website:

# Run checks on commits with non-main branches
check-commits:
#!/bin/zsh
#!/usr/bin/env bash
branch_name=$(git rev-parse --abbrev-ref HEAD)
number_of_commits=$(git rev-list --count HEAD ^main)
if [[ ${branch_name} != "main" && ${number_of_commits} -gt 0 ]]
then
uv run cz check --rev-range main..HEAD
# If issue happens, try `uv tool update-shell`
uvx --from commitizen cz check --rev-range main..HEAD
else
echo "Can't either be on ${branch_name} or have more than ${number_of_commits}."
echo "On 'main' or current branch doesn't have any commits."
fi

# Run basic security checks on the package
Expand Down
Loading