Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e02fbb597 | ||
|
|
b534e3a243 | ||
|
|
523f24c92f | ||
|
|
0901deea32 | ||
|
|
59620fae2d | ||
|
|
3fbdfd5f2e | ||
|
|
57a5994e12 |
@@ -51,11 +51,9 @@ jobs:
|
||||
|
||||
- name: Create PR
|
||||
run: |
|
||||
LAST_PR=$(gh pr list --repo ${{ github.repository }} --limit 1 --state merged --search "Release version" --json number | jq -r '.[0].number')
|
||||
./script/workflows/generate-release-notes.sh $LAST_PR ${{ env.new_version }}
|
||||
gh pr create \
|
||||
--title "Release version ${{ env.new_version }}" \
|
||||
--body-file releasenotes.md \
|
||||
--body "Release version ${{ env.new_version }}" \
|
||||
--base main \
|
||||
--head release/${{ env.new_version }}
|
||||
env:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actions/expressions",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"source": "./src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actions/languageserver",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"description": "Language server for GitHub Actions",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
@@ -43,12 +43,15 @@
|
||||
"watch": "tsc --build tsconfig.build.json --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/languageservice": "^0.3.5",
|
||||
"@actions/workflow-parser": "^0.3.5",
|
||||
"@actions/languageservice": "^0.3.4",
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"@octokit/rest": "^19.0.7",
|
||||
"@octokit/types": "^9.0.0",
|
||||
"@roamhq/mac-ca": "^1.0.7",
|
||||
"node-forge": "^1.3.1",
|
||||
"vscode-languageserver": "^8.0.2",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"win-ca": "^3.5.0",
|
||||
"yaml": "^2.1.3"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
export class CertificateReader {
|
||||
getAllRootCAs(): string[] {
|
||||
switch (process.platform) {
|
||||
case "darwin":
|
||||
return this.getMacOSCerts();
|
||||
case "win32":
|
||||
return this.getWindowsCerts();
|
||||
default:
|
||||
// We only support self-signed certs from Windows anc MacOS
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
private getMacOSCerts(): string[] {
|
||||
// loading modules here prevents unnecessary module loading
|
||||
// see: https://stackoverflow.com/questions/9132772/lazy-loading-in-node-js
|
||||
const macCa = require("@roamhq/mac-ca");
|
||||
const forge = require("node-forge");
|
||||
|
||||
return macCa.all().map((cert: any) => forge.pki.certificateToPem(cert));
|
||||
}
|
||||
|
||||
private getWindowsCerts(): string[] {
|
||||
const ca = require("win-ca");
|
||||
|
||||
let rootCAs: string[] = [];
|
||||
|
||||
ca({
|
||||
format: ca.der2.pem,
|
||||
ondata: (crt: string) => rootCAs.push(crt)
|
||||
});
|
||||
|
||||
return rootCAs;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,27 @@
|
||||
import {Octokit} from "@octokit/rest";
|
||||
import {Agent} from "node:https";
|
||||
import {CertificateReader} from "./certificate-reader";
|
||||
|
||||
export function getClient(token: string, userAgent?: string): Octokit {
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`
|
||||
});
|
||||
const certReader = new CertificateReader();
|
||||
const selfSignedCerts = certReader.getAllRootCAs();
|
||||
|
||||
if (selfSignedCerts.length > 0) {
|
||||
const httpsAgent = new Agent({
|
||||
ca: selfSignedCerts
|
||||
});
|
||||
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`,
|
||||
request: {
|
||||
agent: httpsAgent
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return new Octokit({
|
||||
auth: token,
|
||||
userAgent: userAgent || `GitHub Actions Language Server`
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ export async function getSecrets(
|
||||
}
|
||||
|
||||
const eventsConfig = workflowContext?.template?.events;
|
||||
|
||||
if (eventsConfig?.workflow_call) {
|
||||
// Unpredictable secrets may be passed in via a workflow_call trigger
|
||||
secretsContext.complete = false;
|
||||
@@ -39,7 +38,6 @@ export async function getSecrets(
|
||||
}
|
||||
|
||||
let environmentName: string | undefined;
|
||||
|
||||
if (workflowContext?.job?.environment) {
|
||||
if (isString(workflowContext.job.environment)) {
|
||||
environmentName = workflowContext.job.environment.value;
|
||||
@@ -48,17 +46,10 @@ export async function getSecrets(
|
||||
if (isString(x.key) && x.key.value === "name") {
|
||||
if (isString(x.value)) {
|
||||
environmentName = x.value.value;
|
||||
} else {
|
||||
// this means we have a dynamic enviornment, in those situations we
|
||||
// want to make sure we skip doing secret validation
|
||||
secretsContext.complete = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// if the expression is something like environment: ${{ ... }} then we want to skip validation
|
||||
secretsContext.complete = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actions/languageservice",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"description": "Language service for GitHub Actions",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
@@ -44,8 +44,8 @@
|
||||
"watch": "tsc --build tsconfig.build.json --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/expressions": "^0.3.5",
|
||||
"@actions/workflow-parser": "^0.3.5",
|
||||
"@actions/expressions": "^0.3.4",
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"vscode-languageserver-types": "^3.17.2",
|
||||
"vscode-uri": "^3.0.7",
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||
"useWorkspaces": true,
|
||||
"version": "0.3.5"
|
||||
"version": "0.3.4"
|
||||
}
|
||||
|
||||
Generated
+64
-11
@@ -135,7 +135,7 @@
|
||||
},
|
||||
"expressions": {
|
||||
"name": "@actions/expressions",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.0.3",
|
||||
@@ -395,15 +395,18 @@
|
||||
},
|
||||
"languageserver": {
|
||||
"name": "@actions/languageserver",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/languageservice": "^0.3.5",
|
||||
"@actions/workflow-parser": "^0.3.5",
|
||||
"@actions/languageservice": "^0.3.4",
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"@octokit/rest": "^19.0.7",
|
||||
"@octokit/types": "^9.0.0",
|
||||
"@roamhq/mac-ca": "^1.0.7",
|
||||
"node-forge": "^1.3.1",
|
||||
"vscode-languageserver": "^8.0.2",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"win-ca": "^3.5.0",
|
||||
"yaml": "^2.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -678,11 +681,11 @@
|
||||
},
|
||||
"languageservice": {
|
||||
"name": "@actions/languageservice",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/expressions": "^0.3.5",
|
||||
"@actions/workflow-parser": "^0.3.5",
|
||||
"@actions/expressions": "^0.3.4",
|
||||
"@actions/workflow-parser": "^0.3.4",
|
||||
"vscode-languageserver-textdocument": "^1.0.7",
|
||||
"vscode-languageserver-types": "^3.17.2",
|
||||
"vscode-uri": "^3.0.7",
|
||||
@@ -3695,6 +3698,14 @@
|
||||
"typescript": "^3 || ^4"
|
||||
}
|
||||
},
|
||||
"node_modules/@roamhq/mac-ca": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@roamhq/mac-ca/-/mac-ca-1.0.7.tgz",
|
||||
"integrity": "sha512-AOHGY1R0pH+dWJueA5i1gx2V19CLfDa8ojanhyd5ZSI/YDZ3szDr0NSDntFgWGKsvT4TtvNZfDWmXuwbSY9fTg==",
|
||||
"dependencies": {
|
||||
"node-forge": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@sinclair/typebox": {
|
||||
"version": "0.24.51",
|
||||
"dev": true,
|
||||
@@ -6998,6 +7009,11 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-electron": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz",
|
||||
"integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg=="
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"dev": true,
|
||||
@@ -8710,6 +8726,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
|
||||
"engines": {
|
||||
"node": ">= 6.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-gyp": {
|
||||
"version": "9.3.0",
|
||||
"dev": true,
|
||||
@@ -10688,7 +10712,6 @@
|
||||
},
|
||||
"node_modules/split": {
|
||||
"version": "1.0.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"through": "2"
|
||||
@@ -10954,7 +10977,6 @@
|
||||
},
|
||||
"node_modules/through": {
|
||||
"version": "2.3.8",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/through2": {
|
||||
@@ -11469,6 +11491,37 @@
|
||||
"string-width": "^1.0.2 || 2 || 3 || 4"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.0.tgz",
|
||||
"integrity": "sha512-0TgO/+2iz2pS3OxBy2ikovPHOYyZRdLRxRTT9ze7DpZwEpaahLFOBuac93GM3lYEVzDyf8fXskJjIX/EILvkhQ==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"is-electron": "^2.2.0",
|
||||
"make-dir": "^1.3.0",
|
||||
"node-forge": "^1.2.1",
|
||||
"split": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca/node_modules/make-dir": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
|
||||
"integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
|
||||
"dependencies": {
|
||||
"pify": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/win-ca/node_modules/pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/word-wrap": {
|
||||
"version": "1.2.3",
|
||||
"dev": true,
|
||||
@@ -11720,10 +11773,10 @@
|
||||
},
|
||||
"workflow-parser": {
|
||||
"name": "@actions/workflow-parser",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/expressions": "^0.3.5",
|
||||
"@actions/expressions": "^0.3.4",
|
||||
"cronstrue": "^2.21.0",
|
||||
"yaml": "^2.0.0-8"
|
||||
},
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Release 0.3.5
|
||||
@@ -1,32 +0,0 @@
|
||||
#!/bin/bash
|
||||
# this script is used to generate release notes for a given release
|
||||
# first argument is the pull request id for the last release
|
||||
# the second is the new release number
|
||||
|
||||
# the script then grabs every pull request merged since that pull request
|
||||
# and outputs a string of release notes
|
||||
|
||||
# get the new release number
|
||||
NEW_RELEASE=$2
|
||||
|
||||
echo "Generating release notes for $NEW_RELEASE"
|
||||
|
||||
# get the last release pull request id
|
||||
LAST_RELEASE_PR=$1
|
||||
|
||||
|
||||
|
||||
#get when the last release was merged
|
||||
LAST_RELEASE_MERGED_AT=$(gh pr view $LAST_RELEASE_PR --repo actions/languageservices --json mergedAt | jq -r '.mergedAt')
|
||||
|
||||
CHANGELIST=$(gh pr list --repo actions/languageservices --base main --state merged --json title --search "merged:>$LAST_RELEASE_MERGED_AT -label:no-release")
|
||||
|
||||
# store the release notes in a variable so we can use it later
|
||||
|
||||
echo "Release $NEW_RELEASE" >> releasenotes.md
|
||||
|
||||
echo $CHANGELIST | jq -r '.[].title' | while read line; do
|
||||
echo " - $line" >> releasenotes.md
|
||||
done
|
||||
|
||||
echo " "
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
);
|
||||
```
|
||||
|
||||
`convertWorkflowTemplate` then takes that intermediate representation and converts it to a [`WorkflowTemplate`](./src/model/workflow-template.ts) object, which is a more convenient representation for working with workflows.
|
||||
`convertWorkflowTemplate` then takes that intermediate representation and converts it to a [`WorkflowTemplate`](./src/workflow-template.ts) object, which is a more convenient representation for working with workflows.
|
||||
|
||||
```typescript
|
||||
const workflowTemplate = await convertWorkflowTemplate(result.context, result.value);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@actions/workflow-parser",
|
||||
"version": "0.3.5",
|
||||
"version": "0.3.4",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"source": "./src/index.ts",
|
||||
@@ -43,7 +43,7 @@
|
||||
"watch": "tsc --build tsconfig.build.json --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/expressions": "^0.3.5",
|
||||
"@actions/expressions": "^0.3.4",
|
||||
"cronstrue": "^2.21.0",
|
||||
"yaml": "^2.0.0-8"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user