Skip to content

release

release #26

Workflow file for this run

name: release
on:
workflow_dispatch:
inputs:
version:
description: "Which tag do you want to release against?"
type: string
required: true
permissions:
contents: write
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: macos-latest
platform: macos
arch: aarch64
- os: ubuntu-24.04-arm
platform: linux
arch: aarch64
- os: ubuntu-latest
platform: linux
arch: x86_64
steps:
- name: "checkout project"
uses: actions/checkout@v5
with:
ref: ${{ inputs.version }}
- name: "find latest version of janet"
uses: oprypin/find-latest-tag@v1
with:
repository: janet-lang/janet
releases-only: true
prefix: 'v'
id: janet-ver
- name: "set prefix"
run: echo "PREFIX=$GITHUB_WORKSPACE/.janet" >> $GITHUB_ENV
shell: bash
- name: "set paths"
run: |
echo "$PREFIX/bin" >> $GITHUB_PATH
echo "JANET_HEADERPATH=$PREFIX/include" >> $GITHUB_ENV
echo "JANET_BINPATH=$PREFIX/bin" >> $GITHUB_ENV
echo "JANET_LIBPATH=$PREFIX/lib" >> $GITHUB_ENV
echo "JANET_MANPATH=$PREFIX/man" >> $GITHUB_ENV
echo "JANET_SRCPATH=$PREFIX/src" >> $GITHUB_ENV
echo "JANET_PATH=$PREFIX" >> $GITHUB_ENV
shell: bash
- name: "make directories"
run: |
mkdir -p $PREFIX
mkdir -p $JANET_HEADERPATH
mkdir -p $JANET_BINPATH
mkdir -p $JANET_LIBPATH
mkdir -p $JANET_MANPATH
mkdir -p $JANET_SRCPATH
mkdir -p .jeep
mkdir -p predoc-${{ inputs.version }}
shell: bash
- name: "download janet"
run: curl -LO https://github.com/janet-lang/janet/archive/refs/tags/${{ steps.janet-ver.outputs.tag }}.tar.gz
shell: bash
- name: "extract janet"
run: tar -xzf ${{ steps.janet-ver.outputs.tag }}.tar.gz --strip-components=1 -C $JANET_SRCPATH
shell: bash
- name: "make janet"
run: cd $JANET_SRCPATH && make install
shell: bash
- name: "return to workspace directory"
run: cd $GITHUB_WORKSPACE
shell: bash
- name: "download jeep"
run: git clone --depth=1 https://github.com/pyrmont/jeep.git .jeep
shell: bash
- name: "install jeep"
run: cd .jeep && janet --install .
shell: bash
- name: "return to workspace directory"
run: cd $GITHUB_WORKSPACE
shell: bash
- name: "run tests"
run: jeep test -R
shell: bash
- name: "make quickbin"
run: jeep quickbin lib/cli.janet predoc
shell: bash
- name: "copy files"
run: cp predoc man/man1/predoc.1 man/man7/predoc.7 LICENSE predoc-${{ inputs.version }}
- name: "make tarball"
run: tar -czf predoc-${{ inputs.version }}-${{ matrix.platform }}-${{ matrix.arch }}.tar.gz predoc-${{ inputs.version }}
shell: bash
- name: "upload artifact"
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.os }}
path: predoc-${{ inputs.version }}-${{ matrix.platform }}-${{ matrix.arch }}.tar.gz
virtual-build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- os: freebsd
version: "14.0"
arch: x86-64
target: freebsd14-x86_64
- os: freebsd
version: "14.0"
arch: arm64
target: freebsd14-aarch64
steps:
- name: "checkout project"
uses: actions/checkout@v5
with:
ref: ${{ inputs.version }}
- name: "find latest version of janet"
uses: oprypin/find-latest-tag@v1
with:
repository: janet-lang/janet
releases-only: true
prefix: 'v'
id: janet-ver
- name: "set prefix"
run: echo "PREFIX=$GITHUB_WORKSPACE/.janet" >> $GITHUB_ENV
shell: bash
- name: "set paths"
run: |
echo "$PREFIX/bin" >> $GITHUB_PATH
echo "JANET_HEADERPATH=$PREFIX/include" >> $GITHUB_ENV
echo "JANET_BINPATH=$PREFIX/bin" >> $GITHUB_ENV
echo "JANET_LIBPATH=$PREFIX/lib" >> $GITHUB_ENV
echo "JANET_MANPATH=$PREFIX/man" >> $GITHUB_ENV
echo "JANET_SRCPATH=$PREFIX/src" >> $GITHUB_ENV
echo "JANET_PATH=$PREFIX" >> $GITHUB_ENV
shell: bash
- name: "make directories"
run: |
mkdir -p $PREFIX
mkdir -p $JANET_HEADERPATH
mkdir -p $JANET_BINPATH
mkdir -p $JANET_LIBPATH
mkdir -p $JANET_MANPATH
mkdir -p $JANET_SRCPATH
mkdir -p .jeep
mkdir -p predoc-${{ inputs.version }}
shell: bash
- name: "download janet"
run: curl -LO https://github.com/janet-lang/janet/archive/refs/tags/${{ steps.janet-ver.outputs.tag }}.tar.gz
shell: bash
- name: "download jeep"
run: git clone --depth=1 https://github.com/pyrmont/jeep.git .jeep
shell: bash
- name: "extract janet"
run: tar -xzf ${{ steps.janet-ver.outputs.tag }}.tar.gz --strip-components=1 -C $JANET_SRCPATH
shell: bash
- name: "make janet"
uses: cross-platform-actions/action@v0.27.0
with:
environment_variables: "PREFIX JANET_HEADERPATH JANET_BINPATH JANET_LIBPATH JANET_MANPATH JANET_SRCPATH JANET_PATH"
operating_system: ${{ matrix.os }}
architecture: ${{ matrix.architecture }}
version: ${{ matrix.version }}
shell: bash
run: |
sudo pkg install -y gmake
cd $JANET_SRCPATH && gmake install
export PATH="$PREFIX"/bin:"$PATH"
cd $GITHUB_WORKSPACE
cd .jeep && janet --install .
cd $GITHUB_WORKSPACE
jeep test -R
jeep quickbin lib/cli.janet predoc
- name: "copy files"
run: cp predoc man/man1/predoc.1 man/man7/predoc.7 LICENSE predoc-${{ inputs.version }}
- name: "make tarball"
run: tar -czf predoc-${{ inputs.version }}-${{ matrix.target }}.tar.gz predoc-${{ inputs.version }}
shell: bash
- name: "upload artifact"
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.target }}
path: predoc-${{ inputs.version }}-${{ matrix.target }}.tar.gz
release:
needs: [build, virtual-build]
runs-on: ubuntu-latest
steps:
- name: "download artifacts"
uses: actions/download-artifact@v5
with:
path: ./artifacts
merge-multiple: true
- name: "draft the release"
uses: softprops/action-gh-release@v2
with:
draft: true
files: ./artifacts/*
overwrite_files: false
tag_name: ${{ inputs.version }}