Skip to content

Commit

Permalink
✨ リリース用Actionとconfig追加
Browse files Browse the repository at this point in the history
  • Loading branch information
takuma-ru committed Jan 24, 2024
1 parent 57c4adb commit 0c845a4
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 4 deletions.
119 changes: 119 additions & 0 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: PR Check
on: [pull_request]

jobs:
init:
runs-on: ubuntu-latest
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
cache-name: cache-node-modules

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set git config
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
- name: Setup node
uses: actions/setup-node@v4
with:
node-version-file: "package.json"

- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8.9.2
run_install: false

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: '**/node_modules'
key: ${{ runner.os }}-pnpm-store-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-${{ env.cache-name }}-
- name: Install Node Dependencies
run: pnpm install

- name: Set .npmrc
run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > .npmrc

# Output the cache-name environment variable
# so that it can be used in other jobs
outputs:
cache-name: ${{ env.cache-name }}

type-check:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: init
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v2
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-pnpm-store-${{ needs.init.outputs.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Type check
run: pnpm asg lint:type-check

eslint-check:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: init
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v2
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-pnpm-store-${{ needs.init.outputs.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: ESlint check
run: pnpm asg lint

build-check:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: init
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v2
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-pnpm-store-${{ needs.init.outputs.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Build check
run: pnpm asg build

publish-check:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [init, build-check]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v2
- uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-pnpm-store-${{ needs.init.outputs.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
- name: Build check
run: pnpm asg build
- name: Publish check
run: pnpm asg publish --dry-run --no-git-checks
132 changes: 132 additions & 0 deletions .github/workflows/publish-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: Release @takuma-ru/auto-story-generator package

run-name: Release ${{ inputs.releaseLevel }} version

on:
workflow_dispatch:
inputs:
releaseLevel:
description: "Release level"
required: true
default: "patch(0.0.X)"
type: choice
options:
- major(X.0.0)
- minor(0.X.0)
- patch(0.0.X)
isBeta:
description: "Is beta release (exp: X.0.0-beta.X)"
required: false
type: boolean

jobs:
release:
runs-on: ubuntu-latest
permissions:
actions: write
checks: write
contents: write
deployments: write
issues: write
packages: write
pull-requests: write
repository-projects: write
security-events: write
statuses: write
environment:
name: Publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_OPTIONS: --max_old_space_size=8192

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set git config
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
- name: Setup node
uses: actions/setup-node@v4
with:
node-version-file: "package.json"
registry-url: "https://registry.npmjs.org/"

- uses: pnpm/action-setup@v2
name: Install pnpm
id: pnpm-install
with:
version: 8.14.1
run_install: false

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install Node Dependencies
run: pnpm install

- name: Set .npmrc
run: echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > packages/core/.npmrc

- name: Create release branch
id: create_branch
run: |
git checkout -b release
git push --set-upstream origin release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Major release
id: major
run: pnpm asg publish:major
if: contains(inputs.releaseLevel, 'major(X.0.0)') && contains(inputs.isBeta, 'false')

- name: Major Beta release
id: major-beta
run: pnpm asg publish:major-beta
if: contains(inputs.releaseLevel, 'major(X.0.0)') && contains(inputs.isBeta, 'true')

- name: Minor release
id: minor
run: pnpm asg publish:minor
if: contains(inputs.releaseLevel, 'minor(0.X.0)') && contains(inputs.isBeta, 'false')

- name: Minor Beta release
id: minor-beta
run: pnpm asg publish:minor-beta
if: contains(inputs.releaseLevel, 'minor(0.X.0)') && contains(inputs.isBeta, 'true')

- name: Patch release
id: patch
run: pnpm asg publish:patch
if: contains(inputs.releaseLevel, 'patch(0.0.X)') && contains(inputs.isBeta, 'false')

- name: Patch Beta release
id: patch-beta
run: pnpm asg publish:patch-beta
if: contains(inputs.releaseLevel, 'patch(0.0.X)') && contains(inputs.isBeta, 'true')

- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
if: steps.major.conclusion == 'success' || steps.minor.conclusion == 'success' || steps.patch.conclusion == 'success' || steps.major-beta.conclusion == 'success' || steps.minor-beta.conclusion == 'success' || steps.patch-beta.conclusion == 'success'
with:
title: "Update package.json"
draft: false
base: main
branch: release
assignees: "${{ github.actor }}"
32 changes: 29 additions & 3 deletions packages/auto-story-generator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,46 @@
Automatic real-time story file generation from React, Vue, and Lit component files

## Getting Started
1. Install the package
### 1. Install the package
```bash
npm i @takuma-ru/auto-story-generator
```

### 2. Add config
Add settings to main.ts in Storybook (`./storybook/main.ts`)

For `React`, `Vite`
```ts
import type { StorybookConfig } from "@storybook/react-vite";

import { mergeConfig } from "vite";

import autoStoryGenerator from "@takuma-ru/auto-story-generator";

const config: StorybookConfig = {
viteFinal: async (config) =>
mergeConfig(config, {
plugins: [
autoStoryGenerator.vite({
preset: "react",
imports: ["**/src/components/**/*.tsx"],
}),
],
}),
};

export default config;
```

## Supported Frameworks
> 🚧: Work in progress
> ✅: Supported
> 🚧: Work in progress
> ❌: Not supported
> 📝: Not yet implemented
| Framework | Supported |
| --------- | --------- |
| React | 🚧 |
| React | |
| Vue | 🚧 |
| Lit ||
| Angular ||
Expand Down
18 changes: 17 additions & 1 deletion packages/auto-story-generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,25 @@
"LICENSE.md",
"README.md"
],
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"scripts": {
"build": "tsup",
"build:watch": "tsup --watch"
"build:watch": "tsup --watch",
"lint": "eslint --ext .ts,.js .",
"lint:fix": "eslint --ext .ts,.js . --fix",
"lint:type-check": "tsc --noEmit",
"format": "prettier --write .",
"format:check": "prettier --check .",
"publish:major": "pnpm build && pnpm dlx release-it major --ci",
"publish:minor": "pnpm build && pnpm dlx release-it minor --ci",
"publish:patch": "pnpm build && pnpm dlx release-it patch --ci",
"publish:major-beta": "pnpm build && pnpm dlx release-it major --preRelease=beta --ci",
"publish:minor-beta": "pnpm build && pnpm dlx release-it minor --preRelease=beta --ci",
"publish:patch-beta": "pnpm build && pnpm dlx release-it patch --preRelease=beta --ci",
"publish:prerelease": "pnpm build && pnpm dlx release-it prerelease --ci"
},
"keywords": [],
"author": "takuma-ru <[email protected]> (https://github.com/takuma-ru/)",
Expand Down
14 changes: 14 additions & 0 deletions packages/auto-story-generator/release-it.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"npm": {
"publish": true
},
"github": {
"release": true
},
"git": {
"requireCleanWorkingDir": false,
"addFiles": ["package.json"],
"commitMessage": ":bookmark: release @takuma-ru/auto-story-generator@${version}"
},
"plugins": {}
}

0 comments on commit 0c845a4

Please sign in to comment.