add multi environment support #3202
Workflow file for this run
This file contains 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: ci | |
on: | |
workflow_call: | |
pull_request: | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Run lint | |
run: npm run lint | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Run build | |
run: | | |
npm run build | |
npm install --omit=dev # remove dev dependencies to mimic a user installing the package | |
bin/run.js | |
test: | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Run tests | |
run: npm run test | |
bundle-size: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
cache: npm | |
- name: Install dependencies | |
run: npm ci | |
- name: Show bundle size | |
run: | | |
./scripts/show-bundle-size.ts | |
dependabot: | |
needs: [lint, build, test] | |
if: github.event_name == 'pull_request' && startsWith(github.head_ref, 'dependabot/npm_and_yarn/') | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.GH_TOKEN }} | |
fetch-depth: 0 | |
- name: Get dependabot metadata | |
id: metadata | |
uses: dependabot/fetch-metadata@v1 | |
- if: steps.metadata.outputs.dependency-type == 'direct:production' | |
name: Add changeset if missing | |
id: changeset | |
run: | | |
added_files=$(git diff --diff-filter=A --name-only ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}) | |
for filename in $added_files; do | |
if [[ $filename =~ ^\.changeset\/.+\.md$ ]]; then | |
echo "Changeset found: $filename" | |
exit 0 | |
fi | |
done | |
echo "Creating changeset" | |
cat > .changeset/${{ github.event.pull_request.head.sha }}.md <<-EOF | |
--- | |
"ggt": patch | |
--- | |
${{ github.event.pull_request.title }} | |
EOF | |
echo "changeset_added=true" >> $GITHUB_OUTPUT | |
- if: steps.changeset.outputs.changeset_added == 'true' | |
name: Push changeset | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: Added changeset | |
- if: steps.changeset.outputs.changeset_added != 'true' | |
name: Merge PR | |
run: gh pr merge --auto --squash "$PR_URL" | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
PR_URL: ${{ github.event.pull_request.html_url }} |