Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(release): [email protected] #533

Merged
merged 5 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions .github/actions/zimic-get-release-settings/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Zimic Get Release Settings
description: Zimic Get Release Settings

inputs:
project-name:
description: Project name
required: true
input-upgrade-type:
description: Upgrade type from the workflow inputs
required: false
input-pre-release-id:
description: Pre-release id from the workflow inputs
required: false
outputs:
upgrade-type:
description: Bumped version
value: ${{ steps.release-settings.outputs.upgrade-type }}
pre-release-id:
description: Bumped version
value: ${{ steps.release-settings.outputs.pre-release-id }}

runs:
using: composite
steps:
- name: Get release settings
id: release-settings
uses: actions/github-script@v7
with:
script: |
function setOutputs(outputs) {
console.log('Outputs:', outputs);

for (const [key, value] of Object.entries(outputs)) {
core.setOutput(key, value);
}
}

const eventName = '${{ github.event_name }}';
const wasManuallyTriggered = eventName === 'workflow_dispatch'

if (wasManuallyTriggered) {
console.log('This workflow was triggered manually.');

setOutputs({
'upgrade-type': '${{ inputs.input-upgrade-type }}',
'pre-release-id': '${{ inputs.input-pre-release-id }}',
})
return
}

const isMergedPullRequest =
eventName === 'pull_request' &&
'${{ github.event.pull_request.merged }}' === 'true';

if (!isMergedPullRequest) {
console.warn('This is not a merged pull request.');

setOutputs({
'upgrade-type': '',
'pre-release-id': '',
})
return
}

console.log('This is a merged pull request. ');
console.log(`Fetching labels for ${context.repo.owner}/${context.repo.repo}#${context.issue.number}...`);

const { data: labels } = await github.rest.issues.listLabelsOnIssue({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});

console.log('Labels found:', labels);

const expectedProjectName = '${{ inputs.project-name }}';

for (const label of labels) {
const labelMatch = /^(?<projectName>[^:]+):(?<upgradeType>[^-]+)(?:-(?<preReleaseId>.+))?$/.exec(label.name);

if (!labelMatch) {
console.warn(`Label '${label.name}' does not match the expected pattern. Skipping...`);
continue
}

const { projectName, upgradeType, preReleaseId = 'none' } = labelMatch.groups;

if (projectName !== expectedProjectName) {
console.warn(
`Label '${label.name}' does not match the expected project name '${expectedProjectName}'. Skipping...`
);
continue
}

console.log(`Matching label found: '${label.name}'.`);

setOutputs({
'upgrade-type': upgradeType,
'pre-release-id': preReleaseId,
})
return
}

console.warn('No matching labels found.');

setOutputs({
'upgrade-type': '',
'pre-release-id': '',
})
return
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Release Zimic
name: Release Zimic Package

on:
release:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: Create Zimic GitHub Release
name: Release Zimic to GitHub

on:
pull_request:
types:
- closed
branches:
- canary
- v*
workflow_dispatch:
inputs:
upgrade-type:
Expand Down Expand Up @@ -33,10 +39,10 @@ env:
TURBO_LOG_ORDER: stream

jobs:
create-zimic-github-release:
name: Create Zimic Github Release
release-to-github:
name: Release to GitHub
runs-on: ubuntu-latest
timeout-minutes: 3
timeout-minutes: 5

environment: GitHub

Expand All @@ -54,27 +60,37 @@ jobs:
with:
turbo-token: ${{ env.TURBO_TOKEN }}
turbo-team: ${{ env.TURBO_TEAM }}
install: zimic
install: zimic...

- name: Get Zimic release settings
id: release-settings
uses: ./.github/actions/zimic-get-release-settings
with:
project-name: zimic
input-upgrade-type: ${{ inputs.upgrade-type }}
input-pre-release-id: ${{ inputs.pre-release-id }}

