Skip to content

Release Packages

Release Packages #17

Workflow file for this run

name: Release Packages
on:
workflow_dispatch:
release:
types: [published]
env:
CARGO_TERM_COLOR: always
REGISTRY: ghcr.io
IMAGE_OWNER: ferrohd
IMAGE_NAME: marecchia-tracker
jobs:
rs-toolchain:
name: ⚒️ Toolchain
runs-on: ubuntu-latest
steps:
- name: ⚒️ Toolchain Info
run: |
cargo --version --verbose
rustc --version
cargo clippy --version
rs-backend:
name: 🛥️ Marecchia Tracker Docker Image
needs: rs-toolchain
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🎭 Set up QEMU
uses: docker/setup-qemu-action@v3
- name: 🪛 Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: 👤 Log in to the GitHub Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: 🗄️ Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}
tags: |
latest
- name: 👷 Build and push Docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64, linux/arm64
context: "{{defaultContext}}:crates"
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
marecchia-core:
name: 📦 @marecchia/marecchia-core Release
needs: rs-toolchain
runs-on: ubuntu-latest
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 📦 Install wasm-pack
working-directory: crates
run: |
npm install -g wasm-pack
- name: 🎯 Install WASM Target
working-directory: crates
run: |
rustup target add wasm32-unknown-unknown
- name: 🔨 Build
working-directory: crates/marecchia-core
run: |
wasm-pack build --release --target web --scope marecchia
- name: 🪛 Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
registry-url: 'https://registry.npmjs.org'
- name: 📦 Publish Package
uses: JS-DevTools/npm-publish@v3
with:
token: ${{ secrets.NPM_TOKEN }}
package: ./crates/marecchia-core/pkg
access: public
- name: 💾 Save Artifact
uses: actions/upload-artifact@v4
with:
name: marecchia-core
path: ./crates/marecchia-core/pkg
marecchia-libraries:
name: 📦 ${{ matrix.packages.name }} Release
runs-on: ubuntu-latest
needs: marecchia-core
strategy:
fail-fast: true
matrix:
packages:
- name: '@marecchia/hlsjs'
path: marecchia/hlsjs
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🔽 Get WASM Artifact
uses: actions/download-artifact@v4
with:
name: marecchia-core
path: ./crates/marecchia-core/pkg
- name: 🗑️ Delete Artifact
uses: geekyeggo/delete-artifact@v5
with:
name: marecchia-core
- name: 🪛 Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
registry-url: 'https://registry.npmjs.org'
- name: 📦 Install Dependencies
working-directory: ${{ matrix.packages.path }}
run: |
npm install
- name: 🛠️ Build ${{ matrix.packages.name }}
working-directory: ${{ matrix.packages.path }}
run: |
npm build
- name: 📦 Publish Package
uses: JS-DevTools/npm-publish@v3
with:
token: ${{ secrets.NPM_TOKEN }}
package: ${{ matrix.packages.path }}
#- name: 🔼 Publish to NPM
# uses: JS-DevTools/npm-publish@v3
# with:
# package: ./marecchia
# token: ${{ secrets.NPM_TOKEN }}