
अधिकृत सुरक्षा-अनुसंधान प्रयोगशाला CVE-2021-21423 (GHSA-gg2g-m5wc-vccq) का पुनरुत्पादन कर रही है: issue_comment के माध्यम से projen rebuild-bot pwn अनुरोध
स्वचालित शोध आर्टिफैक्ट — अपस्ट्रीम प्रोजेक्ट नहीं।
यह रिपॉजिटरी Université Laval में मास्टर थीसिस के लिए एक स्वचालित हार्नेस द्वारा निर्मित एक डिस्पोजेबल लैब है, जो प्रकाशित GitHub Actions वर्कफ़्लो कमजोरियों को पुन: प्रस्तुत करने पर केंद्रित है। यह
projen/projenका कमिट284d9162b9903c1828aa13ab56420c1183c49d40(2021-03-09) पर एक शब्दशः स्नैपशॉट है, जो उस प्रोजेक्ट के अपने लाइसेंस के तहत पुनर्वितरित किया गया है, जिसकी फ़ाइल इस स्नैपशॉट में अपरिवर्तित शामिल है।अपस्ट्रीम प्रोजेक्ट शामिल नहीं है, उसे कभी लक्षित नहीं किया जाता है, और यहाँ अध्ययन की गई कमजोरी पहले से ही सार्वजनिक है। इस रिपॉजिटरी में हर सीक्रेट और वेरिएबल एक यादृच्छिक रूप से उत्पन्न डमी मान है — कोई वास्तविक क्रेडेंशियल मौजूद नहीं है। एक्शन संदर्भ और रनर इमेज उसी पर पिन किए गए हैं जो 2021-03-09 को हल हुए थे; स्नैपशॉट में किए गए हर बदलाव के लिए हार्नेस आउटपुट में
pinning.mdदेखें।प्रश्न या आपत्तियाँ: [email protected]
जटिल प्रोजेक्ट कॉन्फ़िगरेशन को कोड के माध्यम से परिभाषित और बनाए रखें।
#TemplatesAreEvil आंदोलन में शामिल हों!
projen package.json, tsconfig.json, .gitignore, GitHub Workflows, eslint, jest आदि जैसी प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों को JavaScript में लिखी गई एक अच्छी तरह से टाइप की गई परिभाषा से संश्लेषित करता है।
projen के बारे में यह टॉक देखें।
मौजूदा टेम्प्लेटिंग/स्कैफोल्डिंग टूल्स के विपरीत, projen एक एक-बार का जनरेटर नहीं है। संश्लेषित फ़ाइलों को कभी भी मैन्युअल रूप से संपादित नहीं किया जाना चाहिए (वास्तव में, projen इसे लागू करता है)। अपने प्रोजेक्ट सेटअप को संशोधित करने के लिए, उपयोगकर्ता समृद्ध, मजबूती से टाइप किए गए क्लास के साथ इंटरैक्ट करते हैं और अपनी प्रोजेक्ट कॉन्फ़िगरेशन फ़ाइलों को अपडेट करने के लिए projen निष्पादित करते हैं।
एक नया प्रोजेक्ट बनाने के लिए, निम्न कमांड चलाएँ और निर्देशों का पालन करें:```console $ mkdir my-project $ cd my-project $ git init $ npx projen new PROJECT-TYPE 🤖 Synthesizing project... ...
वर्तमान में समर्थित प्रोजेक्ट प्रकार (सूची के लिए बिना किसी प्रकार के `npx projen new` उपयोग करें):
<!-- <macro exec="node ./scripts/readme-projects.js"> -->
* [awscdk-app-ts](https://github.com/projen/projen/blob/master/API.md#projen-awscdktypescriptapp) - TypeScript में AWS CDK ऐप।
* [awscdk-construct](https://github.com/projen/projen/blob/master/API.md#projen-awscdkconstructlibrary) - AWS CDK कंस्ट्रक्ट लाइब्रेरी प्रोजेक्ट।
* [cdk8s-construct](https://github.com/projen/projen/blob/master/API.md#projen-constructlibrarycdk8s) - CDK8s कंस्ट्रक्ट लाइब्रेरी प्रोजेक्ट।
* [java](https://github.com/projen/projen/blob/master/API.md#projen-java.javaproject) - Java प्रोजेक्ट।
* [jsii](https://github.com/projen/projen/blob/master/API.md#projen-jsiiproject) - बहु-भाषा jsii लाइब्रेरी प्रोजेक्ट।
* [nextjs](https://github.com/projen/projen/blob/master/API.md#projen-web.nextjsproject) - TypeScript के बिना Next.js प्रोजेक्ट।
* [nextjs-ts](https://github.com/projen/projen/blob/master/API.md#projen-web.nextjstypescriptproject) - TypeScript के साथ Next.js प्रोजेक्ट।
* [node](https://github.com/projen/projen/blob/master/API.md#projen-nodeproject) - Node.js प्रोजेक्ट।
* [project](https://github.com/projen/projen/blob/master/API.md#projen-project) - आधार प्रोजेक्ट।
* [python](https://github.com/projen/projen/blob/master/API.md#projen-python.pythonproject) - Python प्रोजेक्ट।
* [react](https://github.com/projen/projen/blob/master/API.md#projen-web.reactproject) - TypeScript के बिना React प्रोजेक्ट।
* [react-ts](https://github.com/projen/projen/blob/master/API.md#projen-web.reacttypescriptproject) - TypeScript के साथ React प्रोजेक्ट।
* [typescript](https://github.com/projen/projen/blob/master/API.md#projen-typescriptproject) - TypeScript प्रोजेक्ट।
* [typescript-app](https://github.com/projen/projen/blob/master/API.md#projen-typescriptappproject) - TypeScript ऐप।
<!-- </macro> -->
> बूटस्ट्रैपिंग के दौरान अधिकांश प्रोजेक्ट विकल्प निर्दिष्ट करने की अनुमति देने वाले कमांड लाइन स्विच की सूची देखने के लिए `npx projen new PROJECT-TYPE --help` उपयोग करें।
> उदाहरण के लिए: `npx projen new jsii --author-name "Jerry Berry"`।
`new` कमांड एक `.projenrc.js` फ़ाइल बनाएगा जो `jsii` प्रोजेक्ट्स के लिए इस प्रकार दिखती है:```js
const { JsiiProject } = require('projen');
const project = new JsiiProject({
authorAddress: "[email protected]",
authorName: "Elad Ben-Israel",
name: "foobar",
repository: "https://github.com/eladn/foobar.git",
});
project.synth();
यह प्रोग्राम न्यूनतम सेटअप के साथ प्रोजेक्ट प्रकार को इंस्टैंशिएट करता है, और फिर प्रोजेक्ट फ़ाइलों को संश्लेषित करने के लिए synth() को कॉल करता है। डिफ़ॉल्ट रूप से, new कमांड इस प्रोग्राम को भी निष्पादित करेगा, जिसके परिणामस्वरूप एक पूरी तरह से कार्यशील प्रोजेक्ट मिलेगा।
एक बार आपका प्रोजेक्ट बन जाने के बाद, आप .projenrc.js को संपादित करके और फिर से संश्लेषित करने के लिए npx projen को फिर से चलाकर अपने प्रोजेक्ट को कॉन्फ़िगर कर सकते हैं।
projen द्वारा उत्पन्न फ़ाइलों को एक "कार्यान्वयन विवरण" माना जाता है और projen उन्हें मैन्युअल रूप से संपादित होने से बचाता है (अधिकांश फ़ाइलें केवल-पढ़ने के लिए चिह्नित हैं, और CI बिल्ड वर्कफ़्लो में एक "एंटी-टैम्पर" जांच कॉन्फ़िगर की गई है ताकि यह सुनिश्चित किया जा सके कि बिल्ड के दौरान फ़ाइलें अपडेट न हों)।
उदाहरण के लिए, jsii प्रोजेक्ट्स में PyPI प्रकाशन सेट करने के लिए, आप python option का उपयोग कर सकते हैं:```js
const project = new JsiiProject({
// ...
python: {
distName: "mydist",
module: "my_module",
}
});
चलाएँ:
```bash
docker run -d --name=wazigate -e WAZIGATE_MODE=local -p 80:80 -v /var/lib/wazigate:/var/lib/wazigate waziup/wazigate
फिर अपने ब्राउज़र में http://localhost खोलें।```shell
npx projen
और आप देखेंगे कि आपकी `package.json` फ़ाइल में अब इसके `jsii` कॉन्फ़िग में एक `python` सेक्शन है और GitHub `release.yml` वर्कफ़्लो में एक PyPI पब्लिशिंग स्टेप शामिल है।
हम अनुशंसा करते हैं कि इसे अपने शेल प्रोफ़ाइल में रखें, ताकि जब भी आप `.projenrc.js` अपडेट करें, आप बस `pj` चला सकें:```bash
alias pj='npx projen'
अधिकांश प्रोजेक्ट एक start कमांड का समर्थन करते हैं जो वर्कफ़्लो गतिविधियों का एक मेनू प्रदर्शित करता है:```shell
$ yarn start
? Scripts: (Use arrow keys)
BUILD ❯ compile Only compile watch Watch & compile in the background build Full release build (test+compile)
TEST test Run tests test:watch Run jest in watch mode eslint Runs eslint against the codebase
...
`build` कमांड वही कमांड है जो आपके CI बिल्ड में निष्पादित की जाती है। यह
आमतौर पर आपके मॉड्यूल को वितरण के लिए संकलित, लिंट, परीक्षण और पैकेज करता है।
## विशेषताएँ
प्रोजेक्ट प्रकारों में निर्मित सुविधाओं के कुछ उदाहरण: