ਲਾਭ:
- ਸੀਆਈ/ਸੀਡੀ ਸੰਕਲਪ, ਪਾਈਪਲਾਈਨ ਸਰੀਰ ਵਿਗਿਆਨ (ਟਰਿੱਗਰ, ਨੌਕਰੀ, ਸਟੈਪ, ਰਨਰ, ਆਰਟੀਫੈਕਟ) ਅਤੇ ਗਿੱਟਹਬ ਐਕਸ਼ਨਜ਼ ਅਤੇ ਗਿਟਲੈਬ ਸੀਆਈ ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਸਮਝਣ ਦੀ ਸਮਰੱਥਾ ਅਤੇ ਸਹੀ ਸੰਦਰਭ ਦੇ ਨਾਲ ਨਕਲੀ ਬੁੱਧੀ ਪੈਦਾ ਕਰਨ ਵਾਲੀਆਂ ਪਾਈਪਲਾਈਨਾਂ ਹਨ।
- ਨਕਲੀ ਬੁੱਧੀ ਦੁਆਰਾ ਤਿਆਰ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਗੁਪਤ ਸੰਦਰਭਾਂ, ਅਨੁਮਤੀਆਂ ਅਤੇ ਅਖੌਤੀ ਭਾਗਾਂ ਦੀ ਮੌਜੂਦਗੀ ਦੀ ਜਾਂਚ ਅਤੇ ਸੁਰੱਖਿਅਤ ਕਰਨ ਦੀ ਸਮਰੱਥਾ
- ਸਾਦੇ ਪਾਠ ਵਿੱਚ ਭੇਦ ਨਾ ਲਿਖਣ ਦੇ ਸਿਧਾਂਤਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਯੋਗਤਾ, ਘੱਟੋ ਘੱਟ ਅਧਿਕਾਰ ਪ੍ਰਦਾਨ ਕਰਨਾ, ਅਤੇ ਇਸ ਨੂੰ ਸੀਆਈ ਤੋਂ ਵੱਖ ਕਰਕੇ ਤੈਨਾਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਰੱਖਣਾ।
ਆਧੁਨਿਕ ਸੌਫਟਵੇਅਰ ਦਾ ਦਿਲ ਇੱਕ ਸਵੈਚਲਿਤ ਪਾਈਪਲਾਈਨ ਹੈ ਜਿਸ ਰਾਹੀਂ ਕੋਡ ਡਿਵੈਲਪਰ ਦੇ ਕੰਪਿਊਟਰ ਨੂੰ ਉਦੋਂ ਤੱਕ ਛੱਡਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਇਹ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਗਾਹਕ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚਦਾ। ਇਸ ਪਾਈਪ ਨੂੰ CI/CD ਕਿਹਾ ਜਾਂਦਾ ਹੈ। CI (ਨਿਰੰਤਰ ਏਕੀਕਰਣ) ਹਰੇਕ ਕੋਡ ਤਬਦੀਲੀ ਦਾ ਆਟੋਮੈਟਿਕ ਸੰਕਲਨ ਅਤੇ ਟੈਸਟਿੰਗ ਹੈ; ਇਸਦਾ ਉਦੇਸ਼ ਡਿਵੈਲਪਰ ਦੇ ਕੀਬੋਰਡ ਨੂੰ ਛੱਡਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਬੱਗ ਨੂੰ ਫੜਨਾ ਹੈ। ਸੀਡੀ (ਨਿਰੰਤਰ ਡਿਲਿਵਰੀ/ਡਿਪਲਾਇਮੈਂਟ) ਆਟੋਮੈਟਿਕ ਤਿਆਰੀ ਜਾਂ ਟੈਸਟ ਕੀਤੇ ਕੋਡ ਦੀ ਰੀਲੀਜ਼ ਵੀ ਹੈ। ਇੱਕ CI/CD ਪਾਈਪਲਾਈਨ ਇੱਕ ਸੰਰਚਨਾ ਫਾਈਲ ਹੈ ਜੋ ਇਹਨਾਂ ਪੜਾਵਾਂ ਨੂੰ ਕ੍ਰਮ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ — ਆਮ ਤੌਰ 'ਤੇ YAML (ਇੱਕ ਮਨੁੱਖੀ-ਪੜ੍ਹਨਯੋਗ ਸੰਰਚਨਾ ਟੈਕਸਟ ਫਾਰਮੈਟ) ਵਿੱਚ ਲਿਖੀ ਜਾਂਦੀ ਹੈ।
ਇਹਨਾਂ YAML ਫਾਈਲਾਂ ਨੂੰ ਹੱਥਾਂ ਨਾਲ ਲਿਖਣਾ ਥਕਾਵਟ ਵਾਲਾ, ਵਰਬੋਜ਼, ਅਤੇ ਗਲਤੀ-ਪ੍ਰਵਾਨ ਹੈ; ਜੇਕਰ ਇੰਡੈਂਟੇਸ਼ਨ ਇੱਕ ਥਾਂ ਤੋਂ ਖਿਸਕ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਸਾਰੀ ਪਾਈਪਲਾਈਨ ਟੁੱਟ ਜਾਂਦੀ ਹੈ। ਇਹ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ AI ਆਉਂਦਾ ਹੈ: ਸਹੀ ਸੰਦਰਭ ਦੇ ਨਾਲ, ਇਹ ਸਕਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਕਾਰਜਸ਼ੀਲ ਡਰਾਫਟ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਪਰ ਇਹ ਸਮਝਣਾ ਅਤੇ ਤਸਦੀਕ ਕਰਨਾ ਤੁਹਾਡਾ ਕੰਮ ਹੈ ਕਿ ਹਰੇਕ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਕਦਮ ਕੀ ਕਰਦਾ ਹੈ — ਕਿਉਂਕਿ ਇਹ ਉਹ ਪਾਈਪ ਹੈ ਜੋ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਪ੍ਰੋਡ 'ਤੇ ਲੈ ਜਾਂਦੀ ਹੈ।
CI/CD ਪਾਈਪਲਾਈਨ ਦੀ ਅੰਗ ਵਿਗਿਆਨ
ਹਰੇਕ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਕਈ ਬੁਨਿਆਦੀ ਧਾਰਨਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਜਾਣੇ ਬਿਨਾਂ AI ਆਉਟਪੁੱਟ ਨੂੰ ਨਿਯੰਤਰਿਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹੋ:
- ਟਰਿੱਗਰ: ਪਾਈਪਲਾਈਨ ਕੀ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ? ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਸ਼ਾਖਾ ਨੂੰ ਧੱਕਾ, ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ (ਅਭੇਦ ਬੇਨਤੀ), ਜਾਂ ਇੱਕ ਅਨੁਸੂਚੀ.
- ਨੌਕਰੀ: ਲਾਜ਼ੀਕਲ ਯੂਨਿਟ ਜੋ ਕਦਮਾਂ ਦੀ ਲੜੀ ਨੂੰ ਚਲਾਉਂਦੀ ਹੈ; ਉਦਾਹਰਨ ਲਈ "ਟੈਸਟ", "ਬਿਲਡ", "ਡਿਪਲਾਇ"।
- ਕਦਮ: ਨੌਕਰੀ ਦੇ ਅੰਦਰ ਇੱਕ ਸਿੰਗਲ ਹੁਕਮ ਜਾਂ ਕਾਰਵਾਈ।
- ਰਨਰ: ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਜਾਂ ਕੰਟੇਨਰ ਜਿਸ 'ਤੇ ਨੌਕਰੀਆਂ ਚਲਦੀਆਂ ਹਨ।
- ਆਰਟੀਫੈਕਟ: ਇੱਕ ਨੌਕਰੀ ਦੁਆਰਾ ਪੈਦਾ ਕੀਤੀ ਆਉਟਪੁੱਟ ਅਤੇ ਬਾਅਦ ਦੀਆਂ ਨੌਕਰੀਆਂ ਦੁਆਰਾ ਵਰਤੀ ਜਾਂਦੀ ਹੈ (ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਕੰਪਾਇਲ ਕੀਤੀ ਫਾਈਲ)।
- ਗੁਪਤ: ਗੁਪਤ ਜਾਣਕਾਰੀ ਜੋ ਪਾਈਪਲਾਈਨ ਵਰਤਦੀ ਹੈ ਪਰ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਸਾਦੇ ਟੈਕਸਟ ਵਿੱਚ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ।
GitHub ਕਾਰਵਾਈਆਂ ਇਸ ਪਰਿਭਾਸ਼ਾ ਨੂੰ .github/workflows/*.yml ਫਾਈਲਾਂ ਵਿੱਚ ਰੱਖਦੀਆਂ ਹਨ; ਇਕਾਈ ਵਰਕਫਲੋ → ਨੌਕਰੀ → ਕਦਮ ਲੜੀ ਹੈ। GitLab CI, ਦੂਜੇ ਪਾਸੇ, .gitlab-ci.yml ਫਾਈਲ ਵਿੱਚ ਪੜਾਅ → ਨੌਕਰੀ ਢਾਂਚੇ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। AI ਦੋਵੇਂ ਸੰਟੈਕਸ ਜਾਣਦਾ ਹੈ, ਪਰ ਤੁਹਾਨੂੰ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਇਹ ਕਹਿਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜਾ ਚਾਹੁੰਦੇ ਹੋ।
ਸੁਝਾਅ: ਜਦੋਂ AI ਨੂੰ ਪਾਈਪਲਾਈਨਾਂ ਲਈ ਪੁੱਛਦੇ ਹੋ, ਤਾਂ ਹਮੇਸ਼ਾਂ ਨਿਸ਼ਚਿਤ ਕਰੋ: ਪਲੇਟਫਾਰਮ (GitHub ਐਕਸ਼ਨ ਜਾਂ GitLab CI), ਭਾਸ਼ਾ/ਫ੍ਰੇਮਵਰਕ (ਨੋਡ, .NET, Python…), ਟ੍ਰਿਗਰ, ਅਤੇ ਕੀ ਇਹ ਤੈਨਾਤ ਕੀਤਾ ਜਾਵੇਗਾ। ਜਾਣਕਾਰੀ ਦੇ ਇਹ ਚਾਰ ਟੁਕੜੇ ਆਉਟਪੁੱਟ ਦੀ ਉਪਯੋਗਤਾ ਨੂੰ ਦੁੱਗਣਾ ਕਰਦੇ ਹਨ।
ਕਦਮ ਦਰ ਕਦਮ: AI ਨਾਲ ਪਾਈਪਲਾਈਨ ਡਿਜ਼ਾਈਨ ਕਰਨਾ
- ਟੀਚਾ ਸਪੱਸ਼ਟ ਕਰੋ. ਜਿਵੇਂ "ਮੁੱਖ 'ਤੇ ਪੁਸ਼ ਕਰਨ 'ਤੇ ਟੈਸਟ ਚਲਾਓ, ਚਿੱਤਰ ਬਣਾਓ, ਪਰ ਸਿਰਫ ਉਦੋਂ ਹੀ ਤੈਨਾਤ ਕਰੋ ਜਦੋਂ ਟੈਗ ਸੁੱਟਿਆ ਜਾਵੇ"।
- ਪਿੰਜਰ ਪੈਦਾ ਕਰੋ। ਬੁਨਿਆਦੀ ਵਰਕਫਲੋ ਲਈ AI ਨੂੰ ਪੁੱਛੋ।
- ਪੜੋ ਅਤੇ ਕਦਮ ਸਮਝੋ। ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਹਰੇਕ ਰਨ ਅਤੇ ਵਰਤੋਂ ਲਾਈਨ ਕੀ ਕਰਦੀ ਹੈ।
- ਗੁਪਤ ਹਵਾਲੇ ਦੀ ਜਾਂਚ ਕਰੋ। ਕੀ ਰਾਜ਼ ਨੂੰ ${{ secrets.NAME }} ਨਾਲ ਬੁਲਾਇਆ ਜਾਂਦਾ ਹੈ ਜਾਂ ਕੀ ਉਹ ਕੋਡ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ?
- ਇਸਨੂੰ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਅਜ਼ਮਾਓ/CI. ਇਸਨੂੰ ਇੱਕ ਛੋਟੇ ਟੈਸਟ ਰਿਪੋਜ਼ਟਰੀ 'ਤੇ ਚਲਾਓ, ਲਾਲ-ਹਰਾ (ਫੇਲ-ਪਾਸ) ਵਿਵਹਾਰ ਦੇਖੋ।
- ਹੌਲੀ ਹੌਲੀ ਫੈਲਾਓ. ਪਹਿਲਾਂ ਸਿਰਫ਼ CI (ਟੈਸਟ) ਸ਼ਾਮਲ ਕਰੋ, ਫਿਰ ਬਿਲਡ ਕਰੋ, ਆਖਰੀ ਐਡ ਡਿਪਲੋਏ ਕਰੋ।
ਸੁਰੱਖਿਆ: ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਗੁਪਤ ਅਤੇ ਇਜਾਜ਼ਤ
CI/CD ਉਹਨਾਂ ਥਾਵਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਜਿੱਥੇ ਸਭ ਤੋਂ ਵੱਧ ਭੇਦ ਲੀਕ ਹੁੰਦੇ ਹਨ। ਤਿੰਨ ਸੁਨਹਿਰੀ ਨਿਯਮ:
- YAML ਵਿੱਚ ਕਦੇ ਵੀ ਸਾਦੇ ਟੈਕਸਟ ਵਿੱਚ ਰਾਜ਼ ਨਾ ਲਿਖੋ। ਪਲੇਟਫਾਰਮ ਦੀ ਗੁਪਤ ਰਿਪੋਜ਼ਟਰੀ (GitHub ਸੀਕਰੇਟਸ, GitLab CI/CD ਵੇਰੀਏਬਲ) ਦੀ ਵਰਤੋਂ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ${{ secrets.X }} ਨਾਲ ਕਾਲ ਕਰੋ।
- ਘੱਟੋ-ਘੱਟ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ। ਜੋ ਟੋਕਨ ਤੁਸੀਂ ਪਾਈਪਲਾਈਨ ਨੂੰ ਦਿੰਦੇ ਹੋ, ਉਸ ਕੋਲ ਸਿਰਫ਼ ਲੋੜ ਅਨੁਸਾਰ ਹੀ ਅਧਿਕਾਰ ਹੋਵੇਗਾ। ਅਨੁਮਤੀਆਂ ਦੇ ਨਾਲ ਇਸਨੂੰ ਸੰਕੁਚਿਤ ਕਰੋ: GitHub ਐਕਸ਼ਨਾਂ ਵਿੱਚ ਬਲਾਕ ਕਰੋ।
- ਲਾਗ 'ਤੇ ਗੁਪਤ ਨਾ ਦਬਾਓ। ਈਕੋ $ਟੋਕਨ ਵਰਗੀਆਂ ਲਾਈਨਾਂ ਲੌਗ ਵਿਚਲੇ ਰਾਜ਼ ਨੂੰ ਪ੍ਰਗਟ ਕਰਦੀਆਂ ਹਨ। ਪਲੇਟਫਾਰਮ ਮਾਸਕ, ਪਰ ਸਾਵਧਾਨ ਵੀ ਰਹੋ.
ਸਾਵਧਾਨ: ਸੁਵਿਧਾ ਲਈ, AI ਕਈ ਵਾਰ ਏਮਬੈਡਡ ਮੁੱਲ ਰੱਖਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਪਾਸਵਰਡ: 123456 ਜਾਂ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵਿਆਪਕ ਅਨੁਮਤੀਆਂ: ਨਮੂਨਾ ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਲਿਖੋ। ਇਸਨੂੰ ਹਮੇਸ਼ਾ ਠੀਕ ਕਰੋ: ਸੰਦਰਭ ਵਿੱਚ ਗੁਪਤ ਨੂੰ ਬਦਲੋ, ਅਨੁਮਤੀ ਨੂੰ ਸਮੇਟਣਾ।
ਤੁਲਨਾ ਚਾਰਟ
ਸੰਕਲਪ
GitHub ਕਾਰਵਾਈਆਂ
GitLab CI
ਸੰਰਚਨਾ ਫਾਇਲ
.github/workflows/*.yml
.gitlab-ci.yml
ਇਮਾਰਤ ਯੂਨਿਟ
ਵਰਕਫਲੋ → ਨੌਕਰੀ → ਕਦਮ
ਪੜਾਅ → ਨੌਕਰੀ
ਟਰਿੱਗਰ
ਦਸ:
ਨਿਯਮ: / ਸਿਰਫ਼:
ਸੰਮਨ ਗੁਪਤ
${{ ਭੇਦ।NAME }}
$NAME (CI/CD ਵੇਰੀਏਬਲ)
ਤਿਆਰ ਕੰਪੋਨੈਂਟ
ਵਰਤਦਾ ਹੈ: action@v4
ਸ਼ਾਮਲ ਕਰੋ: /ਟੈਂਪਲੇਟ
ਦੌੜਾਕ
ਚੱਲਦਾ ਹੈ:
ਟੈਗਸ:
ਤਿੰਨ ਛੋਟੇ ਕੇਸ
ਕੇਸ 1 — 6 ਘੰਟੇ ਅਤੇ 40 ਮਿੰਟ ਤੱਕ ਘਟਾ ਦਿੱਤਾ ਗਿਆ। ਇੱਕ ਟੀਮ ਆਪਣੀ ਮੈਨੂਅਲ ਟੈਸਟ-ਬਿਲਡ-ਡਿਪਲਾਇ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਵੈਚਾਲਤ ਕਰਨਾ ਚਾਹੁੰਦੀ ਸੀ, ਪਰ ਕੋਈ ਵੀ YAML ਤੋਂ ਜਾਣੂ ਨਹੀਂ ਸੀ। ਉਹਨਾਂ ਨੇ YZ ਨੂੰ "Node.js ਪ੍ਰੋਜੈਕਟ, GitHub ਐਕਸ਼ਨ, npm ਟੈਸਟ ਅਤੇ npm ਬਿਲਡ ਇਨ ਪੁਸ਼ ਟੂ ਮੇਨ, ਸਿਰਫ v* ਟੈਗ ਵਿੱਚ ਤੈਨਾਤ" ਵਜੋਂ ਦਰਸਾਇਆ। AI ਨੇ 40 ਲਾਈਨਾਂ ਦਾ ਇੱਕ ਕਾਰਜਸ਼ੀਲ ਪਿੰਜਰ ਤਿਆਰ ਕੀਤਾ; ਟੀਮ ਨੇ ਹਰ ਕਦਮ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਅਤੇ 40 ਮਿੰਟਾਂ ਵਿੱਚ ਲਾਈਵ ਹੋ ਗਈ। ਜੇ ਉਹ ਹੱਥੀਂ ਲਿਖ ਲੈਂਦੇ ਤਾਂ ਦਿਨ ਭਰ ਦਾ ਕੰਮ ਹੋਣਾ ਸੀ।
ਕੇਸ 2 — ਪ੍ਰਮਾਣਿਕਤਾ ਨੇ ਇੱਕ ਸੁਰੱਖਿਆ ਕਮਜ਼ੋਰੀ ਫੜੀ ਹੈ। ਇੱਕ ਇੰਜੀਨੀਅਰ ਨੇ ਏਆਈ ਨੂੰ ਵਰਕਫਲੋ ਨੂੰ ਤੈਨਾਤ ਕਰਨ ਲਈ ਕਿਹਾ। ਆਉਟਪੁੱਟ ਵਿੱਚ ਅਨੁਮਤੀਆਂ ਸ਼ਾਮਲ ਹਨ: ਰਾਈਟ-ਆਲ — ਭਾਵ ਟੋਕਨ ਰਿਪੋਜ਼ਟਰੀ, ਪੈਕੇਜ, ਹਰ ਚੀਜ਼ ਨੂੰ ਲਿਖ ਸਕਦਾ ਹੈ। ਇੰਜੀਨੀਅਰ ਨੇ ਇਸ ਨੂੰ ਦੇਖਿਆ ਅਤੇ ਇਸ ਨੂੰ ਅਨੁਮਤੀਆਂ ਦੇ ਨਾਲ ਘਟਾ ਦਿੱਤਾ: { ਸਮੱਗਰੀ: ਪੜ੍ਹੋ, ਪੈਕੇਜ: ਲਿਖੋ }। ਇਸ ਨੇ ਪੂਰੀ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਬਦਲਣ ਲਈ ਹਾਈਜੈਕ ਕੀਤੀ ਨਿਰਭਰਤਾ ਦੇ ਜੋਖਮ ਨੂੰ ਖਤਮ ਕਰ ਦਿੱਤਾ।
ਕੇਸ 3 - ਹੈਲੁਸੀਨੇਟਰੀ ਐਕਸ਼ਨ। ਇੱਕ ਟੀਮ ਨੇ AI-ਸੁਝਾਏ ਗਏ ਉਪਯੋਗਾਂ ਨੂੰ ਚਲਾਇਆ: actions/deploy-to-aws@v3 ਲਾਈਨ; ਅਜਿਹੀ ਕੋਈ ਅਧਿਕਾਰਤ ਕਾਰਵਾਈ ਨਹੀਂ ਸੀ, ਏਆਈ ਨੇ ਨਾਮ ਬਣਾਇਆ। "ਕਾਰਵਾਈ ਨਹੀਂ ਮਿਲੀ" ਨਾਲ ਪਾਈਪਲਾਈਨ ਫਟ ਗਈ। ਸਬਕ: ਮਾਰਕਿਟਪਲੇਸ ਵਿੱਚ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਹਰੇਕ ਕੰਪੋਨੈਂਟ ਨੂੰ ਵਰਤੋਂ ਨਾਲ ਬੁਲਾਇਆ ਗਿਆ ਹੈ: ਅਸਲ ਵਿੱਚ ਮੌਜੂਦ ਹੈ।
ਚਾਰ ਕਾਪੀ ਕਰਨ ਯੋਗ ਟੈਂਪਲੇਟ
1) ਬੁਨਿਆਦੀ CI ਵਰਕਫਲੋ:
GitHub ਕਾਰਵਾਈਆਂ ਲਈ ਇੱਕ CI ਵਰਕਫਲੋ ਲਿਖੋ। ਪ੍ਰੋਜੈਕਟ: [LANGUAGE/FRAMEWORK]।ਟਰਿੱਗਰ: ਪੁਸ਼ ਅਤੇ ਪੁਸ਼ ਬੇਨਤੀ ਨੂੰ ਮੁੱਖ ਸ਼ਾਖਾ ਵਿੱਚ ਭੇਜੋ। ਕਦਮ: ਨਿਰਭਰਤਾ ਸਥਾਪਤ ਕਰੋ, ਟੈਸਟ ਚਲਾਓ, ਲਿੰਟ ਚਲਾਓ। NO Deploy.Runner ubuntu-latest. ਕਿਸੇ ਗੁਪਤ ਦੀ ਲੋੜ ਨਹੀਂ। YAML ਐਨੋਟੇਟ ਕਰੋ।
2) ਤੈਨਾਤ ਸੀਡੀ ਵਰਕਫਲੋ (ਸੁਰੱਖਿਅਤ):
[PLATFORM] ਲਈ ਤੈਨਾਤ ਵਰਕਫਲੋ ਲਿਖੋ। ਇਹ ਸਿਰਫ਼ 'v*' ਟੈਗ 'ਤੇ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਟੀਚਾ: [ਮੀਡੀਆ/ਕਲਾਊਡ]। ਨਿਯਮ: - ਕਦੇ ਵੀ ਸਾਦੇ ਪਾਠ ਵਿੱਚ ਰਾਜ਼ ਨਾ ਲਿਖੋ, ਉਹਨਾਂ ਨੂੰ ${{ ਭੇਦ ਨਾਲ ਕਾਲ ਕਰੋ।
3) ਮੌਜੂਦਾ ਪਾਈਪਲਾਈਨ ਦਾ ਵਰਣਨ ਕਰੋ:
ਹੇਠਾਂ ਦਿੱਤੀ [ਪਲੇਟਫਾਰਮ] ਪਾਈਪਲਾਈਨ ਲਾਈਨ ਦਾ ਲਾਈਨ ਦੁਆਰਾ ਵਰਣਨ ਕਰੋ: ਹਰੇਕ ਕੰਮ ਕੀ ਕਰਦਾ ਹੈ, ਇਹ ਕਿਸ ਕ੍ਰਮ ਵਿੱਚ ਚੱਲਦਾ ਹੈ, ਇਹ ਕਿਹੜੇ ਰਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਸਦੇ ਦੋ ਸਭ ਤੋਂ ਜੋਖਮ ਵਾਲੇ ਨੁਕਤੇ ਕੀ ਹਨ? ਅੰਤ ਵਿੱਚ, 3 ਸੁਧਾਰਾਂ ਦਾ ਸੁਝਾਅ ਦਿਓ। ਪਾਈਪਲਾਈਨ: [YAML ਸਮੱਗਰੀ]
4) ਪਾਈਪਲਾਈਨ ਨੂੰ ਤੇਜ਼ ਕਰੋ:
ਹੇਠਾਂ ਦਿੱਤੀ CI ਪਾਈਪਲਾਈਨ ਹੌਲੀ-ਹੌਲੀ ਚੱਲ ਰਹੀ ਹੈ (ਅਵਧੀ: [X ਮਿੰਟ])। ਕੈਸ਼ ਦੀ ਵਰਤੋਂ, ਸਮਾਨਾਂਤਰ ਨੌਕਰੀਆਂ ਅਤੇ ਬੇਲੋੜੇ ਕਦਮਾਂ ਦੀ ਜਾਂਚ ਕਰੋ। 5 ਠੋਸ, ਕਾਰਵਾਈਯੋਗ ਪ੍ਰਵੇਗ ਸੁਝਾਅ ਦਿਓ ਅਤੇ ਹਰੇਕ ਦੇ ਅਨੁਮਾਨਿਤ ਪ੍ਰਭਾਵ ਨੂੰ ਲਿਖੋ। ਪਾਈਪਲਾਈਨ: [YAML]
ਕਮਜ਼ੋਰ ਪ੍ਰੋਂਪਟ / ਮਜ਼ਬੂਤ ਪ੍ਰੋਂਪਟ
ਕਮਜ਼ੋਰ: "GitHub ਐਕਸ਼ਨ ਵਰਕਫਲੋ ਲਿਖੋ।"
ਨਤੀਜਾ: ਇਹ ਅਸਪਸ਼ਟ ਹੈ ਕਿ ਕਿਹੜੀ ਭਾਸ਼ਾ, ਕਿਹੜੀ ਟਰਿੱਗਰ, ਕੀ ਕੋਈ ਤੈਨਾਤੀ ਹੈ; AI ਇੱਕ ਆਮ ਨੋਡ ਉਦਾਹਰਣ ਦਿੰਦਾ ਹੈ, ਸ਼ਾਇਦ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਹੋਵੇਗਾ, ਅਤੇ ਗੁਪਤ ਨੂੰ ਹਾਰਡਕੋਡ ਕਰ ਸਕਦਾ ਹੈ।
ਮਜ਼ਬੂਤ: "GitHub ਐਕਸ਼ਨ ਵਰਕਫਲੋ ਲਿਖੋ। Python 3.12 ਪ੍ਰੋਜੈਕਟ, ਪੁੱਲ ਬੇਨਤੀ ਅਤੇ ਮੁੱਖ ਪੁਸ਼ ਵਿੱਚ pytest + ruff ਚਲਾਓ; ਕੋਈ ਤੈਨਾਤ ਨਹੀਂ; ਪਾਈਪ ਕੈਸ਼ ਨਾਲ ਨਿਰਭਰਤਾ ਨੂੰ ਤੇਜ਼ ਕਰੋ; ਕੋਈ ਭੇਦ ਨਹੀਂ ਲੋੜੀਂਦੇ। ਟਿੱਪਣੀਆਂ ਨਾਲ YAML ਨਿਰਯਾਤ ਕਰੋ।"
ਅੰਤਰ: ਦੂਜਾ ਪ੍ਰੋਂਪਟ ਭਾਸ਼ਾ, ਟਰਿੱਗਰ, ਸਕੋਪ (ਕੋਈ ਤੈਨਾਤੀ ਨਹੀਂ), ਪ੍ਰਦਰਸ਼ਨ ਦੀ ਉਮੀਦ, ਅਤੇ ਸੁਰੱਖਿਆ ਰੁਕਾਵਟ ਦਿੰਦਾ ਹੈ। ਆਉਟਪੁੱਟ ਸਿੱਧੇ ਕੰਮ ਕਰਦਾ ਹੈ.
ਆਮ ਗਲਤੀਆਂ
- YAML ਵਿੱਚ ਰਾਜ਼ ਨੂੰ ਏਮਬੈਡ ਕਰਨਾ। ਪਲੇਨਟੈਕਸਟ ਪਾਸਵਰਡ/ਟੋਕਨ ਸਭ ਤੋਂ ਆਮ CI ਕਮਜ਼ੋਰੀ ਹੈ।
- ਬਹੁਤ ਜ਼ਿਆਦਾ ਵਿਆਪਕ ਪਰਮਿਟ. ਸਭ ਲਿਖਣ ਦੀ ਬਜਾਏ ਲੋੜੀਂਦੀ ਘੱਟੋ-ਘੱਟ ਇਜਾਜ਼ਤ ਦਿਓ।
- ਗੈਰ-ਮੌਜੂਦ ਕਾਰਵਾਈ/ਟੈਂਪਲੇਟ 'ਤੇ ਭਰੋਸਾ ਕਰਨਾ। AI ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਉਪਯੋਗਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ: ਮਾਰਕਿਟਪਲੇਸ ਵਿੱਚ ਲਾਈਨਾਂ।
- ਸੀਆਈ ਨਾਲ ਤੈਨਾਤੀ ਨੂੰ ਉਲਝਾਉਣਾ। ਟੈਸਟ ਹਰ ਪੁਸ਼ 'ਤੇ ਚੱਲ ਸਕਦਾ ਹੈ, ਪਰ ਤੈਨਾਤੀ ਨੂੰ ਨਿਯੰਤਰਿਤ ਅਤੇ ਮਨਜ਼ੂਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
- ਕੈਸ਼ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਿਹਾ। ਹਰੇਕ ਰਨ 'ਤੇ ਸਕ੍ਰੈਚ ਤੋਂ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਨਾਲ ਪਾਈਪਲਾਈਨ ਮਿੰਟਾਂ ਦੁਆਰਾ ਹੌਲੀ ਹੋ ਜਾਂਦੀ ਹੈ।
- ਮੁੱਖ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਸਿੱਧੇ ਪਹਿਲੇ ਵਰਕਫਲੋ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ। ਇਸਨੂੰ ਪਹਿਲਾਂ ਇੱਕ ਟੈਸਟ ਰਿਪੋਜ਼ਟਰੀ 'ਤੇ ਚਲਾਓ।
ਸੰਖੇਪ ਵਿੱਚ
CI/CD ਪਾਈਪਲਾਈਨਾਂ ਸਵੈਚਲਿਤ ਪਾਈਪਾਂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਕੋਡ ਨੂੰ ਪ੍ਰੋਡ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਲੈ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ YAML ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਹੁੰਦੀਆਂ ਹਨ। AI ਤੇਜ਼ੀ ਨਾਲ GitHub ਐਕਸ਼ਨਾਂ ਅਤੇ GitLab CI ਲਈ ਕਾਰਜਸ਼ੀਲ ਬਲੂਪ੍ਰਿੰਟਸ ਤਿਆਰ ਕਰਦਾ ਹੈ - ਪਰ ਤੁਹਾਨੂੰ ਪਲੇਟਫਾਰਮ, ਭਾਸ਼ਾ, ਟਰਿੱਗਰ, ਅਤੇ ਡਿਪਲੋਏ ਸਕੋਪ ਬਾਰੇ ਸਪੱਸ਼ਟ ਹੋਣ ਦੀ ਲੋੜ ਹੈ। ਸੁਰੱਖਿਆ ਵਿੱਚ ਤਿੰਨ ਨਿਯਮ ਹਨ: ਸੰਦਰਭ ਦੁਆਰਾ ਕਾਲ ਭੇਦ, ਘੱਟੋ-ਘੱਟ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਪ੍ਰਦਾਨ ਕਰੋ, ਲੌਗ ਵਿੱਚ ਭੇਦ ਪ੍ਰਿੰਟ ਨਾ ਕਰੋ। ਇਹ ਤਸਦੀਕ ਕਰਨਾ ਤੁਹਾਡੀ ਜ਼ਿੰਮੇਵਾਰੀ ਹੈ ਕਿ ਹਰੇਕ ਵਰਤਦਾ ਹੈ:/ਸ਼ਾਮਲ: ਭਾਗ ਅਸਲ ਵਿੱਚ ਮੌਜੂਦ ਹੈ ਅਤੇ ਹਰ ਕਦਮ ਕੀ ਕਰਦਾ ਹੈ।
ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਕੰਮ
ਇੱਕ ਸਧਾਰਨ ਨਮੂਨਾ ਪ੍ਰੋਜੈਕਟ ਚੁਣੋ (ਤੁਹਾਡੀ ਭਾਸ਼ਾ ਵਿੱਚ "ਹੈਲੋ ਵਰਲਡ" ਵੀ ਕਰੇਗਾ)। AI ਨੂੰ ਉਪਰੋਕਤ "ਬੇਸਿਕ CI ਵਰਕਫਲੋ" ਟੈਮਪਲੇਟ ਨਾਲ ਇੱਕ ਵਰਕਫਲੋ ਤਿਆਰ ਕਰਨ ਲਈ ਕਹੋ। ਫਿਰ: (1) ਆਪਣੇ ਸ਼ਬਦਾਂ ਵਿਚ ਲਿਖੋ ਕਿ ਹਰ ਕਦਮ ਕੀ ਕਰਦਾ ਹੈ; (2) ਤਸਦੀਕ ਕਰੋ ਕਿ ਕੋਈ ਵੀ ਰਾਜ਼ ਏਮਬੇਡ ਨਹੀਂ ਹਨ ਅਤੇ ਇਜਾਜ਼ਤਾਂ ਤੰਗ ਹਨ; (3) ਜੇ ਸੰਭਵ ਹੋਵੇ, ਤਾਂ ਇਸਨੂੰ ਇੱਕ ਟੈਸਟ ਟੈਂਕ ਵਿੱਚ ਚਲਾਓ ਅਤੇ ਲਾਲ-ਹਰੇ ਵਿਵਹਾਰ ਦਾ ਨਿਰੀਖਣ ਕਰੋ।
ਚੈੱਕਲਿਸਟ
- [ ] ਮੈਂ ਪਲੇਟਫਾਰਮ, ਭਾਸ਼ਾ/ਫ੍ਰੇਮਵਰਕ, ਟ੍ਰਿਗਰ ਅਤੇ ਡਿਪਲਾਇ ਸਕੋਪ ਨੂੰ ਮੇਰੇ ਪ੍ਰੋਂਪਟ ਵਿੱਚ ਜੋੜਿਆ ਹੈ।
- [ ] ਮੈਂ ਸਮਝਦਾ/ਸਮਝਦੀ ਹਾਂ ਕਿ ਹਰੇਕ ਕੰਮ ਅਤੇ ਕਦਮ ਤਿਆਰ ਕੀਤੇ YAML ਵਿੱਚ ਕੀ ਕਰਦਾ ਹੈ।
- [ ] ਕੋਈ ਰਾਜ਼ ਸਾਦਾ ਪਾਠ ਨਹੀਂ ਹੈ; ਸਾਰੇ ${{ secrets.X }} / CI ਵੇਰੀਏਬਲ।
- [ ] ਮੈਂ ਘੱਟੋ-ਘੱਟ ਅਥਾਰਟੀ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਘਟਾ ਦਿੱਤਾ ਹੈ।
- [ ] ਮੈਂ ਤਸਦੀਕ ਕੀਤਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਕਹਿੰਦੇ ਐਕਸ਼ਨ/ਟੈਂਪਲੇਟ ਅਸਲ ਵਿੱਚ ਮੌਜੂਦ ਹਨ।
- [ ] ਮੈਂ ਤੈਨਾਤੀ ਦੇ ਪੜਾਅ ਨੂੰ ਮਨਜ਼ੂਰੀ/ਸੁਰੱਖਿਆ ਨਾਲ ਨਿਯੰਤਰਿਤ ਕੀਤਾ ਹੈ।