From da8511a4fd130c461e778edc698762a3c2b6c6ee Mon Sep 17 00:00:00 2001
From: Guilherme Kammsetzer <6863574+guilhermelimak@users.noreply.github.com>
Date: Mon, 14 Nov 2022 14:08:13 -0300
Subject: [PATCH] feat: set target release as bump commit (#171)
This is done to avoid commits made on master after the release PR was created to be included in the release.
---
README.md | 5 ++-
action.yml | 4 ++
dist/index.js | 104 ++++++++++++++++++++++++++-----------------
src/const.js | 1 +
src/openPr.js | 4 ++
src/release.js | 2 +-
test/bump.test.js | 8 +++-
test/release.test.js | 22 ++++++++-
8 files changed, 103 insertions(+), 47 deletions(-)
diff --git a/README.md b/README.md
index 0d4ac852..6c2dc97e 100644
--- a/README.md
+++ b/README.md
@@ -129,7 +129,7 @@ jobs:
npm-tag: ${{ github.event.inputs.tag }}
```
-> Not all symbols that can be used in GitHub usernames are valid in secret names. One such example is the hyphen symbol (`-`). In such cases, this approach will not work.
+> Not all symbols that can be used in GitHub usernames are valid in secret names. One such example is the hyphen symbol (`-`). In such cases, this approach will not work.
## How to add a build step to your workflow
@@ -142,7 +142,7 @@ It is important to be aware that you are responsible for:
You can customize it by executing additional steps before the `nearform/optic-release-automation-action` step execution as shown in the next example.
2. The command to build the project, starting from the installation to the cleanup if needed.
You can set any automations like [git hooks](https://git-scm.com/book/it/v2/Customizing-Git-Git-Hooks) or [`pre/post` scripts](https://docs.npmjs.com/cli/v8/using-npm/scripts#pre--post-scripts) to execute within the `build-command` step.
-The build's output will be committed to the `release/${new semver version}` branch, unless the project's `.gitignore` blocks it.
+The build's output will be committed to the `release/${new semver version}` branch, unless the project's `.gitignore` blocks it.
In that case, the build's output will be packed into the Npm package during the release process.
Here an example using `npm` to build the project:
@@ -183,6 +183,7 @@ jobs:
| `npm-tag` | No | If you want to release to the Npm with a custom tag, say `next`.
(_Default: `latest`_) |
| `build-command`| No | An optional build commit to run after the version bump and before releasing the package |
| `api-url` | No | GitHub App URL. You wouldn't need to set this unless you're deploying a custom GitHub app instead of [optic-release-automation](https://github.com/apps/optic-release-automation).
(_Default: `https://optic-release-automation-ocrlhra4va-ue.a.run.app/`_) |
+| `app-name` | No | GitHub App name. You also wouldn't need to set this unless you're deploying a custom GitHub app.
(_Default: `optic-release-automation[bot]`_) |
| `sync-semver-tags`| No | If you want to keep the major and minor versions git tags synced to the latest appropriate commit
(_Default: `false`_) |
| `notify-linked-issues`| No | An optional flag to enable an automatic comment on all issues linked to each release so that people following those issues get notified of the code being released.
(_Default: `true`_) |
| `artifact-path`| No | Set this input to the distribution folder or file you want to add as the main asset for your release. It will be downloadable from the release page and a preview of it will be available in the pull request. |
diff --git a/action.yml b/action.yml
index ba458650..4477eba3 100644
--- a/action.yml
+++ b/action.yml
@@ -40,6 +40,10 @@ inputs:
description: 'Url of the API where the application is running'
required: false
default: 'https://optic-release-automation-ocrlhra4va-ue.a.run.app/'
+ app-name:
+ description: 'Name of the github app that authors optic PRs in the following format: `app-name[bot]`'
+ required: false
+ default: 'optic-release-automation[bot]'
sync-semver-tags:
description: 'If you want to keep the major and minor versions tag synced to the latest appropriate commit'
required: false
diff --git a/dist/index.js b/dist/index.js
index affcba6d..989d61af 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -2757,7 +2757,7 @@ exports.withCustomRequest = withCustomRequest;
Object.defineProperty(exports, "__esModule", ({ value: true }));
-const VERSION = "2.18.0";
+const VERSION = "2.21.3";
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
@@ -2929,7 +2929,7 @@ const composePaginateRest = Object.assign(paginate, {
iterator
});
-const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/actions/runners/downloads", "GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /organizations/{organization_id}/custom_roles", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/runners/downloads", "GET /orgs/{org}/actions/runners/{runner_id}/labels", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/external-groups", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runners/downloads", "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/autolinks", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/tags/protection", "GET /repos/{owner}/{repo}/teams", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /scim/v2/enterprises/{enterprise}/Groups", "GET /scim/v2/enterprises/{enterprise}/Users", "GET /scim/v2/organizations/{org}/Users", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/team-sync/group-mappings", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/codespaces/secrets/{secret_name}/repositories", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
+const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
function isPaginatingEndpoint(arg) {
if (typeof arg === "string") {
@@ -3038,6 +3038,8 @@ const Endpoints = {
createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
+ deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
+ deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
@@ -3054,6 +3056,7 @@ const Endpoints = {
downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
+ getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
@@ -3259,6 +3262,7 @@ const Endpoints = {
createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
+ deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
@@ -3270,6 +3274,11 @@ const Endpoints = {
getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
listForAuthenticatedUser: ["GET /user/codespaces"],
+ listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
+ renamedParameters: {
+ org_id: "org"
+ }
+ }],
listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
@@ -3279,6 +3288,7 @@ const Endpoints = {
setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
+ stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
},
dependabot: {
@@ -3298,6 +3308,7 @@ const Endpoints = {
setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]
},
dependencyGraph: {
+ createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
},
emojis: {
@@ -3961,7 +3972,7 @@ const Endpoints = {
}
};
-const VERSION = "5.14.0";
+const VERSION = "5.16.2";
function endpointsToMethods(octokit, endpointsMap) {
const newMethods = {};
@@ -7227,63 +7238,67 @@ module.exports = AggregateError;
/***/ 3682:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
-var register = __nccwpck_require__(4670)
-var addHook = __nccwpck_require__(5549)
-var removeHook = __nccwpck_require__(6819)
+var register = __nccwpck_require__(4670);
+var addHook = __nccwpck_require__(5549);
+var removeHook = __nccwpck_require__(6819);
// bind with array of arguments: https://stackoverflow.com/a/21792913
-var bind = Function.bind
-var bindable = bind.bind(bind)
-
-function bindApi (hook, state, name) {
- var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])
- hook.api = { remove: removeHookRef }
- hook.remove = removeHookRef
+var bind = Function.bind;
+var bindable = bind.bind(bind);
- ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
- var args = name ? [state, kind, name] : [state, kind]
- hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)
- })
+function bindApi(hook, state, name) {
+ var removeHookRef = bindable(removeHook, null).apply(
+ null,
+ name ? [state, name] : [state]
+ );
+ hook.api = { remove: removeHookRef };
+ hook.remove = removeHookRef;
+ ["before", "error", "after", "wrap"].forEach(function (kind) {
+ var args = name ? [state, kind, name] : [state, kind];
+ hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
+ });
}
-function HookSingular () {
- var singularHookName = 'h'
+function HookSingular() {
+ var singularHookName = "h";
var singularHookState = {
- registry: {}
- }
- var singularHook = register.bind(null, singularHookState, singularHookName)
- bindApi(singularHook, singularHookState, singularHookName)
- return singularHook
+ registry: {},
+ };
+ var singularHook = register.bind(null, singularHookState, singularHookName);
+ bindApi(singularHook, singularHookState, singularHookName);
+ return singularHook;
}
-function HookCollection () {
+function HookCollection() {
var state = {
- registry: {}
- }
+ registry: {},
+ };
- var hook = register.bind(null, state)
- bindApi(hook, state)
+ var hook = register.bind(null, state);
+ bindApi(hook, state);
- return hook
+ return hook;
}
-var collectionHookDeprecationMessageDisplayed = false
-function Hook () {
+var collectionHookDeprecationMessageDisplayed = false;
+function Hook() {
if (!collectionHookDeprecationMessageDisplayed) {
- console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4')
- collectionHookDeprecationMessageDisplayed = true
+ console.warn(
+ '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
+ );
+ collectionHookDeprecationMessageDisplayed = true;
}
- return HookCollection()
+ return HookCollection();
}
-Hook.Singular = HookSingular.bind()
-Hook.Collection = HookCollection.bind()
+Hook.Singular = HookSingular.bind();
+Hook.Collection = HookCollection.bind();
-module.exports = Hook
+module.exports = Hook;
// expose constructors as a named property for TypeScript
-module.exports.Hook = Hook
-module.exports.Singular = Hook.Singular
-module.exports.Collection = Hook.Collection
+module.exports.Hook = Hook;
+module.exports.Singular = Hook.Singular;
+module.exports.Collection = Hook.Collection;
/***/ }),
@@ -26194,6 +26209,7 @@ try {
exports.PR_TITLE_PREFIX = '[OPTIC-RELEASE-AUTOMATION]'
exports.ZIP_EXTENSION = '.zip'
+exports.APP_NAME = 'optic-release-automation[bot]'
/***/ }),
@@ -26322,14 +26338,18 @@ module.exports = async function ({ context, inputs, packageVersion }) {
'-m',
`"${transformCommitMessage(messageTemplate, newVersion)}"`,
])
+
await run('git', ['push', 'origin', branchName])
+ const releaseCommitHash = await run('git', ['rev-parse', 'HEAD'])
+
const { data: draftRelease } = await callApi(
{
method: 'POST',
endpoint: 'release',
body: {
version: newVersion,
+ target: releaseCommitHash,
},
},
inputs
@@ -26407,7 +26427,7 @@ module.exports = async function ({ github, context, inputs }) {
if (
context.payload.action !== 'closed' ||
- pr.user.login !== 'optic-release-automation[bot]' ||
+ pr.user.login !== inputs['app-name'] ||
!pr.title.startsWith(PR_TITLE_PREFIX)
) {
logWarning('skipping release.')
diff --git a/src/const.js b/src/const.js
index 05b0cc34..0e755626 100644
--- a/src/const.js
+++ b/src/const.js
@@ -2,3 +2,4 @@
exports.PR_TITLE_PREFIX = '[OPTIC-RELEASE-AUTOMATION]'
exports.ZIP_EXTENSION = '.zip'
+exports.APP_NAME = 'optic-release-automation[bot]'
diff --git a/src/openPr.js b/src/openPr.js
index 4f7b69e9..d9aa81e7 100644
--- a/src/openPr.js
+++ b/src/openPr.js
@@ -72,14 +72,18 @@ module.exports = async function ({ context, inputs, packageVersion }) {
'-m',
`"${transformCommitMessage(messageTemplate, newVersion)}"`,
])
+
await run('git', ['push', 'origin', branchName])
+ const releaseCommitHash = await run('git', ['rev-parse', 'HEAD'])
+
const { data: draftRelease } = await callApi(
{
method: 'POST',
endpoint: 'release',
body: {
version: newVersion,
+ target: releaseCommitHash,
},
},
inputs
diff --git a/src/release.js b/src/release.js
index 3adef8f0..07b6c6b9 100644
--- a/src/release.js
+++ b/src/release.js
@@ -21,7 +21,7 @@ module.exports = async function ({ github, context, inputs }) {
if (
context.payload.action !== 'closed' ||
- pr.user.login !== 'optic-release-automation[bot]' ||
+ pr.user.login !== inputs['app-name'] ||
!pr.title.startsWith(PR_TITLE_PREFIX)
) {
logWarning('skipping release.')
diff --git a/test/bump.test.js b/test/bump.test.js
index 743f1e4a..67b224af 100644
--- a/test/bump.test.js
+++ b/test/bump.test.js
@@ -12,7 +12,11 @@ const artifactAction = require('../src/utils/artifact')
const { PR_TITLE_PREFIX } = require('../src/const')
const TEST_VERSION = '3.1.1'
-const runSpawnStub = sinon.stub().returns(TEST_VERSION)
+const TEST_COMMIT_HASH = 'c86b0a35014a7036b245f81ff9de9bd738a5fe95'
+const runSpawnStub = sinon.stub()
+
+runSpawnStub.returns(TEST_VERSION)
+runSpawnStub.withArgs('git', ['rev-parse', 'HEAD']).returns(TEST_COMMIT_HASH)
function setup() {
const coreStub = sinon.stub(core)
@@ -181,6 +185,7 @@ tap.test('should work with a custom version-prefix', async () => {
endpoint: 'release',
body: {
version: TEST_VERSION,
+ target: TEST_COMMIT_HASH,
},
},
prData.inputs
@@ -206,6 +211,7 @@ tap.test('should call the release endpoint with a new version', async () => {
endpoint: 'release',
body: {
version: `v${TEST_VERSION}`,
+ target: TEST_COMMIT_HASH,
},
},
DEFAULT_ACTION_DATA.inputs
diff --git a/test/release.test.js b/test/release.test.js
index 38334ac2..19a21c56 100644
--- a/test/release.test.js
+++ b/test/release.test.js
@@ -13,7 +13,7 @@ const notifyIssuesAction = require('../src/utils/notifyIssues')
const revertCommitAction = require('../src/utils/revertCommit')
const callApiAction = require('../src/utils/callApi')
-const { PR_TITLE_PREFIX } = require('../src/const')
+const { PR_TITLE_PREFIX, APP_NAME } = require('../src/const')
const actionLog = require('../src/log')
let deleteReleaseStub = sinon.stub().resolves()
@@ -33,6 +33,7 @@ const DEFAULT_ACTION_DATA = {
},
inputs: {
semver: 'patch',
+ 'app-name': APP_NAME,
},
context: {
eventName: 'pull_request',
@@ -187,6 +188,7 @@ tap.test('Should publish to npm without optic', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
},
})
@@ -205,6 +207,7 @@ tap.test('Should not publish to npm if there is no npm token', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
},
@@ -218,6 +221,7 @@ tap.test('Should publish to npm with optic', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
},
@@ -235,6 +239,7 @@ tap.test('Should tag versions', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -251,6 +256,7 @@ tap.test('Should call the release method', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -268,6 +274,7 @@ tap.test('Should call the release method', async () => {
},
},
{
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -282,6 +289,7 @@ tap.test(
const data = clone(DEFAULT_ACTION_DATA)
data.context.payload.pull_request.merged = false
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -297,6 +305,7 @@ tap.test("Should NOT use npm if the pr wasn't merged", async () => {
const data = clone(DEFAULT_ACTION_DATA)
data.context.payload.pull_request.merged = false
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -310,6 +319,7 @@ tap.test("Should NOT tag version in git if the pr wasn't merged", async () => {
const data = clone(DEFAULT_ACTION_DATA)
data.context.payload.pull_request.merged = false
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -351,6 +361,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -368,6 +379,7 @@ tap.test('Should call core.setFailed if the release fails', async () => {
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -388,6 +400,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -408,6 +421,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -426,6 +440,7 @@ tap.test('Should tag the major, minor & patch correctly for 0', async () => {
const data = clone(DEFAULT_ACTION_DATA)
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -448,6 +463,7 @@ tap.test('Should tag the major, minor & patch correctly', async () => {
const data = clone(DEFAULT_ACTION_DATA)
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -472,6 +488,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -495,6 +512,7 @@ tap.test(
const data = clone(DEFAULT_ACTION_DATA)
data.inputs = {
+ ...data.inputs,
'npm-token': 'a-token',
'optic-token': 'optic-token',
'sync-semver-tags': 'true',
@@ -519,6 +537,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'notify-linked-issues': 'true',
},
@@ -542,6 +561,7 @@ tap.test(
await release({
...DEFAULT_ACTION_DATA,
inputs: {
+ 'app-name': APP_NAME,
'npm-token': 'a-token',
'notify-linked-issues': 'false',
},