Skip to content
Merged
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
131 changes: 18 additions & 113 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -160,61 +160,6 @@ jobs:
path: hypatia-${{ needs.prepare.outputs.version }}-${{ matrix.target }}.${{ matrix.archive }}
retention-days: 7

# ============================================================================
# Build Haskell Binary
# ============================================================================

build-haskell:
name: Build Haskell Registry
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [prepare]
defaults:
run:
working-directory: registry
steps:
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- name: Setup Haskell
uses: haskell-actions/setup@cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553 # v2.11.0
id: setup
with:
ghc-version: '9.6'
cabal-version: '3.10'
cabal-update: true

- name: Restore cached dependencies
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
id: cache
env:
key: ${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ env.key }}-plan-${{ hashFiles('registry/hypatia.cabal') }}
restore-keys: ${{ env.key }}-

- name: Build dependencies
run: cabal build all --only-dependencies

- name: Build registry
run: cabal build exe:registry

- name: Create distribution
run: |
mkdir -p dist
cp $(cabal list-bin registry) dist/
cp ../README.adoc ../LICENSE dist/
cd dist
tar -czvf ../hypatia-registry-${{ needs.prepare.outputs.version }}-x86_64-linux.tar.gz *

- name: Upload artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: hypatia-registry-x86_64-linux
path: registry/hypatia-registry-${{ needs.prepare.outputs.version }}-x86_64-linux.tar.gz
retention-days: 7

# ============================================================================
# Build Docker Images
# ============================================================================
Expand All @@ -223,7 +168,7 @@ jobs:
name: Build Container Images
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [prepare, build-rust, build-haskell]
needs: [prepare, build-rust]
permissions:
contents: read
packages: write
Expand All @@ -232,18 +177,15 @@ jobs:
strategy:
matrix:
component:
# Only the CLI image remains. The adapter/registry/engine images were
# retired: their Containerfiles were deleted (deploy/Containerfile.*),
# the Haskell `registry/` and Logtalk `engine/` sources removed, and the
# ghcr registry package archived (see note at end of file). The adapter
# still ships as the `forge-adapter` binary via build-rust; recover its
# image with `git show f2fe2df^:deploy/Containerfile.adapter` if wanted.
- name: cli
dockerfile: deploy/Containerfile
context: .
- name: adapter
dockerfile: deploy/Containerfile.adapter
context: .
- name: registry
dockerfile: deploy/Containerfile.registry
context: .
- name: engine
dockerfile: deploy/Containerfile.engine
context: .

steps:
- name: Checkout repository
Expand Down Expand Up @@ -307,7 +249,7 @@ jobs:
name: Create GitHub Release
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [prepare, build-rust, build-haskell, build-docker]
needs: [prepare, build-rust, build-docker]
if: ${{ !inputs.dry_run }}
permissions:
contents: write
Expand Down Expand Up @@ -336,16 +278,11 @@ jobs:

### Components
- **CLI** (`hyper`): Command-line interface for CI/CD operations
- **Adapters** (`forge-adapter`): Multi-forge adapters (GitHub, GitLab, Bitbucket)
- **Registry**: Type-safe rule registry (Haskell)
- **Engine**: Neurosymbolic rule engine (Logtalk)
- **Adapters** (`forge-adapter`): Multi-forge adapters (GitHub, GitLab, Bitbucket) — shipped as a binary in the release archives

### Docker Images
```bash
docker pull ghcr.io/${{ github.repository }}-cli:${{ needs.prepare.outputs.version }}
docker pull ghcr.io/${{ github.repository }}-adapter:${{ needs.prepare.outputs.version }}
docker pull ghcr.io/${{ github.repository }}-registry:${{ needs.prepare.outputs.version }}
docker pull ghcr.io/${{ github.repository }}-engine:${{ needs.prepare.outputs.version }}
```

### Installation
Expand Down Expand Up @@ -387,41 +324,6 @@ jobs:
with:
subject-path: 'release-assets/*'

# ============================================================================
# Publish Haskell Package
# ============================================================================

publish-hackage:
name: Publish to Hackage
runs-on: ubuntu-latest
timeout-minutes: 60
needs: [prepare, github-release]
defaults:
run:
working-directory: registry
steps:
- name: Checkout repository
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

- name: Setup Haskell
uses: haskell-actions/setup@cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553 # v2.11.0
with:
ghc-version: '9.6'
cabal-version: '3.10'
cabal-update: true

- name: Build source distribution
run: cabal sdist

- name: Publish to Hackage
if: env.HACKAGE_TOKEN != ''
run: |
cabal upload --publish dist-newstyle/sdist/*.tar.gz
env:
HACKAGE_TOKEN: ${{ secrets.HACKAGE_TOKEN }}
HACKAGE_USERNAME: ${{ secrets.HACKAGE_USERNAME }}
HACKAGE_PASSWORD: ${{ secrets.HACKAGE_TOKEN }}

build-and-push:
name: Build and Push
runs-on: ubuntu-latest
Expand All @@ -435,12 +337,9 @@ jobs:
fail-fast: false
matrix:
component:
# CLI-only: adapter/engine images retired (see build-docker note above).
- name: cli
dockerfile: deploy/Containerfile
- name: adapter
dockerfile: deploy/Containerfile.adapter
- name: engine
dockerfile: deploy/Containerfile.engine

steps:
- name: Checkout repository
Expand Down Expand Up @@ -491,5 +390,11 @@ jobs:
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

# NOTE: Haskell registry container removed — source directory deleted in f2fe2df
# The hypatia-registry package on ghcr.io is now archived
# NOTE: The adapter/registry/engine container images were retired; this workflow
# now builds only the CLI image.
# - registry (Haskell) + engine (SWI-Prolog/Logtalk): sources deleted (f2fe2df).
# Logtalk was an early idea for the rule engine, superseded by the native
# Elixir ruleset. The hypatia-registry package on ghcr.io is now archived.
# - adapter (Rust): still ships as the `forge-adapter` binary via build-rust;
# only its service image was dropped. Recover it if ever wanted again with
# `git show f2fe2df^:deploy/Containerfile.adapter`.
Loading