117 lines
3.1 KiB
YAML
117 lines
3.1 KiB
YAML
|
# SPDX-FileCopyrightText: 2022 Johannes Loher
|
||
|
#
|
||
|
# SPDX-License-Identifier: MIT
|
||
|
|
||
|
name: Release
|
||
|
|
||
|
on:
|
||
|
release:
|
||
|
types: [published]
|
||
|
|
||
|
env:
|
||
|
package_type: module
|
||
|
node_version: 16
|
||
|
|
||
|
jobs:
|
||
|
lint:
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout code
|
||
|
uses: actions/checkout@v2
|
||
|
|
||
|
- name: Install node
|
||
|
uses: actions/setup-node@v2
|
||
|
with:
|
||
|
node-version: ${{ env.node_version }}
|
||
|
|
||
|
- name: Cache Node.js modules
|
||
|
uses: actions/cache@v2
|
||
|
with:
|
||
|
path: .npm
|
||
|
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
|
||
|
restore-keys: |
|
||
|
${{ runner.OS }}-node-
|
||
|
${{ runner.OS }}-
|
||
|
|
||
|
- name: Install dependencies
|
||
|
run: npm ci --cache .npm --prefer-offline
|
||
|
|
||
|
- name: Lint
|
||
|
run: npm run lint
|
||
|
|
||
|
build:
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout code
|
||
|
uses: actions/checkout@v2
|
||
|
|
||
|
- name: Install node
|
||
|
uses: actions/setup-node@v2
|
||
|
with:
|
||
|
node-version: ${{ env.node_version }}
|
||
|
|
||
|
- name: Cache Node.js modules
|
||
|
uses: actions/cache@v2
|
||
|
with:
|
||
|
path: .npm
|
||
|
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
|
||
|
restore-keys: |
|
||
|
${{ runner.OS }}-node-
|
||
|
${{ runner.OS }}-
|
||
|
|
||
|
- name: Install dependencies
|
||
|
run: npm ci --cache .npm --prefer-offline
|
||
|
|
||
|
- name: Extract tag version number
|
||
|
id: get_version
|
||
|
uses: battila7/get-version-action@v2
|
||
|
|
||
|
- name: Substitute Manifest and Download Links For Versioned Ones
|
||
|
id: sub_manifest_link_version
|
||
|
uses: microsoft/variable-substitution@v1
|
||
|
with:
|
||
|
files: 'src/${{ env.package_type }}.json'
|
||
|
env:
|
||
|
version: ${{ steps.get_version.outputs.version-without-v }}
|
||
|
url: https://github.com/${{ github.repository }}
|
||
|
manifest: https://github.com/${{ github.repository }}/releases/latest/download/${{ env.package_type }}.json
|
||
|
download: https://github.com/${{ github.repository }}/releases/download/${{ github.event.release.tag_name }}/${{ env.package_type }}.zip
|
||
|
|
||
|
- name: Build
|
||
|
run: npm run build
|
||
|
|
||
|
- name: Archive production artifacts
|
||
|
uses: actions/upload-artifact@v2
|
||
|
with:
|
||
|
name: dist
|
||
|
path: dist
|
||
|
|
||
|
publish:
|
||
|
needs:
|
||
|
- lint
|
||
|
- build
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout code
|
||
|
uses: actions/checkout@v2
|
||
|
|
||
|
- name: Download production artifacts for publication
|
||
|
uses: actions/download-artifact@v2
|
||
|
with:
|
||
|
name: dist
|
||
|
path: dist
|
||
|
|
||
|
- name: Create zip file
|
||
|
working-directory: ./dist
|
||
|
run: zip -r ../${{ env.package_type }}.zip .
|
||
|
|
||
|
- name: Create release
|
||
|
id: create_version_release
|
||
|
uses: ncipollo/release-action@v1
|
||
|
with:
|
||
|
allowUpdates: true
|
||
|
name: ${{ github.event.release.name }}
|
||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
artifacts: './dist/${{ env.package_type }}.json, ./${{ env.package_type }}.zip'
|
||
|
body: ${{ github.event.release.body }}
|