diff --git a/.github/workflows/web-vercel.yml b/.github/workflows/web-vercel.yml new file mode 100644 index 00000000..97e2a91d --- /dev/null +++ b/.github/workflows/web-vercel.yml @@ -0,0 +1,36 @@ +name: Deploy Web to Vercel +on: + push: + branches: [develop, main] +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + # Cache pub dependencies + - uses: actions/cache@v3 + with: + path: ~/.pub-cache + key: ${{ runner.os }}-pub-${{ hashFiles('pubspec.yaml') }} + restore-keys: ${{ runner.os }}-pub- + + - uses: subosito/flutter-action@v2 + with: { flutter-version: '3.29.2' } + + # Create .env file for build + - run: | + echo "SPOTIFY_SECRETS=dummy_client_id:dummy_client_secret" > .env + echo "LASTFM_API_KEY=dummy_lastfm_key" >> .env + echo "LASTFM_API_SECRET=dummy_lastfm_secret" >> .env + echo "HIDE_DONATIONS=0" >> .env + echo "ENABLE_UPDATE_CHECK=1" >> .env + echo "RELEASE_CHANNEL=nightly" >> .env + echo "DISABLE_SPOTIFY_IMAGES=0" >> .env + + - run: flutter pub get + - run: flutter build web --release --dart-define=API_BASE=https://api.tunestream.io + - run: npm i -g vercel + # deploy del directorio estático generado por Flutter + - run: vercel deploy --prod build/web --yes --token ${{ secrets.VERCEL_TOKEN }} --name tunestream-app +YAML < /dev/null \ No newline at end of file diff --git a/vercel.json b/vercel.json new file mode 100644 index 00000000..45878c80 --- /dev/null +++ b/vercel.json @@ -0,0 +1,23 @@ +{ + "cleanUrls": true, + "trailingSlash": false, + "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }], + "headers": [ + { + "source": "/(.*)", + "headers": [ + { "key": "X-Frame-Options", "value": "DENY" }, + { "key": "X-Content-Type-Options", "value": "nosniff" }, + { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }, + { "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=()" } + ] + }, + { + "source": "/(.*\\.(js|css|ico|png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot))", + "headers": [ + { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" } + ] + } + ] +} +JSON < /dev/null \ No newline at end of file