Compress releases #22
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |