Skip to content
Open

gha #35

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
40 changes: 40 additions & 0 deletions .github/actions/setup-leiningen/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: 'Setup Leiningen'
description: 'Install system dependencies, JDK, and Leiningen for Clojure projects'
inputs:
java-version:
description: 'Java version to set up'
required: false
default: '17'
install-deps:
description: 'Whether to install Leiningen dependencies (lein deps and lein pom)'
required: false
default: 'false'
runs:
using: 'composite'
steps:
- name: Install system dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y gzip

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ inputs.java-version }}

- name: Install Leiningen
shell: bash
run: |
wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should pin this version. Consider using https://github.com/DeLaGuardo/setup-clojure

chmod +x lein
sudo mv lein /usr/local/bin/
lein version

- name: Install Leiningen dependencies
if: inputs.install-deps == 'true'
shell: bash
run: |
lein deps

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step is redundant. It will run implicitly as part of lein pom.

lein pom
66 changes: 66 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: CI

on:
push:
branches:
- '**'
tags:
- '**'
pull_request:
branches:
- '**'

jobs:
build:
name: "Build & Test"
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Leiningen
uses: ./.github/actions/setup-leiningen

- name: Run tests
run: lein test

test:
name: "Test (develop branch)"
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Leiningen
uses: ./.github/actions/setup-leiningen
with:
install-deps: 'true'

- name: Run tests
run: lein test

publish:
name: "Publish to Clojars"
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Leiningen
uses: ./.github/actions/setup-leiningen
with:
install-deps: 'true'

- name: Run tests
run: lein test

- name: Deploy to Clojars
env:
CLOJARS_USERNAME: ${{ vars.CLOJARS_USERNAME }}
CLOJARS_PASSWORD: ${{ secrets.CLOJARS_PASSWORD}}
Copy link

Copilot AI Dec 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing space before the closing braces in the secrets expression. Should be '${{ secrets.CLOJARS_PASSWORD }}' for consistency with the CLOJARS_USERNAME variable on line 118.

Suggested change
CLOJARS_PASSWORD: ${{ secrets.CLOJARS_PASSWORD}}
CLOJARS_PASSWORD: ${{ secrets.CLOJARS_PASSWORD }}

Copilot uses AI. Check for mistakes.
run: lein deploy