Merge pull request #2838 from bemusementpark/add-download-link #2493
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 script will build session production binaries anytime a branch is updated | |
name: Session Build Binaries | |
on: | |
push: | |
branches: | |
- clearnet | |
- unstable | |
pull_request: | |
branches: | |
- clearnet | |
- unstable | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-2022, macos-11, ubuntu-20.04] | |
env: | |
SIGNAL_ENV: production | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- run: git config --global core.autocrlf false | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
# we stay on v2 even if there is a v3 because the v3 logic is less flexible for our usecase | |
- name: Install node | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Cache Desktop node_modules | |
id: cache-desktop-modules | |
uses: actions/cache@v3 | |
if: runner.os != 'Windows' | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ hashFiles('package.json', 'yarn.lock', 'patches/**') }} | |
# Not having this will break the windows build because the PATH won't be set by msbuild. | |
- name: Add msbuild to PATH | |
uses: microsoft/[email protected] | |
if: runner.os == 'Windows' | |
- name: Setup node for windows | |
if: runner.os == 'Windows' | |
run: | | |
npm install --global yarn node-gyp@latest | |
npm config set msvs_version 2022 | |
- name: Install Desktop node_modules | |
if: steps.cache-desktop-modules.outputs.cache-hit != 'true' | |
run: yarn install --frozen-lockfile --network-timeout 600000 --force | |
- name: Generate and concat files | |
run: yarn build-everything | |
- name: Lint Files | |
# no need to lint files on all platforms. Just do it once on the quicker one | |
if: runner.os == 'Linux' | |
run: yarn lint-full | |
- name: Unit Test | |
run: yarn test | |
- name: Build windows production binaries | |
if: runner.os == 'Windows' | |
run: node_modules\.bin\electron-builder --config.extraMetadata.environment=%SIGNAL_ENV% --publish=never --config.directories.output=release | |
- name: Build mac production binaries | |
if: runner.os == 'macOS' | |
run: | | |
source ./build/setup-mac-certificate.sh | |
$(yarn bin)/electron-builder --config.extraMetadata.environment=$SIGNAL_ENV --config.mac.bundleVersion=${{ github.ref }} --publish=never --config.directories.output=release | |
env: | |
MAC_CERTIFICATE: ${{ secrets.MAC_CERTIFICATE }} | |
MAC_CERTIFICATE_PASSWORD: ${{ secrets.MAC_CERTIFICATE_PASSWORD }} | |
SIGNING_APPLE_ID: ${{ secrets.SIGNING_APPLE_ID }} | |
SIGNING_APP_PASSWORD: ${{ secrets.SIGNING_APP_PASSWORD }} | |
SIGNING_TEAM_ID: ${{ secrets.SIGNING_TEAM_ID }} | |
- name: Build linux production binaries | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get install -y rpm | |
yarn build-release | |
- name: Remove unpacked files | |
run: | | |
ls -d -- */ | xargs -I{} echo "Removing {}" | |
ls -d -- */ | xargs -I{} rm -rf {} | |
shell: bash | |
working-directory: ./release/ | |
- name: Remaining files | |
run: ls . | |
shell: bash | |
working-directory: ./release/ | |
- name: Upload Production Artifacts | |
uses: actions/upload-artifact@v1 | |
with: | |
name: ${{ runner.OS }}-production | |
path: release |