diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..bd92e24 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,36 @@ +name-template: '$RESOLVED_VERSION' +tag-template: '$RESOLVED_VERSION' +categories: + - title: 'πŸš€ Features' + labels: + - 'feature' + - 'enhancement' + - title: 'πŸ› Bug Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - title: '🧰 Maintenance' + labels: + - 'chore' + - 'dependencies' + - title: 'πŸ“– Documentation' + labels: + - 'documentation' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. +version-resolver: + major: + labels: + - 'major' + minor: + labels: + - 'minor' + patch: + labels: + - 'patch' + default: patch +template: | + ## Changes + + $CHANGES diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..a12aefb --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,22 @@ +name: Release Drafter + +on: + push: + branches: + - master + pull_request: + types: [ opened, reopened, synchronize ] + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + contents: write + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v6 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..07e8419 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,92 @@ +name: Test Library + +on: + pull_request: + branches: + - master + +jobs: + + phpcs: + name: PHP Code Sniffer + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP with composer v2 + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + tools: composer + + - name: Install Composer Dependencies + run: composer install --prefer-dist --no-progress + + - name: Check PHP coding standard + run: composer lint + + assets: + name: Assets Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + # TODO: γƒ“γƒ«γƒ‰γƒ„γƒΌγƒ«θΏ‘δ»£εŒ– (#12) 後に node 20 / npm run build へ更新する。 + - name: Install Node + uses: actions/setup-node@v4 + with: + node-version: '14' + + - name: Install NPM Packages + run: npm install + + - name: Check JS & CSS syntax + run: npm run lint + + phpunit: + name: WordPress ${{ matrix.wp }} on PHP ${{ matrix.php }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php: [ '7.4', '8.0' ] + wp: [ '5.9', 'latest' ] + services: + mysql: + image: mysql:5.7 + env: + MYSQL_ROOT_PASSWORD: root + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping --host 127.0.0.1 --port 3306" + --health-interval=10s + --health-timeout=5s + --health-retries=10 + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP with composer v2 + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer + + - name: Install Composer Dependencies + run: composer install --prefer-dist --no-progress + + - name: Install WordPress + run: bash bin/install-wp-tests.sh wordpress root root 127.0.0.1:3306 ${{ matrix.wp }} + + - name: Run PHPUnit + run: composer test + + status-check: + name: Status Check + runs-on: ubuntu-latest + needs: [ phpcs, assets, phpunit ] + if: always() + steps: + - uses: re-actors/alls-green@release/v1 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/wordpress.yml b/.github/workflows/wordpress.yml deleted file mode 100644 index 62fda1a..0000000 --- a/.github/workflows/wordpress.yml +++ /dev/null @@ -1,110 +0,0 @@ -name: Deploy Composer Library - -on: - push: - branches: - - master - tags: - - '*' - pull_request: - branches: - - master - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ ubuntu-latest ] # OS. ubuntu-18.04 is also available. - php: [ '7.4', '8.0' ] # PHP versions to check. - wp: [ '5.9', 'latest' ] # WordPress version to check. - services: - mysql: - image: mysql:5.7 - options: --health-cmd "mysqladmin ping --host 127.0.0.1 --port 3306" --health-interval 20s --health-timeout 10s --health-retries 10 - ports: - - 3306/tcp - env: - MYSQL_ROOT_PASSWORD: root - name: WordPress ${{ matrix.wp }} in PHP ${{ matrix.php }} UnitTest - steps: - - uses: actions/checkout@master - - - name: Setup PHP with composer v2 - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: ${{ matrix.tools }} - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Install dependencies - run: composer install --prefer-dist --no-progress --no-suggest - - - name: Start MySQL - run: sudo systemctl start mysql - - - name: Install WordPress - run: bash bin/install-wp-tests.sh wordpress root root 127.0.0.1:3306 ${{ matrix.wp }} - - - name: Check PHP Unit - run: composer test - - - name: Check PHP syntax - run: composer lint - - assets: - name: Check Assets - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - - name: Install Node - uses: actions/setup-node@v1 - with: - node-version: '14' - - - name: Install NPM Packages - run: npm install - - - name: Check JS & CSS syntax - run: npm run lint - - release: - name: Deploy GitHub Release - needs: [ test, assets ] - if: contains(github.ref, 'tags/') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Cleanup package. - run: bash bin/cleanup.sh - - - name: Create Zip - run: zip -r icon.zip ./ - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: Release Kunoichi Icon ${{ github.ref }} - body: | - Release Kunoichi Icon version ${{ github.ref }}. - draft: false - prerelease: false - - - name: Upload Release Zip - id: upload-release-asset - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ${{ github.workspace }}/${{ github.event.repository.name }}.zip - asset_name: ${{ github.event.repository.name }}.zip - asset_content_type: application/zip