Build #29
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
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions | |
name: Build | |
on: | |
push: | |
branches: [ master, development, '**-RC' ] | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
matrix: | |
node-version: [20.x] | |
runtime: | |
- linux-x64 | |
- linux-armv7l | |
- linux-arm64 | |
- win-x64 | |
- win-arm64 | |
- osx-x64 | |
# `osx-arm64` disabled due to "macOS gatekeeper" | |
# See details in https://github.com/FreeTubeApp/FreeTube/pull/2113 | |
# - osx-arm64 | |
include: | |
- runtime: linux-x64 | |
os: ubuntu-latest | |
- runtime: linux-armv7l | |
os: ubuntu-latest | |
- runtime: linux-arm64 | |
os: ubuntu-latest | |
- runtime: osx-x64 | |
os: macOS-latest | |
# - runtime: osx-arm64 | |
# os: macOS-latest | |
- runtime: win-x64 | |
os: windows-latest | |
- runtime: win-arm64 | |
os: windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: "yarn" | |
- run: yarn run ci | |
- run: yarn run lint | |
- name: Get Version Number | |
id: getPackageInfo | |
uses: jaywcjlove/github-action-package@main | |
- name: Set Version Number Variable | |
id: versionNumber | |
uses: actions/github-script@v7 | |
env: | |
IS_DEV: ${{ contains(github.ref, 'development') }} | |
IS_RC: ${{ contains(github.ref, 'RC') }} | |
VERSION_NUMBER_NIGHTLY: ${{ steps.getPackageInfo.outputs.version }}-nightly-${{ github.run_number }} | |
VERSION_NUMBER_RC: ${{ steps.getPackageInfo.outputs.version }}-RC-${{ github.run_number }} | |
VERSION_NUMBER: ${{ steps.getPackageInfo.outputs.version }} | |
with: | |
result-encoding: string | |
script: | | |
if (${{ env.IS_DEV }}) { | |
return "${{ env.VERSION_NUMBER_NIGHTLY }}" | |
} else if (${{ env.IS_RC }}) { | |
return "${{ env.VERSION_NUMBER_RC }}" | |
} else { | |
return "${{env.VERSION_NUMBER }}" | |
} | |
# script: if ${{ env.IS_DEV }} then echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER_NIGHTLY }}" else echo "::set-output name=VERSION_NUMBER::${{ env.VERSION_NUMBER }}" fi | |
- name: Update package.json version | |
uses: jaywcjlove/github-action-package@main | |
with: | |
version: ${{ steps.versionNumber.outputs.result }} | |
- name: Install libarchive-tools | |
if: startsWith(matrix.os, 'ubuntu') | |
run: sudo apt -y install libarchive-tools; echo "Version Number ${{ toJson(job) }} ${{ toJson(needs) }}" | |
- name: Build x64 with Node.js ${{ matrix.node-version}} | |
if: contains(matrix.runtime, 'x64') | |
run: yarn run build | |
- name: Build ARMv7l with Node.js ${{ matrix.node-version}} | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
run: yarn run build:arm32 | |
- name: Build ARM64 with Node.js ${{ matrix.node-version}} | |
if: contains(matrix.runtime, 'arm64') | |
run: yarn run build:arm64 | |
- name: Upload Linux .zip x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_x64 | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.zip | |
- name: Upload Linux .7z x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_x64.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.7z | |
- name: Upload Linux .zip ARMv7l Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_armv7l | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.zip | |
- name: Upload Linux .7z ARMv7l Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_armv7l.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.7z | |
- name: Upload Linux .zip ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_arm64 | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.zip | |
- name: Upload Linux .7z ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_linux_portable_arm64.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.7z | |
- name: Upload .deb x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.deb | |
path: build/freetube_${{ steps.versionNumber.outputs.result }}_amd64.deb | |
- name: Upload .deb ARMv7l Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_armv7l.deb | |
path: build/freetube_${{ steps.versionNumber.outputs.result }}_armv7l.deb | |
- name: Upload .deb ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.deb | |
path: build/freetube_${{ steps.versionNumber.outputs.result }}_arm64.deb | |
- name: Upload AppImage x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.AppImage | |
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}.AppImage | |
- name: Upload AppImage ARMv7l Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_armv7l.AppImage | |
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}-armv7l.AppImage | |
- name: Upload AppImage ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.AppImage | |
path: build/FreeTube-${{ steps.versionNumber.outputs.result }}-arm64.AppImage | |
- name: Upload .rpm x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.rpm | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.x86_64.rpm | |
# rpm are not built for armv7l | |
- name: Upload .rpm ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_arm64.rpm | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.aarch64.rpm | |
- name: Upload Alpine .apk x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_amd64.apk | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.apk | |
- name: Upload Alpine .apk ARMv7l Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_armv7l.apk | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-armv7l.apk | |
- name: Upload Alpine .apk ARM64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_alpine_arm64.apk | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.apk | |
- name: Upload Pacman .pacman x64 Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
with: | |
name: freetube_${{ steps.versionNumber.outputs.result }}_amd64.pacman | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.pacman | |
# - name: Upload Web Build | |
# uses: actions/upload-artifact@v4 | |
# if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64') | |
# with: | |
# name: freetube_${{ steps.versionNumber.outputs.result }}_static_web | |
# path: dist/web | |
- name: Upload Windows x64 .exe Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-setup-x64.exe | |
path: build/freetube Setup ${{ steps.versionNumber.outputs.result }}.exe | |
- name: Upload Windows arm64 .exe Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-setup-arm64.exe | |
path: build/freetube Setup ${{ steps.versionNumber.outputs.result }}.exe | |
- name: Upload Windows x64 .zip Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-win-x64-portable | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-win.zip | |
- name: Upload Windows x64 .7z Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-win-x64-portable.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-win.7z | |
- name: Upload Windows arm64 .zip Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-win-arm64-portable | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-win.zip | |
- name: Upload Windows arm64 .7z Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-win-arm64-portable.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-win.7z | |
- name: Upload Windows x64 Portable Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-portable-x64.exe | |
path: build/freetube ${{ steps.versionNumber.outputs.result }}.exe | |
- name: Upload Windows arm64 Portable Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-portable-arm64.exe | |
path: build/freetube ${{ steps.versionNumber.outputs.result }}.exe | |
- name: Upload Mac x64 .dmg Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.dmg | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}.dmg | |
# - name: Upload Mac arm64 .dmg Artifact | |
# uses: actions/upload-artifact@v4 | |
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64') | |
# with: | |
# name: freetube-${{ steps.versionNumber.outputs.result }}-mac-arm64.dmg | |
# path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64.dmg | |
- name: Upload Mac x64 .zip Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.zip | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-mac.zip | |
- name: Upload Mac x64 .7z Artifact | |
uses: actions/upload-artifact@v4 | |
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64') | |
with: | |
name: freetube-${{ steps.versionNumber.outputs.result }}-mac-x64.7z | |
path: build/freetube-${{ steps.versionNumber.outputs.result }}-mac.7z | |
# - name: Upload Mac arm64 .zip Artifact | |
# uses: actions/upload-artifact@v4 | |
# if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64') | |
# with: | |
# name: freetube-${{ steps.versionNumber.outputs.result }}-mac-arm64.zip | |
# path: build/freetube-${{ steps.versionNumber.outputs.result }}-arm64-mac.zip |