1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00

ci: actually fix workflow permissions (#22644)

Also adds a lint to ensure this file is kept up to date.
This commit is contained in:
David Sherret 2024-03-01 11:11:32 -05:00 committed by GitHub
parent 878384aefa
commit 7ac0408330
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 38 additions and 14 deletions

View file

@ -301,6 +301,9 @@ function handleMatrixItems(items: {
const ci = { const ci = {
name: "ci", name: "ci",
permissions: {
contents: "write",
},
on: { on: {
push: { push: {
branches: ["main"], branches: ["main"],
@ -1075,11 +1078,18 @@ const ci = {
}, },
}; };
let finalText = `# GENERATED BY ./ci.generate.ts -- DO NOT DIRECTLY EDIT\n\n`; export function generate() {
finalText += yaml.stringify(ci, { let finalText = `# GENERATED BY ./ci.generate.ts -- DO NOT DIRECTLY EDIT\n\n`;
finalText += yaml.stringify(ci, {
noRefs: true, noRefs: true,
lineWidth: 10_000, lineWidth: 10_000,
noCompatMode: true, noCompatMode: true,
}); });
return finalText;
}
Deno.writeTextFileSync(new URL("./ci.yml", import.meta.url), finalText); export const CI_YML_URL = new URL("./ci.yml", import.meta.url);
if (import.meta.main) {
Deno.writeTextFileSync(CI_YML_URL, generate());
}

View file

@ -1,6 +1,8 @@
# GENERATED BY ./ci.generate.ts -- DO NOT DIRECTLY EDIT # GENERATED BY ./ci.generate.ts -- DO NOT DIRECTLY EDIT
name: ci name: ci
permissions:
contents: write
on: on:
push: push:
branches: branches:

View file

@ -2,6 +2,7 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { buildMode, getPrebuilt, getSources, join, ROOT_PATH } from "./util.js"; import { buildMode, getPrebuilt, getSources, join, ROOT_PATH } from "./util.js";
import { checkCopyright } from "./copyright_checker.js"; import { checkCopyright } from "./copyright_checker.js";
import * as ciFile from "../.github/workflows/ci.generate.ts";
const promises = []; const promises = [];
@ -12,17 +13,18 @@ if (!js && !rs) {
rs = true; rs = true;
} }
if (js) {
promises.push(dlint());
promises.push(dlintPreferPrimordials());
}
if (rs) { if (rs) {
promises.push(clippy()); promises.push(clippy());
} }
if (js && rs) { if (js) {
promises.push(dlint());
promises.push(dlintPreferPrimordials());
promises.push(ensureCiYmlUpToDate());
if (rs) {
promises.push(checkCopyright()); promises.push(checkCopyright());
}
} }
const results = await Promise.allSettled(promises); const results = await Promise.allSettled(promises);
@ -164,3 +166,13 @@ async function clippy() {
throw new Error("clippy failed"); throw new Error("clippy failed");
} }
} }
async function ensureCiYmlUpToDate() {
const expectedCiFileText = ciFile.generate();
const actualCiFileText = await Deno.readTextFile(ciFile.CI_YML_URL);
if (expectedCiFileText !== actualCiFileText) {
throw new Error(
"./.github/workflows/ci.yml is out of date. Run: ./.github/workflows/ci.generate.ts",
);
}
}