split into multiple workflows #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish Release | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
check-last-commit-author: | |
runs-on: ubuntu-latest | |
outputs: | |
author: ${{ steps.get_author.outputs.author }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Get last commit author | |
id: get_author | |
run: echo "author=$(git log -1 --pretty=format:'%an')" >> $GITHUB_OUTPUT | |
build: | |
if: needs.check-last-commit-author.outputs.author != 'clj-mergetool Release Bot' | |
needs: check-last-commit-author | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
arch: [amd64, arm64] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up GraalVM | |
uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: '21' | |
distribution: 'graalvm' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
native-image-job-reports: 'true' | |
- name: Install Clojure CLI and Babashka | |
uses: DeLaGuardo/[email protected] | |
with: | |
cli: 'latest' | |
bb: 'latest' | |
- name: Run CI Task | |
run: clojure -T:build ci | |
- name: Archive build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: clj-mergetool-${{ matrix.os }}-${{ matrix.arch }} | |
path: target/clj-mergetool${{ matrix.os == 'windows-latest' && '.exe' || '' }} | |
release: | |
if: needs.check-last-commit-author.outputs.author == 'clj-mergetool Release Bot' | |
needs: check-last-commit-author | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download build artifacts for Linux amd64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-ubuntu-latest-amd64 | |
path: target/clj-mergetool-linux-amd64 | |
- name: Download build artifacts for Linux arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-ubuntu-latest-arm64 | |
path: target/clj-mergetool-linux-arm64 | |
- name: Download build artifacts for Windows amd64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-windows-latest-amd64 | |
path: target/clj-mergetool-windows-amd64.exe | |
- name: Download build artifacts for Windows arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-windows-latest-arm64 | |
path: target/clj-mergetool-windows-arm64.exe | |
- name: Download build artifacts for macOS amd64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-macos-latest-amd64 | |
path: target/clj-mergetool-macos-amd64 | |
- name: Download build artifacts for macOS arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: clj-mergetool-macos-latest-arm64 | |
path: target/clj-mergetool-macos-arm64 | |
- name: Download release notes | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-notes | |
path: RELEASE_NOTES.md | |
- name: Create Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
body_path: RELEASE_NOTES.md | |
files: | | |
target/clj-mergetool-linux-amd64 | |
target/clj-mergetool-linux-arm64 | |
target/clj-mergetool-windows-amd64.exe | |
target/clj-mergetool-windows-arm64.exe | |
target/clj-mergetool-macos-amd64 | |
target/clj-mergetool-macos-arm64 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |