Skip to content

Next.js Latest

Next.js Latest #1167

Workflow file for this run

name: Next.js Latest
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 0 * * *' # Run daily at midnight UTC
jobs:
check-automation:
runs-on: ubuntu-latest
outputs:
should-skip: ${{ steps.check-automation.outputs.should-skip }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check if triggered by automation
id: check-automation
run: |
# Skip automation check for scheduled runs
if [[ "${{ github.event_name }}" == "schedule" ]]; then
echo "should-skip=false" >> $GITHUB_OUTPUT
echo "✅ Scheduled run - workflow will proceed"
exit 0
fi
# Skip if actor is github-actions or dependabot
if [[ "${{ github.actor }}" == "github-actions[bot]" ]] || [[ "${{ github.actor }}" == "dependabot[bot]" ]] || [[ "${{ github.actor }}" == "github-actions" ]]; then
echo "should-skip=true" >> $GITHUB_OUTPUT
echo "🚫 Skipping workflow: triggered by automated actor (${{ github.actor }})"
exit 0
fi
# Get the latest commit message and author
COMMIT_MESSAGE=$(git log -1 --pretty=%B)
COMMIT_AUTHOR=$(git log -1 --pretty=%an)
echo "Commit message: $COMMIT_MESSAGE"
echo "Commit author: $COMMIT_AUTHOR"
# Skip if commit message contains [skip ci] or [ci skip]
if echo "$COMMIT_MESSAGE" | grep -q "\[skip ci\]"; then
echo "should-skip=true" >> $GITHUB_OUTPUT
echo "🚫 Skipping workflow: [skip ci] found in commit message"
exit 0
fi
if echo "$COMMIT_MESSAGE" | grep -q "\[ci skip\]"; then
echo "should-skip=true" >> $GITHUB_OUTPUT
echo "🚫 Skipping workflow: [ci skip] found in commit message"
exit 0
fi
# Skip if commit author is automated
if [[ "$COMMIT_AUTHOR" == *"github-actions"* ]] || [[ "$COMMIT_AUTHOR" == *"GitHub Action"* ]] || [[ "$COMMIT_AUTHOR" == *"dependabot"* ]]; then
echo "should-skip=true" >> $GITHUB_OUTPUT
echo "🚫 Skipping workflow: commit by automated author ($COMMIT_AUTHOR)"
exit 0
fi
echo "should-skip=false" >> $GITHUB_OUTPUT
echo "✅ Workflow will proceed"
check-next-version:
needs: check-automation
if: needs.check-automation.outputs.should-skip != 'true'
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.check.outputs.should_run }}
latest_version: ${{ steps.check.outputs.latest_version }}
steps:
- id: check
run: |
LATEST=$(npm view next version)
CURRENT=$(cat .next-version 2>/dev/null || echo "")
echo "Latest version: $LATEST"
echo "Current version: $CURRENT"
if [ "$LATEST" != "$CURRENT" ]; then
echo "should_run=true" >> $GITHUB_OUTPUT
echo "latest_version=$LATEST" >> $GITHUB_OUTPUT
echo $LATEST > .next-version
else
echo "should_run=false" >> $GITHUB_OUTPUT
fi
test-next-latest:
needs: [check-automation, check-next-version]
if: ${{ needs.check-automation.outputs.should-skip != 'true' && (needs.check-next-version.outputs.should_run == 'true' || github.event_name == 'push' || github.event_name == 'pull_request') }}
runs-on: ubuntu-latest
name: Next.js latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Print Environment Info
run: |
node -v
npm -v
cat .next-version || echo ".next-version file not found"
- name: Set Git identity
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create Next.js project from create-command
run: |
npx create-gluestack@latest test-app --starter-kit-next
cd test-app
- name: Build Next.js app
working-directory: test-app
env:
NEXT_TELEMETRY_DISABLED: 1
run: |
npm run build
- name: Start Next.js app
working-directory: test-app
run: |
npm run start &
sleep 20
- name: Fetch and Log Server Response
run: |
curl -s http://localhost:3000 || echo "Failed to reach the server"
curl -s http://localhost:3000 > server_response.html
cat server_response.html
- name: Check if text is rendered
run: |
RESPONSE=$(curl -s http://localhost:3000)
echo "$RESPONSE" | grep -q "Get started by editing" && echo "text found" || (echo "text not found" && exit 1)