github-desktop/.github/workflows/ci.yml
Markus Olsson b4e221d827 Splelling
2023-06-21 11:41:50 +02:00

124 lines
3.9 KiB
YAML

name: CI
on:
push:
branches:
- development
- __release-*
pull_request:
workflow_call:
inputs:
repository:
default: desktop/desktop
required: false
type: string
ref:
required: true
type: string
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref }}
submodules: recursive
- uses: actions/setup-node@v3
with:
node-version: 16.17.1
cache: yarn
- run: yarn
- run: yarn validate-electron-version
- run: yarn lint
- run: yarn validate-changelog
- name: Ensure a clean working directory
run: git diff --name-status --exit-code
build:
name: ${{ matrix.friendlyName }} ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
permissions: read-all
strategy:
fail-fast: false
matrix:
node: [16.17.1]
os: [macos-11, windows-2019]
arch: [x64, arm64]
include:
- os: macos-11
friendlyName: macOS
- os: windows-2019
friendlyName: Windows
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref }}
submodules: recursive
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: yarn
# This step can be removed as soon as official Windows arm64 builds are published:
# https://github.com/nodejs/build/issues/2450#issuecomment-705853342
- name: Get NodeJS node-gyp lib for Windows arm64
if: ${{ matrix.os == 'windows-2019' && matrix.arch == 'arm64' }}
run: .\script\download-nodejs-win-arm64.ps1 ${{ matrix.node }}
- name: Install and build dependencies
run: yarn
env:
npm_config_arch: ${{ matrix.arch }}
TARGET_ARCH: ${{ matrix.arch }}
- name: Build production app
run: yarn build:prod
env:
DESKTOP_OAUTH_CLIENT_ID: ${{ secrets.DESKTOP_OAUTH_CLIENT_ID }}
DESKTOP_OAUTH_CLIENT_SECRET:
${{ secrets.DESKTOP_OAUTH_CLIENT_SECRET }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_APPLICATION_CERT: ${{ secrets.APPLE_APPLICATION_CERT }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
npm_config_arch: ${{ matrix.arch }}
TARGET_ARCH: ${{ matrix.arch }}
- name: Prepare testing environment
if: matrix.arch == 'x64'
run: yarn test:setup
- name: Run unit tests
if: matrix.arch == 'x64'
run: yarn test:unit
- name: Run script tests
if: matrix.arch == 'x64'
run: yarn test:script
- name: Package production app
run: yarn package
env:
npm_config_arch: ${{ matrix.arch }}
WINDOWS_CERT_PFX: ${{ secrets.WINDOWS_CERT_PFX }}
WINDOWS_CERT_PASSWORD: ${{ secrets.WINDOWS_CERT_PASSWORD }}
- name: List assets
run: ls -R dist
shell: bash
- name: Upload macOS artifacts
uses: actions/upload-artifact@v3
if: ${{runner.os == 'macOS'}}
with:
name: ${{matrix.friendlyName}}-${{matrix.arch}}
path: dist/GitHubDesktop-${{matrix.arch}}.zip
if-no-files-found: error
- name: Upload Windows artifacts
uses: actions/upload-artifact@v3
if: ${{runner.os == 'Windows'}}
with:
name: ${{matrix.friendlyName}}-${{matrix.arch}}
path: |
dist/installer/GitHubDesktop-*.nupkg
dist/installer/GitHubDesktopSetup-${{matrix.arch}}.exe
dist/installer/GitHubDesktopSetup-${{matrix.arch}}.msi
if-no-files-found: error