build&push.yml 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. name: Build and Publish FAP to Release
  2. on:
  3. workflow_dispatch:
  4. jobs:
  5. build-and-publish:
  6. name: Build and Publish FAP to Latest Release
  7. runs-on: ubuntu-latest
  8. steps:
  9. - name: Checkout Repository
  10. uses: actions/checkout@v3
  11. - name: Set up Python
  12. uses: actions/setup-python@v4
  13. with:
  14. python-version: '3.x'
  15. - name: Install UFBT
  16. run: |
  17. python3 -m pip install --upgrade pip
  18. pip install ufbt
  19. - name: Initialize UFBT Environment
  20. run: |
  21. ufbt update
  22. ufbt vscode_dist
  23. - name: Build FAP Applications
  24. run: ufbt faps
  25. - name: Archive Build Outputs
  26. run: tar -czf build-output.tar.gz build/
  27. - name: Get Latest Release Info
  28. id: get-release
  29. uses: octokit/request-action@v2
  30. with:
  31. route: GET /repos/${{ github.repository }}/releases/latest
  32. continue-on-error: true
  33. - name: Create a New Release (if latest does not exist)
  34. if: steps.get-release.outputs.status == '404'
  35. id: create-release
  36. uses: actions/create-release@v1
  37. with:
  38. tag_name: latest
  39. release_name: Latest Release
  40. draft: false
  41. prerelease: false
  42. generate_release_notes: true
  43. env:
  44. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  45. - name: Upload Build Artifacts to Release
  46. uses: actions/upload-release-asset@v1
  47. with:
  48. upload_url: ${{ steps.get-release.outputs.data.html_url || steps.create-release.outputs.upload_url }}
  49. asset_path: build-output.tar.gz
  50. asset_name: build-output.tar.gz
  51. asset_content_type: application/gzip
  52. env:
  53. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}