рд╣рдо CI рдХреЗ рд▓рд┐рдП github рдХреНрд░рд┐рдпрд╛рдПрдВ рдФрд░ npm рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХрд╛рд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ

рдЧреАрдердм рдХреНрд░рд┐рдпрд╛


рд╣рд╛рдп, рд╣реИрдмреНрд░ред рдпрд╣ рдЖрд▓реЗрдЦ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:


  • рд╕реАрдЖрдИ - рдкрд░реАрдХреНрд╖рдг рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • рдкреНрд░рдХрд╛рд╢рд┐рдд - рдЬрд╛рд░реА рд╣реЛрдиреЗ рдкрд░ рд╣рдо npm рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

рд╕реАрдЖрдИ


рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ (рд╣рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдорд┐рд▓рд╛, рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ:


  • npm run build - рдмрд┐рд▓реНрдб
  • npm test - рдЯреЗрд╕реНрдЯ
  • npm run codestyle - рдХреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдЪреЗрдХ
    рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдиреЛрдб рдХреЗ 3 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (8, 10, 12) рдФрд░ рдХреЛрдб рд╕реНрдЯрд╛рдЗрд▓ рдЪреЗрдХрд┐рдВрдЧ рдкрд░ рдмрд┐рд▓реНрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВрдЧреЗ
    .github/workflows/CI.yml рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧреА:

 name: Node CI on: push jobs: buildAndTest: runs-on: ubuntu-latest strategy: matrix: node-version: [8.x, 10.x, 12.x] steps: - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: Install, build, test run: | npm install npm run build npm test env: CI: true checkCodestyle: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: '8.x' - name: Install and check codestyle run: | npm install npm run codestyle env: CI: true 

рдЪрд▓реЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ
name: Node CI рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдирд╛рдо рд╣реИ
on: push рд╣рдо рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдкреБрд╢ рдкрд░ рдЪрд▓рд╛рдПрдВрдЧреЗ
jobs: рдпрд╣ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИ


рдЬреЙрдм buildAndTest :


 buildAndTest: #  runs-on: ubuntu-latest #     strategy: #    matrix: #       node-version: [8.x, 10.x, 12.x] #   steps: #   - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} #   uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: Install, build, test #    run: | npm install npm run build npm test env: #    CI   CI: true 

рдЖрдк рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рд░реНрдорд╛рдг ${{ something }} рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреЙрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЬрд╣рд╛рдВ something рдХреБрдЫ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ matrix ред node-version , рдЕрд░реНрдерд╛рдд, рд╣рдореЗрдВ node-version рдирд╛рдордХ matrix рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИред matrix рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреАрди рд╢реБрд░реВ рдХреЗ рд╕рд╛рде, рдорд╛рди 8.x , 10.x , 12.x рд╡рд╣рд╛рдВ рдЭреВрда рд╣реЛрдЧрд╛


рдЪреЗрдХрдХреЛрдб рдиреМрдХрд░реА


 checkCodestyle: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: '8.x' - name: Install and check codestyle run: | npm install npm run codestyle env: CI: true 

рдЦреИрд░, рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реИ


рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛


 name: Publish #  workflow on: release #   ( ) jobs: #  test: # ,    runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: 12 - run: npm ci - run: npm run build - run: npm test - run: npm run codestyle publish: #  needs: test #       runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: 12 #   12  registry-url: https://registry.npmjs.org/ - run: npm run build #   - name: Publish beta #   if: github.event.prerelease == true #        run: npm publish --tag beta env: NODE_AUTH_TOKEN: ${{secrets.npm}} - name: Publish stable #    if: github.event.prerelease == false #     run: npm publish --tag beta env: NODE_AUTH_TOKEN: ${{secrets.npm}} - name: Build and Deploy ds #   uses: JamesIves/github-pages-deploy-action@master if: github.event.prerelease == false env: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH: gh-pages FOLDER: docs BUILD_SCRIPT: npm install && npm run typedoc ##     

рдпрд╣рд╛рдБ рдмреНрдпрд╛рдЬ рдХреА, ${{ secrets.SOMETHING }} , SOMETHING рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ SOMETHING рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИред
рдпрд╣рд╛рдБ рдореИрдВ рджреЛ рдЧреБрдкреНрдд рдЕрд░реНрдереЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВ:


  • npm - рдПрдирдкреАрдПрдо рдЯреЛрдХрди
  • ACCESS_TOKEN - gh-pages (github token) рдкрд░ рдкрд╣реБрдВрдЪреЗрдВ

рд░рд╣рд╕реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


рдФрд░ рдХреЛрдИ рдХрдо рд░реЛрдЪрдХ рд░реЗрдЦрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ


 if: github.event.prerelease == true if: github.event.prerelease == false 

рдпрджрд┐ рдЖрдк github рдХреЛ рдмрддрд╛ рд╕рдХреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдХрджрдо рдЙрдард╛рдиреЗ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рди рдХреЛ github.event.prerelease
рдЕрдЧрд░ false рддреЛ рд╣рдо рд╕реНрдерд┐рд░ рдФрд░ рдбреЙрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рдпрд╣ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдЧреАрдереВрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ


рд╕рдВрджрд░реНрдн


рдЕрдВрддрд┐рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА
Npm рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдкреНрд░рд▓реЗрдЦрди рдЙрджрд╛рд╣рд░рдг


рдЧрд┐рддреБрдм рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рджрд╕реНрддрд╛рд╡реЗрдЬ
рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЧреБрдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╡реЗрдмрд╣реБрдХ рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рд╡рд┐рд╡рд░рдг

Source: https://habr.com/ru/post/hi468729/


All Articles