Summary: I've been investigating the now persistent upload issue for our artifacts and it appears to come down to artifacts being uploaded and downloaded as folder structures while they used to be individual files. Annoyingly, the `ghr` tool we use for uploading throws a cryptic and misleading error: https://github.com/facebook/flipper/runs/4314584032?check_suite_focus=true There is some more control in the `v2` version of the actions but for now, this seems like the safer option to fix this problem. {F682461661} Reviewed By: lblasa Differential Revision: D32649218 fbshipit-source-id: 47ebefc434cb3b928b82a9fe8da3002b7b8465b6
225 lines
6.5 KiB
YAML
225 lines
6.5 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.0.0
|
|
with:
|
|
timeout_minutes: 10
|
|
max_attempts: 3
|
|
command: cd ${{env.desktop-directory}} && yarn
|
|
- name: Build
|
|
uses: nick-invision/retry@v2.0.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.0.0
|
|
with:
|
|
timeout_minutes: 10
|
|
max_attempts: 3
|
|
command: cd ${{env.desktop-directory}} && yarn
|
|
- name: Build
|
|
uses: nick-invision/retry@v2.0.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.0.0
|
|
with:
|
|
timeout_minutes: 10
|
|
max_attempts: 3
|
|
command: cd ${{env.desktop-directory}} && yarn
|
|
- name: Build
|
|
uses: nick-invision/retry@v2.0.0
|
|
with:
|
|
timeout_minutes: 30
|
|
max_attempts: 3
|
|
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'
|
|
- 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: "Release"
|
|
with:
|
|
filename: .github/action-failure-template.md
|
|
|
|
publish:
|
|
needs:
|
|
- build-win
|
|
- build-linux
|
|
- build-mac
|
|
- 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: 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
|
|
- 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 }}"}'
|