add os-triage. #1524
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: pipeline | |
on: | |
push: | |
branches: | |
- "*" | |
tags: | |
- "*" | |
pull_request: | |
types: [opened, reopened, synchronize] | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
# Allow one concurrent deployment | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
branch-naming-rules: | |
if: "!contains(github.event.head_commit.message , 'skip ci')" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check branch name | |
uses: deepakputhraya/action-branch-name@master | |
if: "!startsWith(github.ref, 'refs/tags/')" | |
with: | |
regex: '([a-z])+\/([#0-9a-z-])+' # Regex the branch should match. This example enforces grouping | |
allowed_prefixes: "feature,stable,fix" # All branches should start with the given prefix | |
ignore: main,master,develop # Ignore exactly matching branch names from convention | |
min_length: 5 # Min length of the branch name | |
max_length: 200 # Max length of the branch names | |
- name: Skipped | |
if: "startsWith(github.ref, 'refs/tags/')" | |
run: echo "skipped" | |
unit-test: | |
needs: [branch-naming-rules] | |
name: ${{ matrix.friendlyName }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
node: [20.9.0] | |
os: [ | |
# macos-latest, | |
# ubuntu-latest, | |
windows-latest | |
] | |
include: | |
- os: windows-latest | |
friendlyName: Unit Test - Windows | |
# - os: ubuntu-latest | |
# friendlyName: Unit Test - Ubuntu | |
# - os: macos-latest | |
# friendlyName: Unit Test - MacOS | |
steps: | |
- name: Check out Git repository | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install Node.js, NPM and Yarn | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
# - name: Get npm cache directory | |
# id: npm-cache-dir | |
# run: | | |
# echo "::set-output name=dir::$(npm config get cache)" | |
# - name: Cache node modules | |
# uses: actions/cache@v3 | |
# id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' | |
# with: | |
# path: ${{ steps.npm-cache-dir.outputs.dir }} | |
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
# restore-keys: | | |
# ${{ runner.os }}-node- | |
- name: Run Install | |
run: | | |
npm install | |
# - name: Run Lint | |
# run: | | |
# npm run lint:style | |
- name: Run Typecheck | |
run: | | |
npm run typecheck | |
# functional-test: | |
# needs: [unit-test] | |
# if: "!contains(github.event.head_commit.message, 'skip ci') && !startsWith(github.ref, 'refs/tags/v')" | |
# name: ${{ matrix.friendlyName }} | |
# runs-on: ${{ matrix.os }} | |
# env: | |
# NODE_ENV: development | |
# NODE_OPTIONS: "--max_old_space_size=4096" | |
# CYPRESS_CACHE_FOLDER: cypress/cache | |
# strategy: | |
# matrix: | |
# node: [18.3.0] | |
# os: [windows-latest] | |
# include: | |
# - os: windows-latest | |
# friendlyName: Functional Test - Windows | |
# steps: | |
# - name: Check out Git repository | |
# uses: actions/checkout@v3 | |
# - name: Install Node.js, NPM and Yarn | |
# uses: actions/setup-node@v3 | |
# with: | |
# node-version: ${{ matrix.node }} | |
# - name: Get npm cache directory | |
# id: npm-cache-dir | |
# run: | | |
# echo "::set-output name=dir::$(npm config get cache)" | |
# - name: Cache node modules | |
# uses: actions/cache@v3 | |
# id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' | |
# with: | |
# path: ${{ steps.npm-cache-dir.outputs.dir }} | |
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
# restore-keys: | | |
# ${{ runner.os }}-node- | |
# - name: Cache Cypress Binary | |
# id: cache-cypress-binary | |
# uses: actions/cache@v3 | |
# with: | |
# path: cypress/cache | |
# #key: cypress-binary-${{ hashFiles('package-lock.json') }} | |
# key: ${{ runner.os }}-cypress-${{ hashFiles('**/package-lock.json') }} | |
# - name: Run Install | |
# run: | | |
# npm install | |
# - name: Cypress run | |
# uses: cypress-io/github-action@v4 | |
# with: | |
# config: pageLoadTimeout=250000,baseUrl=http://localhost:3000 | |
# wait-on: "http://localhost:3000" | |
# install: false | |
# build: | | |
# npm run build | |
# start: | | |
# npm run preview:wait:ci | |
# command: | | |
# npm run test:ci | |
# record: true | |
# env: | |
# CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} | |
# CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# COMMIT_INFO_MESSAGE: ${{ github.event.inputs.title }} | |
# - name: Generate Reports | |
# if: always() | |
# run: | | |
# npm run posttest | |
# # # This workaround is required for running npm install | |
# # - name: Set permissions | |
# # run: | | |
# # chmod -R 777 ./ | |
# # - name: Run Cypress using Docker | |
# # id: cypress | |
# # continue-on-error: true | |
# # run: | | |
# # docker compose --profile testing up --exit-code-from cypress | |
# # - name: Generate Reports using Docker | |
# # continue-on-error: true | |
# # run: | | |
# # docker compose --profile reports up reports | |
# - name: Deploy Reports to gh-pages | |
# uses: JamesIves/github-pages-deploy-action@v4.2.5 | |
# with: | |
# branch: gh-pages | |
# folder: cypress/reports | |
release: | |
needs: [unit-test] | |
if: "!contains(github.event.head_commit.message, 'skip ci')" | |
name: ${{ matrix.friendlyName }} | |
runs-on: ${{ matrix.os }} | |
env: | |
NODE_ENV: develop | |
strategy: | |
matrix: | |
node: [20.9.0] | |
os: [ | |
# macos-latest, | |
# ubuntu-latest, | |
windows-latest | |
] | |
# os: [windows-latest] | |
include: | |
- os: windows-latest | |
friendlyName: Release - Windows | |
# - os: ubuntu-latest | |
# friendlyName: Release - Ubuntu | |
# - os: macos-latest | |
# friendlyName: Release - MacOS | |
steps: | |
- name: Set git to use LF | |
run: | | |
git config --global core.autocrlf false | |
git config --global core.eol lf | |
- name: Check out Git repository | |
uses: actions/checkout@v3 | |
- name: Install Node.js, NPM and Yarn | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node }} | |
# - name: Remove service contents that are not required for this OS build. | |
# if: ${{ contains(matrix.os, 'windows') }} | |
# run: ./services/prep-win32.ps1 -DOREMOVE | |
# - name: Remove service contents that are not required for this OS build. | |
# if: ${{ contains(matrix.os, 'macos') }} | |
# run: bash ./services/prep-darwin.sh true | |
# - name: Remove service contents that are not required for this OS build. | |
# if: ${{ contains(matrix.os, 'linux') }} | |
# run: bash ./services/prep-linux.sh true | |
# - name: Get npm cache directory | |
# id: npm-cache-dir | |
# run: | | |
# echo "::set-output name=dir::$(npm config get cache)" | |
# - name: Cache node modules | |
# uses: actions/cache@v3 | |
# id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' | |
# with: | |
# path: ${{ steps.npm-cache-dir.outputs.dir }} | |
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
# restore-keys: | | |
# ${{ runner.os }}-node- | |
- name: Run Install | |
run: | | |
npm install | |
- name: Update node-gyp | |
if: ${{ contains(matrix.os, 'windows-latest') }} | |
run: ./.github/workflows/install-node-gyp.ps1 | |
- name: install dmg-license | |
if: ${{ contains(matrix.os, 'macos') }} | |
run: npm i dmg-license | |
# - name: Install Snapcraft | |
# uses: samuelmeuli/action-snapcraft@v1 | |
# # Only install Snapcraft on Ubuntu | |
# if: startsWith(matrix.os, 'ubuntu') | |
# with: | |
# # Log in to Snap Store | |
# snapcraft_token: ${{ secrets.SNAPCRAFT_TOKEN }} | |
# - name: Build/release Electron app | |
# uses: typerefinery-ai/action-electron-builder@v1 | |
# env: | |
# DEBUG: electron-builder,electron-builder:* | |
# with: | |
# # GitHub token, automatically provided to the action | |
# # (No need to define this secret in the repo settings) | |
# github_token: ${{ secrets.GITHUB_TOKEN }} | |
# # always publish | |
# args: "-p always -c.releaseInfo.releaseName=\"${{ github.ref }}\"" | |
# use_vue_cli: true | |
# # If the commit is tagged with a version (e.g. "v1.0.0"), | |
# # release the app after building | |
# release: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
- name: Build electron | |
run: | | |
npm run app:build | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# - name: Upload Artifact | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: release_on_${{ matrix. os }} | |
# path: dist_electron/ | |
# retention-days: 5 | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
fail_on_unmatched_files: false | |
generate_release_notes: true | |
files: | | |
dist_electron/*.exe | |
dist_electron/*.exe.blockmap | |
dist_electron/*.AppImage | |
dist_electron/*.snap | |
dist_electron/*-mac.zip | |
dist_electron/*.dmg | |
dist_electron/*.dmg.blockmap | |
dist_electron/latest*.yml |