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: '12.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: '12.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: '12.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' 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.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: created_tag: ${{ needs.release.outputs.tag }} args: Flipper-mac.dmg Flipper-linux.zip Flipper-win.zip 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 }}"}'