Skip to content

Compress releases

Compress releases #22

Workflow file for this run

name: "[dev] Validate & Build"
on:
push:
branches:
- "dev"
pull_request:
types: ["opened", "edited", "reopened", "synchronize", "ready_for_review", "review_requested"]
jobs:
# eslint Check
eslint:
name: eslint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: reviewdog/action-eslint@v1
with:
reporter: github-check
eslint_flags: src/
github_token: ${{ secrets.GITHUB_TOKEN }}
# Binary Build & Test (depends on eslint)
Sanity:
name: Build & Sanity Check - ${{ matrix.platform.os-name }}
needs: eslint
strategy:
matrix:
platform:
- os-name: linux-x86_64
runs-on: ubuntu-latest
- os-name: windows-x86_64
runs-on: windows-latest
- os-name: macOS-x86_64
runs-on: macOS-13
- os-name: macOS-aarch64
runs-on: macOS-latest
runs-on: ${{ matrix.platform.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Install pnpm 📥
uses: pnpm/action-setup@v4
with:
version: latest
- name: Install Node.js 📥
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: latest
- name: Install dependencies 📥
run: pnpm install
- name: Test ESM
run: pnpm run test-esm
- name: Build Binaries
run: pnpm run build
- name: Rename Float for Windows
run: mv ./build/float ./build/float.exe
if: matrix.platform.runs-on == 'windows-latest'
- name: Test Build Binaries
run: pnpm run test
- name: Make artifacts output dir
run: mkdir ./artifacts
- name: Archive binary
run: strip ./build/float && tar -czf ./artifacts/${{ matrix.platform.os-name }}.tar.gz -C ./build float
if: matrix.platform.runs-on != 'windows-latest'
- name: Archive binary (windows)
run: powershell -Command "Compress-Archive -Path './build/float.exe' -DestinationPath './artifacts/${{ matrix.platform.os-name }}.zip'"
if: matrix.platform.runs-on == 'windows-latest'
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform.runs-on }}
path: ./artifacts/
# Release to GitHub (runs after tests)
Release:
name: Release dev build on GitHub
needs: Sanity
runs-on: ubuntu-latest
steps:
- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: ./build/
merge-multiple: true
- name: Publish dev release on GitHub
uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
automatic_release_tag: dev
prerelease: true
title: Latest
files: build/*
# Release to DockerHub (runs after tests)
DockerHub:
name: Publish dev build to DockerHub
needs: Sanity
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build & Publish dev on DockerHub
uses: docker/build-push-action@v5
with:
push: true
tags: inrix/floatplane-downloader:dev
cache-from: type=gha
cache-to: type=gha,mode=max