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
85 changes: 85 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: CI

on:
pull_request:
branches:
- main

jobs:
branch-naming:
name: Validate branch name
runs-on: ubuntu-latest
steps:
- name: Check branch name format
run: |
BRANCH="${{ github.head_ref }}"
echo "Checking branch name: $BRANCH"

# Must start with a valid prefix
if [[ ! "$BRANCH" =~ ^(feature|bugfix|hotfix|chore|docs|refactor|test)/ ]]; then
echo "::error::Branch name must start with a valid prefix (feature/, bugfix/, hotfix/, chore/, docs/, refactor/, test/)"
exit 1
fi

# After prefix, must be lowercase kebab-case
SUFFIX="${BRANCH#*/}"
if [[ ! "$SUFFIX" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
echo "::error::Branch name after prefix must be lowercase kebab-case (e.g., feature/my-new-feature)"
exit 1
fi

echo "Branch name is valid."

format:
name: Check formatting
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Check formatting
run: lune run ./Submodules/luau-cicd/Scripts/CheckFormatting.luau

test:
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Install dependencies
run: wally install

- name: Run tests
run: lune run ./Scripts/RunTests.luau

analyze:
name: Static analysis
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Install dependencies
run: wally install

- name: Setup Lune typedefs
run: lune setup --no-update-luaurc

- name: Run static analysis
run: luau-lsp analyze --ignore "Source/Testable/init.luau" --ignore "Submodules/**" --platform standard .
21 changes: 0 additions & 21 deletions .github/workflows/format.yml

This file was deleted.

2 changes: 2 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2
Expand Down
92 changes: 79 additions & 13 deletions .github/workflows/release-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,50 +6,102 @@ on:
- release

jobs:
test:
name: Run tests
pr-title:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- name: Check PR title format
run: |
TITLE="${{ github.event.pull_request.title }}"
echo "Checking PR title: $TITLE"

# Must be exactly "Release X.Y.Z"
if [[ ! "$TITLE" =~ ^Release\ [0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::error::PR title must be exactly 'Release X.Y.Z' (e.g., 'Release 1.2.3')"
exit 1
fi

echo "PR title is valid."

diff-check:
name: Verify diff matches main
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2
- name: Check diff with main
run: |
git fetch origin main

- name: Install dependencies
run: wally install
# Get the diff between the PR branch and main
DIFF=$(git diff origin/main..HEAD)

- name: Run tests
run: lune run ./Scripts/RunTests.luau
if [ -n "$DIFF" ]; then
echo "::error::PR branch has changes that differ from main. The release branch must contain exactly what is in main."
echo "Diff:"
echo "$DIFF"
exit 1
fi

echo "PR branch matches main exactly."

format:
name: Check formatting
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Check formatting
run: lune run ./Scripts/CheckFormatting.luau
run: lune run ./Submodules/luau-cicd/Scripts/CheckFormatting.luau

test:
name: Run tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Install dependencies
run: wally install

- name: Run tests
run: lune run ./Scripts/RunTests.luau

analyze:
name: Static analysis
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Install dependencies
run: wally install

- name: Setup Lune typedefs
run: lune setup --no-update-luaurc

- name: Run static analysis
run: luau-lsp analyze --ignore "Source/Testable/init.luau" --platform standard .
run: luau-lsp analyze --ignore "Source/Testable/init.luau" --ignore "Submodules/**" --platform standard .

version:
name: Validate version
Expand All @@ -59,15 +111,29 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true

- name: Setup Rokit
uses: CompeyDev/setup-rokit@v0.1.2

- name: Check version update
run: lune run ./Scripts/EnsureProperVersionUpdate.luau
run: lune run ./Submodules/luau-cicd/Scripts/EnsureProperVersionUpdate.luau

- name: Check version match
run: lune run ./Scripts/CheckVersionMatch.luau
run: lune run ./Submodules/luau-cicd/Scripts/CheckVersionMatch.luau

- name: Check changelog entry
run: lune run ./Scripts/CheckChangelogVersion.luau
run: lune run ./Submodules/luau-cicd/Scripts/CheckChangelogVersion.luau

- name: Verify PR title matches VERSION
run: |
VERSION=$(cat VERSION | tr -d '[:space:]')
EXPECTED_TITLE="Release $VERSION"
ACTUAL_TITLE="${{ github.event.pull_request.title }}"

if [ "$EXPECTED_TITLE" != "$ACTUAL_TITLE" ]; then
echo "::error::PR title '$ACTUAL_TITLE' does not match VERSION file. Expected '$EXPECTED_TITLE'"
exit 1
fi

echo "PR title matches VERSION file."
24 changes: 0 additions & 24 deletions .github/workflows/test.yml

This file was deleted.

6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "Submodules/claude-md-luau"]
path = Submodules/claude-md-luau
url = git@github.com:horsenuggets/claude-md-luau.git
[submodule "Submodules/luau-cicd"]
path = Submodules/luau-cicd
url = git@github.com:horsenuggets/luau-cicd.git
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 0.1.0

### Changed

- Use luau-cicd submodule for CI/CD scripts instead of local copies

## 0.0.5

### Added
Expand Down
Loading