Skip to content
Merged
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
43 changes: 37 additions & 6 deletions .github/workflows/ci.yml → .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,23 @@
# macOS : une seule application pour Apple silicon et Intel (universelle),
# en .dmg et en .app zippee, signee ad hoc (pas notarisee)
# - msrv : l'application testee avec sa Rust minimale (1.90, rust-version)
# Lance a chaque push et pull request, et a la main (Actions > CI > Run workflow).
# Les suites JS + Rust de non-regression restent dans tests.yml.
name: CI
# - release : pour une etiquette, les paquets publies dans sa release
# Lance a la main (Actions > Release > Run workflow), ou en poussant une
# etiquette v* (git tag v1.1.0 && git push origin v1.1.0) : les paquets sont
# alors aussi publies dans la release de cette etiquette (creee au besoin).
# Les suites JS + Rust de non-regression restent dans tests.yml, a chaque push.
name: Release (Linux, Windows, macOS)

on:
push:
pull_request:
workflow_dispatch:
push:
tags: ["v*"]

permissions:
contents: read

concurrency:
group: ci-${{ github.ref }}
group: release-${{ github.ref }}
cancel-in-progress: true

env:
Expand Down Expand Up @@ -221,3 +224,31 @@ jobs:
- name: Tests with the locked dependencies
working-directory: src-tauri
run: cargo test --locked

# pour une etiquette : les paquets de chaque systeme dans la release (le
# dist jocly complet n'y va pas : il est publie dans les releases de jocly2)
release:
name: Release
needs: [desktop, msrv]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: tabulon-*
path: out
merge-multiple: true

- name: Publication dans la release ${{ github.ref_name }}
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
TAG: ${{ github.ref_name }}
run: |
ls -l out
gh release view "$TAG" > /dev/null 2>&1 \
|| gh release create "$TAG" --title "Tabulon $TAG" \
--notes "Tabulon pour Linux (x86-64, ARM64 : AppImage, .deb, .rpm, executable seul), Windows (installeurs NSIS et MSI, exe portable) et macOS (application universelle, signee ad hoc)."
gh release upload "$TAG" out/* --clobber
9 changes: 6 additions & 3 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ copied as-is to the root of this repo (`tabulon/dist/`, **not**

```bash
# the jocly2 branch this Tabulon branch is developed against -- the same
# as JOCLY2_REF in .github/workflows/ci.yml and tests.yml (main)
# as JOCLY2_REF in .github/workflows/release.yml and tests.yml (main)
git clone -b main https://github.com/fhoudebert/jocly2.git
cd jocly2
npm install
Expand Down Expand Up @@ -991,8 +991,11 @@ with the target branch), then `check:dist`, `npm test` and `npm run
test:rust`. Before the workflow existed, a Rust test had gone stale for
weeks without anyone noticing.

`.github/workflows/ci.yml` builds the release binaries on the same triggers
(and by hand: Actions > CI > Run workflow). One job builds the jocly2 dist
`.github/workflows/release.yml` builds the release binaries by hand
(Actions > Release > Run workflow) or when a tag `v*` is pushed (`git tag
v1.1.0 && git push origin v1.1.0`); for a tag, a last job publishes the
packages in the GitHub release of that tag (created if needed; the full
jocly dist is not included, it is published with jocly2). One job builds the jocly2 dist
once and derives `dist-minimal/` from it (`TABULON_MODULES` in the workflow
chooses the embedded modules); then Linux (Ubuntu 22.04, the oldest glibc:
AppImage purged by `compil.sh`, `.deb`, `.rpm`; once on x86_64 and once on
Expand Down