Skip to content

Commit

Permalink
Experiment with a release workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthewFluet committed Dec 22, 2024
1 parent 18add0c commit 6ccc02e
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 0 deletions.
67 changes: 67 additions & 0 deletions .github/workflows/binary-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Binary Release

on:
workflow_dispatch:
inputs:
mlton-version:
required: true
type: string
workflow_call:
inputs:
mlton-version:
required: true
type: string

jobs:
binary-release:
strategy:
fail-fast: false
matrix:
include:
- runner: "ubuntu-24.04"
binary-release-suffix: ""
- runner: "macos-13"
binary-release-suffix: ""
- runner: "macos-14"
binary-release-suffix: ""
- runner: "windows-2022"
binary-release-suffix: ""

runs-on: ${{ matrix.runner }}
env:
MLTON_VERSION: ${{ inputs.mlton-version }}
MLTON_BINARY_RELEASE_SUFFIX: ${{ matrix.binary-release-suffix }}

defaults:
run:
shell: ${{ (startsWith(matrix.runner, 'windows') && 'msys2 {0}') || 'bash' }}

steps:
- name: Download and unpack source release
run: |
curl -O -L https://github.com/${{ github.repository }}/releases/download/on-${MLTON_VERSION}-release/mlton-${MLTON_VERSION}.src.tgz
tar xzf mlton-${MLTON_VERSION}.src.tgz
rm mlton-${MLTON_VERSION}.src.tgz
mv mlton-${MLTON_VERSION}/* .
rmdir mlton-${MLTON_VERSION}
- name: Install bootstrap dependencies
uses: MatthewFluet/mlton/.github/actions/install-bootstrap-dependencies@workflow-updates
with:
runner: ${{ matrix.runner }}
install-llvm: false

- name: Make binary release
run: |
PATH=$(pwd)/boot/bin:$PATH \
make \
OLD_MLTON_RUNTIME_ARGS="ram-slop 0.90" \
OLD_MLTON_COMPILE_ARGS="" \
MLTON_RUNTIME_ARGS="ram-slop 0.90" \
MLTON_COMPILE_ARGS="" \
make binary-release
- name: Upload binary release
run: gh release upload on-${MLTON_VERSION}-release mlton-${MLTON_VERSION}*.tgz --clobber
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32 changes: 32 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Release

on:
release:
types: [published]
workflow_dispatch:

jobs:
mlton-version:
runs-on: ubuntu-24.04
outputs:
mlton-version: ${{ steps.mlton-version.outputs.mlton-version }}
steps:
- name: mlton-version
id: mlton-version
run: |
MLTON_VERSION=$( echo '${{ github.ref_name }}' | sed -En 's;on-([0-9]{8})-release;\1;p')
if [ -n "${MLTON_VERSION}" ]; then echo "mlton-version=${MLTON_VERSION}" >> "$GITHUB_OUTPUT"; else echo "Unable to determine MLTON_VERSION"; exit 1; fi
source-release:
needs: mlton-version
uses: ./.github/workflows/source-release.yml
with:
mlton-version: ${{ needs.mlton-version.outputs.mlton-version }}
secrets: inherit

binary-release:
needs: [mlton-version, source-release]
uses: ./.github/workflows/binary-release.yml
with:
mlton-version: ${{ needs.mlton-version.outputs.mlton-version }}
secrets: inherit
33 changes: 33 additions & 0 deletions .github/workflows/source-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Source Release

on:
workflow_dispatch:
inputs:
mlton-version:
required: true
type: string
workflow_call:
inputs:
mlton-version:
required: true
type: string

jobs:
source-release:
runs-on: ubuntu-24.04
env:
MLTON_VERSION: ${{ inputs.mlton-version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: on-${{ inputs.mlton-version }}-release
fetch-depth: 0
- name: Install guide dependencies
uses: ./.github/actions/install-guide-dependencies
- name: Make source release
run: make MLTON_VERSION=${MLTON_VERSION} source-release
- name: Upload source release
run: gh release upload on-${MLTON_VERSION}-release mlton-${MLTON_VERSION}.src.tgz --clobber
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 comments on commit 6ccc02e

Please sign in to comment.