Skip to content

WIP: single-commit release flow #423

WIP: single-commit release flow

WIP: single-commit release flow #423

Workflow file for this run

name: Build
on:
push:
branches:
- master
pull_request:
schedule:
# 12:00AM on the first of every month
- cron: "0 0 1 * *"
jobs:
setup:
runs-on: ubuntu-22.04
timeout-minutes: 5
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install clojure tools
uses: DeLaGuardo/setup-clojure@main
with:
lein: latest
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Warm deps cache
run: for i in {1..10}; do lein deps :tree && break; done
test:
needs: setup
strategy:
matrix:
jdk: ["21"]
runs-on: ubuntu-22.04
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/project.clj') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Prepare java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.jdk }}
- name: Install clojure tools
uses: DeLaGuardo/setup-clojure@main
with:
lein: latest
- run: lein do clean, compile :all, doo node node once
all-pr-checks:
runs-on: ubuntu-22.04
timeout-minutes: 5
needs: test
steps:
- run: echo "All tests pass!"
deploy:
runs-on: ubuntu-22.04
timeout-minutes: 10
needs: all-pr-checks
steps:
- uses: actions/checkout@v4
- run: |
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
brew install clojure strip-nondeterminism
clojure -T:build build :release true :source-date-epoch 1749762342
- uses: actions/upload-artifact@v4
with:
name: ctim-jar
path: target/*.jar
if-no-files-found: error
compression-level: 0
attest:
runs-on: ubuntu-22.04
timeout-minutes: 10
needs: deploy
permissions:
#id-token: write
contents: read
#attestations: write
steps:
- uses: actions/checkout@v4
- name: Download jar
uses: actions/download-artifact@v4
with:
name: ctim-jar
path: ./target
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-path: 'PATH/TO/ARTIFACT'