Files
flipper/.github/workflows/release.yml
Pascal Hartig 9451911709 Fix windows build (for real this time?) (#3289)
Summary:
This previous attempt didn't work. Not even sure what happens now, it seems to just return the result of a boolean evaluation? Cool.

Still haven't verified that this works in the release build but noticed that we do effectively the same in the build step. By upgrading to the same revision of the action we use and then switching from `&&` to simply `;`, we can be reasonably sure that this will work now.

The alternative would be to switch to `pwsh` which appears to be the new name. `powershell` is the default shell and seems to be an older version without support for `&&`. I honestly never want to touch this or read about it again, so let's go with the simpler option.

Pull Request resolved: https://github.com/facebook/flipper/pull/3289

Reviewed By: aigoncharov

Differential Revision: D33582853

Pulled By: passy

fbshipit-source-id: 7c70ff360a5c327139b6ecb5463e85883a2caf9d
2022-01-14 06:30:38 -08:00

259 lines
7.4 KiB
YAML

name: Release
on:
push:
branches:
- main
paths:
- 'desktop/package.json'
jobs:
release:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.tag-version-commit.outputs.tag }}
steps:
- uses: passy/extract-version-commit@v1.0.0
id: extract-version-commit
with:
version_regex: '^Flipper Release: v([0-9]+\.[0-9]+\.[0-9]+)(?:\n|$)'
- uses: actions/checkout@v2
if: ${{ steps.extract-version-commit.outputs.commit != ''}}
with:
ref: ${{ steps.extract-version-commit.outputs.commit }}
- name: Tag version commit
if: ${{ steps.extract-version-commit.outputs.commit != ''}}
id: tag-version-commit
uses: passy/tag-version-commit@v1.2.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ steps.extract-version-commit.outputs.commit }}
version_tag_prefix: 'v'
version_assertion_command: 'grep -q "\"version\": \"$version\"" desktop/package.json'
- name: Create release
if: ${{ steps.tag-version-commit.outputs.tag != '' }}
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag-version-commit.outputs.tag }}
release_name: ${{ steps.tag-version-commit.outputs.tag }}
body: |
See https://github.com/facebook/flipper/blob/main/desktop/static/CHANGELOG.md
for full notes.
draft: false
prerelease: false
build-mac:
needs:
- release
runs-on: macos-latest
env:
desktop-directory: ./desktop
steps:
- uses: actions/checkout@v2
with:
ref: ${{ needs.release.outputs.tag }}
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 10
max_attempts: 3
command: cd ${{env.desktop-directory}} && yarn
- name: Build
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 30
max_attempts: 3
command: cd ${{env.desktop-directory}} && yarn build --mac --mac-dmg
- name: Upload
uses: actions/upload-artifact@v1
with:
name: 'Flipper-mac.dmg'
path: 'dist/Flipper-mac.dmg'
build-linux:
needs:
- release
runs-on: ubuntu-latest
env:
desktop-directory: ./desktop
steps:
- uses: actions/checkout@v2
with:
ref: ${{ needs.release.outputs.tag }}
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 10
max_attempts: 3
command: cd ${{env.desktop-directory}} && yarn
- name: Build
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 30
max_attempts: 3
command: cd ${{env.desktop-directory}} && yarn build --linux
- name: Upload Linux
uses: actions/upload-artifact@v1
with:
name: 'Flipper-linux.zip'
path: 'dist/Flipper-linux.zip'
build-win:
needs:
- release
runs-on: windows-latest
env:
desktop-directory: ./desktop
steps:
- uses: actions/checkout@v2
with:
ref: ${{ needs.release.outputs.tag }}
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 10
max_attempts: 3
shell: pwsh
command: cd ${{env.desktop-directory}}; yarn
- name: Build
uses: nick-invision/retry@v2.6.0
with:
timeout_minutes: 30
max_attempts: 3
shell: pwsh
command: cd ${{env.desktop-directory}}; yarn build --win
- name: Upload Windows
uses: actions/upload-artifact@v1
with:
name: 'Flipper-win.zip'
path: 'dist/Flipper-win.zip'
build-flipper-server:
needs:
- release
runs-on: ubuntu-latest
env:
desktop-directory: ./desktop
steps:
- uses: actions/checkout@v2
with:
ref: ${{ needs.release.outputs.tag }}
- uses: actions/setup-node@v1
with:
node-version: '14.x'
- name: Install
uses: nick-invision/retry@v2.0.0
with:
timeout_minutes: 10
max_attempts: 3
command: cd ${{env.desktop-directory}} && yarn
- name: Build
run: cd ${{env.desktop-directory}} && yarn build:flipper-server
- name: Upload flipper-server
uses: actions/upload-artifact@v1
with:
name: 'flipper-server.tgz'
path: 'dist/flipper-server.tgz'
publish:
needs:
- build-win
- build-linux
- build-mac
- build-flipper-server
- release
runs-on: ubuntu-latest
steps:
- name: Download Mac
if: ${{ needs.release.outputs.tag != '' }}
uses: actions/download-artifact@v1
with:
name: 'Flipper-mac.dmg'
path: 'Flipper-mac.dmg'
- name: Download Linux
if: ${{ needs.release.outputs.tag != '' }}
uses: actions/download-artifact@v1
with:
name: 'Flipper-linux.zip'
path: 'Flipper-linux.zip'
- name: Download Windows
if: ${{ needs.release.outputs.tag != '' }}
uses: actions/download-artifact@v1
with:
name: 'Flipper-win.zip'
path: 'Flipper-win.zip'
- name: Download Flipper Server
if: ${{ needs.release.outputs.tag != '' }}
uses: actions/download-artifact@v1
with:
name: 'flipper-server.tgz'
path: 'flipper-server.tgz'
- name: GitHub Upload Release Artifacts
if: ${{ needs.release.outputs.tag != '' }}
uses: passy/github-upload-release-artifacts-action@v2.2.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
created_tag: ${{ needs.release.outputs.tag }}
args: Flipper-mac.dmg/Flipper-mac.dmg Flipper-linux.zip/Flipper-linux.zip Flipper-win.zip/Flipper-win.zip flipper-server.tgz/flipper-server.tgz
- name: Set up npm token
run: echo "//registry.yarnpkg.com/:_authToken=${{ secrets.FLIPPER_NPM_TOKEN }}" >> ~/.npmrc
- name: Publish flipper-server on NPM
run: |
tar zxvf flipper-server.tgz
cd package
yarn publish
- name: Open issue on failure
if: failure()
uses: JasonEtco/create-an-issue@v2.4.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPOSITORY: ${{ github.repository }}
RUN_ID: ${{ github.run_id }}
WORKFLOW_NAME: "Publish"
with:
filename: .github/action-failure-template.md
dispatch:
needs:
- release
runs-on: ubuntu-latest
steps:
- name: Publish Workflow Dispatch
if: ${{ needs.release.outputs.tag != '' }}
uses: benc-uk/workflow-dispatch@v1.1
with:
workflow: Publish Pods
token: ${{ secrets.PERSONAL_TOKEN }}
ref: ${{ needs.release.outputs.tag }}
- name: Publish NPM
if: ${{ needs.release.outputs.tag != '' }}
uses: benc-uk/workflow-dispatch@v1.1
with:
workflow: Publish NPM
token: ${{ secrets.PERSONAL_TOKEN }}
ref: ${{ needs.release.outputs.tag }}
- name: Publish Android
if: ${{ needs.release.outputs.tag != '' }}
uses: benc-uk/workflow-dispatch@v1.1
with:
workflow: Publish Android
token: ${{ secrets.PERSONAL_TOKEN }}
ref: ${{ needs.release.outputs.tag }}
inputs: '{"tag": "${{ needs.release.outputs.tag }}"}'