autodeploy.yml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. name: AutoDeploy
  2. on:
  3. push:
  4. branches:
  5. - 'dev'
  6. - 'master'
  7. jobs:
  8. build:
  9. name: "Сборка и публикация версии 🔨"
  10. runs-on: ubuntu-latest
  11. permissions:
  12. contents: write
  13. steps:
  14. - name: Checkout code
  15. uses: actions/checkout@v4
  16. - name: Setup Node.js
  17. uses: actions/setup-node@v3
  18. with:
  19. node-version: '21'
  20. - name: Install pnpm
  21. run: npm -g i pnpm
  22. - name: Install dependencies
  23. run: pnpm i
  24. - name: Install semantic-release packages
  25. run: pnpm i @semantic-release/changelog @semantic-release/git @semantic-release/github
  26. - name: Build web assets
  27. run: pnpm nuxt generate
  28. env:
  29. API_URL: ${{ secrets.API_URL }}
  30. SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
  31. SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
  32. SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
  33. SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
  34. - name: Add Capacitor Android project
  35. run: pnpm cap add android
  36. - name: Sync Capacitor project
  37. run: npx cap sync
  38. - name: Set up Java
  39. uses: actions/setup-java@v4
  40. with:
  41. distribution: 'zulu'
  42. java-version: '21'
  43. - name: Set up Android SDK
  44. uses: android-actions/setup-android@v3
  45. - name: Accept Android SDK licenses
  46. run: |
  47. yes | sdkmanager --licenses
  48. - name: Setup Gradle
  49. uses: gradle/actions/setup-gradle@v4
  50. - name: Build Android APK
  51. working-directory: android
  52. run: ./gradlew assembleDebug
  53. - name: Publishing release
  54. run: npx semantic-release
  55. env:
  56. GH_TOKEN: ${{ secrets.GH_TOKEN }}
  57. deploy_dev:
  58. name: "Уведомление в Telegram 🔔"
  59. runs-on: ubuntu-latest
  60. needs: build
  61. steps:
  62. - uses: actions/checkout@v4
  63. - name: Escape bad symbols in variables
  64. id: escape_vars
  65. run: |
  66. escaped_message=$(echo "${{ github.event.head_commit.message }}" | perl -pe 's/([&~\`\*\_\[\]()#\+\-\=\|\{\}\.\!])/\\\\$1/g')
  67. escaped_actor=$(echo "${{ github.actor }}" | perl -pe 's/([&~\`\*\_\[\]()#\+\-\=\|\{\}\.\!])/\\\\$1/g')
  68. escaped_branch=$(echo "${{ github.ref_name }}" | perl -pe 's/([&~\`\*\_\[\]()#\+\-\=\|\{\}\.\!])/\\\\$1/g')
  69. echo "escaped_message=$escaped_message" >> $GITHUB_ENV
  70. echo "escaped_actor=$escaped_actor" >> $GITHUB_ENV
  71. echo "escaped_branch=$escaped_branch" >> $GITHUB_ENV
  72. - name: Send Telegram Message
  73. run: |
  74. curl \
  75. --data-urlencode 'chat_id=${{ secrets.TELEGRAM_CHAT_ID }}' \
  76. --data-urlencode 'message_thread_id=${{ secrets.TELEGRAM_MESSAGE_THREAD_ID }}' \
  77. --data-urlencode 'link_preview_options={"url":"${{ github.event.head_commit.url }}"}' \
  78. --data-urlencode 'parse_mode=markdownv2' \
  79. --data-urlencode $'text=🔨 *Frontend deploy* 🔨\n\n>${{ env.escaped_message }}\n_by [${{ env.escaped_actor }}](https://github.com/${{ env.escaped_actor }})_ at `${{ env.escaped_branch }}`\n\n[commit link](${{ github.event.head_commit.url }})' \
  80. curl "https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendMessage"