Update version #12243
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Update version | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '30 */4 * * *' | |
| jobs: | |
| update-version: | |
| name: Automatically get latest PHPStan version and commit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: "Checkout code" | |
| uses: actions/checkout@v3 | |
| with: | |
| ref: master | |
| fetch-depth: '0' | |
| - name: "Update Dockerfile and action.yml" | |
| id: fetch_version | |
| run: | | |
| latest=$(curl -s https://packagist.org/packages/phpstan/phpstan.json|jq '[.package.versions[]|select(.version|test("^\\d+\\.\\d+\\.\\d+$"))|.version]|max_by(.|[splits("[.]")]|map(tonumber))') | |
| latest=$(echo $latest | tr -d '"') | |
| echo "Latest PHPStan version is $latest" | |
| echo ::set-output name=latest::$latest | |
| sed -i -re "s/ENV VERSION=.*/ENV VERSION=$latest/" Dockerfile | |
| cat Dockerfile | |
| sed -i -re "s/phpstan-ga:([0-9.]+)?/phpstan-ga:$latest/" action.yml | |
| cat action.yml | |
| - name: "Commit changes" | |
| uses: stefanzweifel/git-auto-commit-action@v5 | |
| id: commit | |
| with: | |
| commit_author: "Oskar Stark <oskarstark@googlemail.com>" | |
| commit_message: "Enhancement: Upgrade to PHPStan ${{ steps.fetch_version.outputs.latest }}" | |
| commit_user_email: "oskarstark@googlemail.com" | |
| commit_user_name: "Oskar Stark" | |
| - name: "Tag version ${{ steps.fetch_version.outputs.latest }}" | |
| uses: "anothrNick/github-tag-action@1.30.0" | |
| if: steps.commit.outputs.changes_detected == 'true' | |
| id: tag | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| CUSTOM_TAG: ${{ steps.fetch_version.outputs.latest }} | |
| RELEASE_BRANCHES: master | |
| - name: "Create release ${{ steps.fetch_version.outputs.latest }}" | |
| uses: actions/create-release@v1 | |
| if: steps.commit.outputs.changes_detected == 'true' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: ${{ steps.tag.outputs.new_tag }} | |
| release_name: ${{ steps.tag.outputs.new_tag }} | |
| commitish: master | |
| body: "Upgrade PHPStan to ${{ steps.tag.outputs.new_tag }}" | |
| publish_docker_images: | |
| needs: [update-version] | |
| runs-on: ubuntu-latest | |
| if: github.ref == 'refs/heads/master' || github.event_name == 'release' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| - name: Docker meta | |
| id: meta | |
| uses: crazy-max/ghaction-docker-meta@v2 | |
| with: | |
| images: oskarstark/phpstan-ga | |
| tags: | | |
| type=raw,value=latest,enable=${{ endsWith(github.ref, 'master') }} | |
| type=ref,event=tag | |
| flavor: | | |
| latest=false | |
| - name: Login to DockerHub | |
| if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Build and push | |
| uses: docker/build-push-action@v2 | |
| with: | |
| context: . | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} |