- name: Bump Zimic version
id: bump-version
if: ${{ steps.release-settings.outputs.upgrade-type != '' }}
uses: ./.github/actions/zimic-bump-version
with:
project-name: zimic
project-directory: packages/zimic
upgrade-type: ${{ inputs.upgrade-type }}
pre-release-id: ${{ inputs.pre-release-id }}
upgrade-type: ${{ steps.release-settings.outputs.upgrade-type }}
pre-release-id: ${{ steps.release-settings.outputs.pre-release-id }}
commit-user-name: ${{ vars.RELEASE_COMMIT_USER_NAME }}
commit-user-email: ${{ vars.RELEASE_COMMIT_USER_EMAIL }}

- name: Create GitHub release
if: ${{ steps.release-settings.outputs.upgrade-type != '' }}
uses: ncipollo/release-action@v1
with:
name: v${{ steps.bump-version.outputs.value }}
tag: v${{ steps.bump-version.outputs.value }}
commit: ${{ steps.bump-version.outputs.commit-sha }}
token: ${{ secrets.GITHUB_TOKEN }}
makeLatest: ${{ inputs.pre-release-id == 'none' }}
prerelease: ${{ inputs.pre-release-id != 'node' }}
makeLatest: ${{ steps.release-settings.outputs.pre-release-id == 'none' }}
prerelease: ${{ steps.release-settings.outputs.pre-release-id != 'node' }}
generateReleaseNotes: true
draft: true
4 changes: 2 additions & 2 deletions apps/zimic-test-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@
"axios": "^1.7.9",
"concurrently": "^9.1.2",
"dotenv-cli": "^8.0.0",
"eslint": "^9.17.0",
"eslint": "^9.18.0",
"execa": "^9.5.2",
"node-fetch": "^3.3.2",
"playwright": "^1.49.1",
"superagent": "^10.1.1",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"vitest": "^2.1.8",
"zimic": "workspace:*"
}
Expand Down
1 change: 1 addition & 0 deletions apps/zimic-test-client/vitest.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export default defineConfig({
minWorkers: 1,
maxWorkers,
maxConcurrency: maxWorkers,
clearMocks: true,
coverage: {
provider: 'istanbul',
reporter: ['text', 'html'],
Expand Down
2 changes: 1 addition & 1 deletion examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
"@zimic/eslint-config-react": "workspace:*",
"@zimic/lint-staged-config": "workspace:*",
"@zimic/tsconfig": "workspace:*",
"eslint": "^9.17.0"
"eslint": "^9.18.0"
}
}
4 changes: 2 additions & 2 deletions examples/with-jest-jsdom/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
},
"devDependencies": {
"@jest/globals": "^29.7.0",
"@swc/core": "^1.10.4",
"@swc/core": "^1.10.7",
"@swc/jest": "^0.2.37",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/user-event": "^14.5.2",
"dotenv-cli": "^8.0.0",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"zimic": "latest"
}
}
6 changes: 3 additions & 3 deletions examples/with-jest-node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@
"types:check": "tsc --noEmit"
},
"dependencies": {
"fastify": "^5.2.0",
"fastify": "^5.2.1",
"zod": "^3.24.1"
},
"devDependencies": {
"@jest/globals": "^29.7.0",
"@swc/core": "^1.10.4",
"@swc/core": "^1.10.7",
"@swc/jest": "^0.2.37",
"@types/supertest": "^6.0.2",
"dotenv-cli": "^8.0.0",
"jest": "^29.7.0",
"supertest": "^7.0.0",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"zimic": "latest"
}
}
8 changes: 4 additions & 4 deletions examples/with-next-js-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@
"postinstall": "pnpm deps:install-playwright"
},
"dependencies": {
"@tanstack/react-query": "^5.62.15",
"@tanstack/react-query": "^5.64.0",
"clsx": "^2.1.1",
"next": "^15.1.3",
"next": "^15.1.4",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@playwright/test": "^1.49.1",
"@types/node": "^22.10.5",
"@types/react": "^19.0.2",
"@types/react": "^19.0.4",
"@types/react-dom": "^19.0.2",
"dotenv-cli": "^8.0.0",
"execa": "^9.5.2",
"postcss": "^8.4.49",
"tailwindcss": "^3.4.17",
"tsx": "^4.19.2",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"zimic": "latest"
}
}
8 changes: 4 additions & 4 deletions examples/with-next-js-pages/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,22 @@
"postinstall": "concurrently --names playwright,zimic 'pnpm deps:install-playwright' 'pnpm deps:init-zimic'"
},
"dependencies": {
"@tanstack/react-query": "^5.62.15",
"@tanstack/react-query": "^5.64.0",
"clsx": "^2.1.1",
"next": "^15.1.3",
"next": "^15.1.4",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@playwright/test": "^1.49.1",
"@types/node": "^22.10.5",
"@types/react": "^19.0.2",
"@types/react": "^19.0.4",
"@types/react-dom": "^19.0.2",
"concurrently": "^9.1.2",
"dotenv-cli": "^8.0.0",
"postcss": "^8.4.49",
"tailwindcss": "^3.4.17",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"zimic": "latest"
}
}
4 changes: 2 additions & 2 deletions examples/with-openapi-typegen/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
"typegen:github-no-env": "zimic typegen openapi $GITHUB_OPENAPI_SPEC_URL --output ./src/types/github/typegen/generated.ts --service-name GitHub --filter-file ./src/types/github/typegen/filters.txt --no-comments"
},
"dependencies": {
"fastify": "^5.2.0",
"fastify": "^5.2.1",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/supertest": "^6.0.2",
"@vitest/spy": "^2.1.8",
"dotenv-cli": "^8.0.0",
"supertest": "^7.0.0",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"vitest": "^2.1.8",
"zimic": "latest"
}
Expand Down
1 change: 1 addition & 0 deletions examples/with-openapi-typegen/vitest.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ export default defineConfig({
environment: 'node',
include: ['./tests/**/*.test.ts'],
setupFiles: ['./tests/setup.ts'],
clearMocks: true,
},
});
6 changes: 3 additions & 3 deletions examples/with-playwright/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@
},
"dependencies": {
"clsx": "^2.1.1",
"next": "^15.1.3",
"next": "^15.1.4",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@playwright/test": "^1.49.1",
"@types/node": "^22.10.5",
"@types/react": "^19.0.2",
"@types/react": "^19.0.4",
"@types/react-dom": "^19.0.2",
"dotenv-cli": "^8.0.0",
"execa": "^9.5.2",
"postcss": "^8.4.49",
"tailwindcss": "^3.4.17",
"tsx": "^4.19.2",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"zimic": "latest"
}
}
2 changes: 1 addition & 1 deletion examples/with-vitest-browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"concurrently": "^9.1.2",
"dotenv-cli": "^8.0.0",
"playwright": "^1.49.1",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"vitest": "^2.1.8",
"zimic": "latest"
}
Expand Down
1 change: 1 addition & 0 deletions examples/with-vitest-browser/vitest.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export default defineConfig({
globals: true,
include: ['./tests/**/*.test.ts'],
setupFiles: ['./tests/setup.ts'],
clearMocks: true,
browser: {
name: 'chromium',
provider: 'playwright',
Expand Down
2 changes: 1 addition & 1 deletion examples/with-vitest-jsdom/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"@testing-library/user-event": "^14.5.2",
"@vitest/spy": "^2.1.8",
"dotenv-cli": "^8.0.0",
"typescript": "^5.7.2",
"typescript": "^5.7.3",
"vitest": "^2.1.8",
"zimic": "latest"
}
Expand Down
1 change: 1 addition & 0 deletions examples/with-vitest-jsdom/vitest.config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ export default defineConfig({
environment: 'jsdom',
include: ['./tests/**/*.test.ts'],
setupFiles: ['./tests/setup.ts'],
clearMocks: true,
},
});
Loading
Loading