Skip to content

.github/workflows/baseline.yml #404

.github/workflows/baseline.yml

.github/workflows/baseline.yml #404

Workflow file for this run

on:
workflow_dispatch:
inputs:
tag_name:
description: 'Git Tag Name'
required: false
branch_name:
description: 'Git Branch Name'
required: true
default: '1.x'
push:
branches: [ 1.x ]
paths-ignore:
- 'CHANGELOG.md'
schedule:
- cron: '0 3 * * *'
jobs:
build-archives:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
dependencies:
- "locked"
php-version:
- "8.2"
steps:
- name: "Checkout"
uses: "actions/checkout@v5"
with:
fetch-depth: 0
- name: "Setup PHP Environment"
uses: "./.github/actions/setup-php-env"
with:
php-version: "${{ matrix.php-version }}"
dependencies: "locked"
coverage: "none"
cache-key-suffix: "-locked"
- name: "Build PHAR file"
run: "composer build:phar"
- name: "Validate Flow PHAR"
run: |
./build/flow.phar --version
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker Image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/flow-php/flow:latest
target: flow
cache-from: type=gha
cache-to: type=gha,mode=max
- name: "Prepare artifact name"
if: ${{ github.event_name == 'push' }}
shell: bash
run: |
BUILD_TAG=${GITHUB_SHA:0:7}
echo "BUILD_TAG=$BUILD_TAG" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
with:
name: flow-${{ env.BUILD_TAG }}.phar
path: build/flow.phar
overwrite: true
benchmark-baseline:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
dependencies:
- "locked"
php-version:
- "8.2"
steps:
- name: "Set Git Ref"
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
echo "GIT_REF=${{ github.ref }}" >> $GITHUB_ENV
elif [[ "${{ github.event.inputs.tag_name }}" != "" ]]; then
echo "GIT_REF=refs/tags/${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
else
echo "GIT_REF=${{ github.event.inputs.branch_name }}" >> $GITHUB_ENV
fi
- name: "Set Benchmark Tag"
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
echo "PHPBENCH_TAG=1.x" >> $GITHUB_ENV
elif [[ "${{ github.event.inputs.tag_name }}" != "" ]]; then
echo "PHPBENCH_TAG=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
else
echo "PHPBENCH_TAG=${{ github.event.inputs.branch_name }}" >> $GITHUB_ENV
fi
- name: "Checkout to specific ref"
uses: "actions/checkout@v5"
with:
ref: ${{ env.GIT_REF }}
- name: "Setup PHP Environment"
uses: "./.github/actions/setup-php-env"
with:
php-version: "${{ matrix.php-version }}"
dependencies: "locked"
coverage: "none"
cache-key-suffix: "-locked"
- name: "Benchmark"
run: |
echo '# Flow PHP - Benchmark - ${{ env.PHPBENCH_TAG }}' >> $GITHUB_STEP_SUMMARY
echo ' ' >> $GITHUB_STEP_SUMMARY
echo '---' >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
tools/phpbench/vendor/bin/phpbench run --report=flow-report --tag=${{ env.PHPBENCH_TAG }} --progress=none >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
- name: "Store Benchmark baseline"
uses: actions/upload-artifact@v4
with:
name: phpbench-baseline
path: ./var/phpbench/
overwrite: true
publish-website:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-version:
- "8.2"
steps:
- name: "Checkout"
uses: "actions/checkout@v5"
with:
fetch-depth: 0
- name: "Get Flow Version"
id: flow_version
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
fallback: 1.x-dev
- name: "Setup PHP Environment"
uses: "./.github/actions/setup-php-env"
with:
php-version: "${{ matrix.php-version }}"
dependencies: "locked"
cache-key-suffix: "-website"
- name: "Generate documentation"
run: "composer build:docs"
- name: "Install Landing dependencies"
run: "composer install --no-interaction --no-progress "
working-directory: "web/landing"
- name: "Build"
run: "composer build"
env:
SCHEME: https
DOMAIN: flow-php.com
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
UMAMI_ID: '${{ vars.UMAMI_ID }}'
FLOW_VERSION: ${{ steps.flow_version.outputs.tag }}
working-directory: "web/landing"
- name: "Generate Api References"
run: "composer build:docs:api"
- name: Pushes build to website repository
uses: cpina/github-action-push-to-another-repository@main
env:
API_TOKEN_GITHUB: ${{ secrets.ACCESS_TOKEN }}
with:
source-directory: 'web/landing/build'
destination-github-username: 'flow-php'
destination-repository-name: 'flow-php.com'