Skip to content

Update build-artifacts.yml #11

Update build-artifacts.yml

Update build-artifacts.yml #11

name: Build artifacts
on:
push:
branches-ignore:
- "dependabot/**"
tags:
- v*
issues:
types: opened, edited, closed
jobs:
build-front-end:
runs-on: ubuntu-latest
name: Build front end PWA from source
steps:
- name: Check out latest front end
uses: actions/checkout@v2
with:
repository: kikoeru-project/kikoeru-quasar
ref: unstable
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: 14
- run: npm install -g @quasar/cli
- run: npm ci
- run: quasar build && quasar build -m pwa
- name: 'Upload PWA'
uses: actions/upload-artifact@v2
with:
name: PWA-unstable
path: dist/pwa
if-no-files-found: error
- name: 'Upload SPA'
uses: actions/upload-artifact@v2
with:
name: SPA-unstable
path: dist/spa
if-no-files-found: error
build:
needs: build-front-end
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
node_version: 14
architecture: x64
pkg_target: node14-linux-x64
archive_name_prefix: kikoeru-linux-x64
- os: macos-latest
node_version: 14
architecture: x64
pkg_target: node14-macos-x64
archive_name_prefix: kikoeru-darwin-x64
- os: windows-latest
node_version: 14
architecture: x64
pkg_target: node14-win-x64
archive_name_prefix: kikoeru-win-x64
name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node_version }}
architecture: ${{ matrix.architecture }}
- run: npm install
- run: npm test
- name: check node-sqlite3 bindings
run: echo $(ls node_modules/sqlite3/lib/binding)
- name: 'Upload bindings'
uses: actions/upload-artifact@v2
with:
name: node-${{ matrix.node_version }}-${{ matrix.architecture }}-${{ matrix.os }}-binding
path: node_modules/sqlite3/lib/binding
if-no-files-found: error
# refs/tags/v1.2.3 => v1.2.3
# refs/heads/unstable => unstable
# refs/heads/feature/foo => foo
# refs/pull/421/merge => merge
- name: Get branch or tag name
id: source_name
run: echo ::set-output name=SOURCE_NAME::${GITHUB_REF##*/}
- name: Install pkg
run: npm install -g [email protected]
- name: Make empty dirs to suppress pkg warnings
run: mkdir -p config sqlite covers VoiceWork
- name: Download front-end artifact (PWA)
uses: actions/download-artifact@v2
with:
name: PWA-unstable
path: dist
- name: Check front-end artifacts
run: ls -al dist/
- name: Package to executables
run: pkg package.json -t ${pkg_target} --out-path package
env:
pkg_target: ${{ matrix.pkg_target }}
- name: Create archive
run: |
mkdir ${archive_name}
cp package/* ${archive_name}/
cp node_modules/sqlite3/lib/binding/*/*.node ${archive_name}/
env:
archive_name: ${{ matrix.archive_name_prefix }}-${{ steps.source_name.outputs.SOURCE_NAME }}
- name: 'Prepare release archive'
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.archive_name_prefix }}-${{ steps.source_name.outputs.SOURCE_NAME }}
path: ${{ matrix.archive_name_prefix }}-${{ steps.source_name.outputs.SOURCE_NAME }}
if-no-files-found: error
# build-docker:
# runs-on: ubuntu-18.04
# name: Prepare multiarch docker images
# if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/unstable') || startsWith(github.ref, 'refs/heads/stable')
# needs: build
# steps:
# - name: Login to DockerHub
# uses: docker/login-action@v1
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Set up QEMU for cross platform builds
# id: qemu
# uses: docker/setup-qemu-action@v1
# - name: Available platforms
# run: echo ${{ steps.qemu.outputs.platforms }}
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v1
# - name: Cache Docker layers
# uses: actions/cache@v2
# with:
# path: /tmp/.buildx-cache
# key: ${{ runner.os }}-buildx-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-buildx-
# # Convert to a valid docker tagname
# # refs/tags/v1.2.3 => v1.2.3
# # refs/heads/unstable => unstable
# # refs/heads/feature/foo => foo
# # refs/pull/421/merge => merge
# - name: Get branch or tag name
# id: source_name
# run: echo ::set-output name=SOURCE_NAME::${GITHUB_REF##*/}
# - uses: haya14busa/action-cond@v1
# name: Decide front-end version
# id: front_version
# with:
# cond: startsWith(github.ref, 'refs/tags/')
# if_true: ${{ steps.source_name.outputs.SOURCE_NAME }}
# if_false: "unstable"
# - name: Show conditional value from pervious step
# run: echo "${{ steps.front_version.outputs.value }}"
# - name: Build and push
# uses: docker/build-push-action@v2
# with:
# platforms: linux/amd64,linux/arm64,linux/arm/v7
# push: true
# pull: true
# tags: |
# muveex/kikoeru-express:${{ steps.source_name.outputs.SOURCE_NAME }}
# muveex/kikoeru-express:dev
# muveex/kikoeru:${{ steps.source_name.outputs.SOURCE_NAME }}
# muveex/kikoeru:dev
# cache-from: type=local,src=/tmp/.buildx-cache
# cache-to: type=local,dest=/tmp/.buildx-cache-new
# build-args:
# FRONTEND_VERSION=${{ steps.front_version.outputs.value }}
# Temp fix according to official document at
# # https://github.com/docker/build-push-action/blob/master/docs/advanced/cache.md#registry-cache
# # They are working to refactor with GitHub cache backend
# - name: Move cache
# run: |
# rm -rf /tmp/.buildx-cache
# mv /tmp/.buildx-cache-new /tmp/.buildx-cache
test-pkg-archive:
runs-on: ${{ matrix.os }}
name: Test pkg release archives on ${{ matrix.os }} x64
needs: [build]
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
archive_name_prefix: kikoeru-linux-x64
- os: macos-latest
archive_name_prefix: kikoeru-darwin-x64
- os: windows-latest
archive_name_prefix: kikoeru-win-x64
steps:
- name: Get branch or tag name
id: source_name
run: echo ::set-output name=SOURCE_NAME::${GITHUB_REF##*/}
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: ${{ matrix.archive_name_prefix }}-${{ steps.source_name.outputs.SOURCE_NAME }}
- name: List files
run: ls -al .
- name: Test pkg binary on *nix
if: ${{ matrix.os == 'ubuntu-18.04' || matrix.os == 'macos-10.15' }}
run: |
set -e
chmod +x ./kikoeru-express
nohup ./kikoeru-express &
sleep 10 && cat nohup.out 2>/dev/null &&
curl --fail -I http://localhost:8888/
pkill -TERM kikoeru-express
- name: Test pkg binary on Windows
if: ${{ matrix.os == 'windows-2019' }}
shell: pwsh
run: |
$PSVersionTable
Start-Job { ./kikoeru-express.exe }
sleep 5 &&
Get-Job | Receive-Job
sleep 5 &&
curl --fail -I http://localhost:8888/
Get-Job | Stop-Job
Get-job | Remove-Job
# test-docker-image:
# runs-on: ubuntu-latest
# name: Test Docker image on linux/amd64
# needs: build-docker
# container: 'muveex/kikoeru:dev'
# steps:
# - name: Show running process
# run: ps -a
# - name: Test
# run: |
# set -e
# apk update && apk add curl
# nohup node /usr/src/kikoeru/app.js &
# sleep 10 && cat nohup.out 2>/dev/null &&
# curl --fail -I http://localhost:8888/
# pkill -TERM node
publish:
runs-on: ubuntu-18.04
name: Prepare release draft
if: startsWith(github.ref, 'refs/tags/')
needs: [test-pkg-archive]
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
with:
path: artifacts
- name: Packup artifacts
run: cd artifacts && for i in */; do zip -r "${i%/}.zip" "$i"; done
- name: List artifacts
run: ls -al artifacts/
- name: Release
uses: softprops/action-gh-release@v1
with:
draft: true
files:
artifacts/kikoeru-*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}