Skip to content

Deploy GitHub Pages #723

Deploy GitHub Pages

Deploy GitHub Pages #723

Workflow file for this run

name: Deploy GitHub Pages
on:
workflow_dispatch:
push:
paths:
- 'src/**/*'
- 'tests/**/*'
- '.github/workflows/github-pages.yml'
- '**/vite*'
- '**/tailwind*'
- '**/rollup*'
- '**/postcss*'
- 'setup*'
schedule:
- cron: '0 */6 * * *'
permissions:
contents: write
concurrency:
group: github-pages
cancel-in-progress: false
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
ADMIN_EMAILS: ${{ secrets.ADMIN_EMAILS }}
CLOUD_SQLITE_SECRET: ${{ secrets.CLOUD_SQLITE_SECRET }}
CPID: ${{ secrets.CPID }}
DEBUG: ${{ secrets.DEBUG }}
DEBUG_DEVICES: ${{ secrets.DEBUG_DEVICES }}
DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
DJANGO_SUPERUSER_EMAIL: ${{ secrets.DJANGO_SUPERUSER_EMAIL }}
DJANGO_SUPERUSER_PASSWORD: ${{ secrets.DJANGO_SUPERUSER_PASSWORD }}
DJANGO_SUPERUSER_USERNAME: ${{ secrets.DJANGO_SUPERUSER_USERNAME }}
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
FIREBASE_DATABASE_URL: ${{ secrets.FIREBASE_DATABASE_URL }}
FIREBASE_MEASUREMENT_ID: ${{ secrets.FIREBASE_MEASUREMENT_ID }}
FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.FIREBASE_MESSAGING_SENDER_ID }}
FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
FIREBASE_STORAGE_BUCKET: ${{ secrets.FIREBASE_STORAGE_BUCKET }}
G_API: ${{ secrets.G_API }}
G_CLIENT_ID: ${{ secrets.G_CLIENT_ID }}
G_CLIENT_SECRET: ${{ secrets.G_CLIENT_SECRET }}
G_PROJECT_ID: ${{ secrets.G_PROJECT_ID }}
G_RECAPTCHA_SECRET: ${{ secrets.G_RECAPTCHA_SECRET }}
G_RECAPTCHA_SITE_KEY: ${{ secrets.G_RECAPTCHA_SITE_KEY }}
G_RECAPTCHA_V2_SECRET: ${{ secrets.G_RECAPTCHA_V2_SECRET }}
G_RECAPTCHA_V2_SITE_KEY: ${{ secrets.G_RECAPTCHA_V2_SITE_KEY }}
G_REDIRECT_URI: ${{ secrets.G_REDIRECT_URI }}
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_TOKEN_READ_ONLY: ${{ secrets.GITHUB_TOKEN_READ_ONLY }}
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
GMAIL_SMTP_EMAIL: ${{ secrets.GMAIL_SMTP_EMAIL }}
GMAIL_SMTP_PASS: ${{ secrets.GMAIL_SMTP_PASS }}
H_CAPTCHA_SECRET: ${{ secrets.H_CAPTCHA_SECRET }}
H_CAPTCHA_SITE: ${{ secrets.H_CAPTCHA_SITE }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
OPENAI_KEY2: ${{ secrets.OPENAI_KEY2 }}
SFTP_HOST: ${{ secrets.SFTP_HOST }}
SFTP_PASS: ${{ secrets.SFTP_PASS }}
SFTP_PATH: ${{ secrets.SFTP_PATH }}
SFTP_USER: ${{ secrets.SFTP_USER }}
SMS_PASSWORD: ${{ secrets.SMS_PASSWORD }}
WHATSAPP_ADMIN: ${{ secrets.WHATSAPP_ADMIN }}
CLOUDFLARED_TOKEN: ${{ secrets.CLOUDFLARED_TOKEN }}
VITE_HOSTNAME: ${{ secrets.VITE_HOSTNAME }}
VITE_PORT: ${{ secrets.VITE_PORT }}
VITE_BACKEND_HOSTNAME_DEV: ${{ secrets.VITE_BACKEND_HOSTNAME_DEV }}
VITE_BACKEND_HOSTNAME_PROD: ${{ secrets.VITE_BACKEND_HOSTNAME_PROD }}
MYSQL_USER_PRODUCTION: ${{ secrets.MYSQL_USER_PRODUCTION }}
MYSQL_PASS_PRODUCTION: ${{ secrets.MYSQL_PASS_PRODUCTION }}
MYSQL_HOST_PRODUCTION: ${{ secrets.MYSQL_HOST_PRODUCTION }}
MYSQL_USER: ${{ secrets.MYSQL_USER }}
MYSQL_PASS: ${{ secrets.MYSQL_PASS }}
MYSQL_DBNAME: ${{ secrets.MYSQL_DBNAME }}
MYSQL_HOST: ${{ secrets.MYSQL_HOST }}
jobs:
build-and-deploy:
timeout-minutes: 30
if: contains(github.repository, 'php-proxy-hunter') || contains(github.repository, 'android-traffic-exchange')
runs-on: ubuntu-latest
steps:
- name: Check VITE secrets presence
run: |
if [ -z "$VITE_BACKEND_HOSTNAME_DEV" ]; then echo "VITE_BACKEND_HOSTNAME_DEV is NOT set"; else echo "VITE_BACKEND_HOSTNAME_DEV is set"; fi
if [ -z "$VITE_BACKEND_HOSTNAME_PROD" ]; then echo "VITE_BACKEND_HOSTNAME_PROD is NOT set"; else echo "VITE_BACKEND_HOSTNAME_PROD is set"; fi
- name: Checkout repository
uses: actions/checkout@v5
with:
token: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
repository: dimaslanjaka/php-proxy-hunter
fetch-depth: 0
- name: Checkout gh-pages branch
uses: actions/checkout@v5
with:
ref: gh-pages
path: .deploy_git
token: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
repository: dimaslanjaka/php-proxy-hunter
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: '22'
cache: 'yarn'
cache-dependency-path: .husky/hash.txt
- name: Init cache
uses: actions/cache@v4
id: cache
with:
path: |
~/.yarn
**/node_modules/**
**/tmp/**
**/dist/**
**/yarn.lock
**/public/**
key: ${{ runner.os }}-node-${{ hashFiles('.husky/hash.txt') }}
restore-keys: |
${{ runner.os }}-node-${{ hashFiles('.husky/hash.txt') }}
${{ runner.os }}-node-
- name: Clean dist and tmp
run: rm -rf dist/* tmp/*
- name: Setup github actions
run: node setup.js
- name: Build Project
run: yarn build
- name: Build React app
run: node vite-gh-pages.js
- name: Build commit message
id: commitmsg
run: |
LATEST_COMMIT=$(git rev-parse HEAD)
COMMIT_URL="https://github.com/${{ github.repository }}/commit/$LATEST_COMMIT"
echo "message=chore: deploy to gh-pages from $COMMIT_URL" >> $GITHUB_OUTPUT
- name: Commit and push to gh-pages
working-directory: .deploy_git
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
git commit -m "${{ steps.commitmsg.outputs.message }}" || echo "No changes to commit"
git push "https://x-access-token:${ACCESS_TOKEN}@github.com/${{ github.repository }}.git" gh-pages