name: Release # This action runs on push to 'main' and below specified paths 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@v3.5.3 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: softprops/action-gh-release@v0.1.15 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.tag-version-commit.outputs.tag }} 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-server-mac: needs: - release runs-on: macos-latest env: desktop-directory: ./desktop steps: - uses: actions/checkout@v3.5.3 with: ref: ${{ needs.release.outputs.tag }} - uses: actions/setup-node@v3.6.0 with: node-version: '18.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 --mac --dmg - name: List dist artifacts run: ls -l dist/ - name: Upload x86-64 uses: actions/upload-artifact@v3.1.2 with: name: 'Flipper-server-mac-x64.dmg' path: 'dist/Flipper-server-mac-x64.dmg' - name: Upload aarch64 uses: actions/upload-artifact@v3.1.2 with: name: 'Flipper-server-mac-aarch64.dmg' path: 'dist/Flipper-server-mac-aarch64.dmg' build-flipper-server: needs: - release runs-on: ubuntu-latest env: desktop-directory: ./desktop steps: - uses: actions/checkout@v3.5.3 with: ref: ${{ needs.release.outputs.tag }} - uses: actions/setup-node@v3.6.0 with: node-version: '18.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: List dist artifacts run: ls -l dist/ - name: Upload flipper-server uses: actions/upload-artifact@v3.1.2 with: name: 'flipper-server.tgz' path: 'dist/flipper-server.tgz' publish: needs: - build-server-mac - build-flipper-server - release runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.5.3 with: ref: ${{ needs.release.outputs.tag }} - name: Download Flipper Server x86-64 if: ${{ needs.release.outputs.tag != '' }} uses: actions/download-artifact@v1 with: name: 'Flipper-server-mac-x64.dmg' path: 'Flipper-server-mac-x64.dmg' - name: Download Flipper Server aarch64 if: ${{ needs.release.outputs.tag != '' }} uses: actions/download-artifact@v1 with: name: 'Flipper-server-mac-aarch64.dmg' path: 'Flipper-server-mac-aarch64.dmg' - 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: aigoncharov/github-upload-release-artifacts-action@2.2.3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: created_tag: ${{ needs.release.outputs.tag }} args: flipper-server.tgz/flipper-server.tgz Flipper-server-mac-x64.dmg/Flipper-server-mac-x64.dmg Flipper-server-mac-aarch64.dmg/Flipper-server-mac-aarch64.dmg - name: Set up npm token run: echo "//registry.yarnpkg.com/:_authToken=${{ secrets.FLIPPER_NPM_TOKEN }}" >> ~/.npmrc - name: Publish flipper-server on NPM if: ${{ needs.release.outputs.tag != '' }} run: | tar zxvf flipper-server.tgz/flipper-server.tgz cd package yarn publish - name: Open issue on failure if: failure() uses: JasonEtco/create-an-issue@v2.9.1 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.2.2 with: workflow: Publish Pods ref: ${{ needs.release.outputs.tag }} - name: Publish NPM if: ${{ needs.release.outputs.tag != '' }} uses: benc-uk/workflow-dispatch@v1.2.2 with: workflow: Publish NPM ref: ${{ needs.release.outputs.tag }} - name: Publish Android if: ${{ needs.release.outputs.tag != '' }} uses: benc-uk/workflow-dispatch@v1.2.2 with: workflow: Publish Android ref: ${{ needs.release.outputs.tag }} inputs: '{"tag": "${{ needs.release.outputs.tag }}"}'