Многоразовый рабочий процесс — Действия GitHub

Я перехожу с Jenkins на GitHub Actions.

Код Дженкинса:

    pipeline {
    agent any
    stages {
        stage('Start') {
            steps {
                sh 'ls'
            }
        }
        stage('Clone Repo') {
            steps {
                git credentialsId: 'githubapp', url: 'https://github..com/configurations.git', branch: 'dev'
            }
        }
        stage('Invoke_configure_cache_pipeline') {
            steps {
                script {
                    sh 'cat cache.csv'
                    def csvFile = readFile(file: 'cache.csv')
                    csvFile.split('\n').each {String line->
                        final String names = sh(script:"echo $line", returnStdout: true).trim()
                        def repos = line.tokenize(",").toList()
                        build job: 'Configurations/configure_cache', parameters: [
                        string(name: 'cacheName', value: repos[0]), 
                        string(name: 'expirationType', value: repos[1]),
                        string(name: 'expirationTime', value: repos[2])
                        ]
                    }
                }
            }
        }
        stage('End') {
            steps {
                sh 'ls'
            }
        }
    }
}

Код действий GitHub:

name: Bulk Test

on:
    workflow_dispatch:

jobs:
  build:
    runs-on: [Name]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: List files (Start)
        run: |
            ls
            echo "*** List Files ***"

      - name: Clone configurations repository
        run: |
            echo "*** Clone configurations repository ***"
            git clone https://github.com/$userName/configurations.git
            git checkout dev
            git pull origin dev
            git branch

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install node-fetch

      - name: Read CSV and trigger workflows
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
            const fs = require('fs');
            const fetch = require('node-fetch');

            async function triggerConfigureCacheWorkflow() {
              const owner = 'Rohit';
              const repo = 'config-pipeline-github-actions';
              const workflow_id = 'Config-Cache';
              const ref = 'dev';
              const token = process.env.GITHUB_TOKEN;

              const csvFile = fs.readFileSync('cache.csv', 'utf-8');
              const lines = csvFile.split('\n');

              for (const line of lines) {
                  const repos = line.split(',').map(item => item.trim());
                  const cacheName = repos[0];
                  const expirationType = repos[1];
                  const expirationTime = repos[2];

                  const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/actions/workflows/${workflow_id}/dispatches`, {
                      method: 'POST',
                      headers: {
                          'Authorization': `token ${token}`,
                          'Accept': 'application/vnd.github.v3+json',
                          'Content-Type': 'application/json'
                      },
                      body: JSON.stringify({
                          ref,
                          inputs: {
                              cacheName,
                              expirationType,
                              expirationTime
                          }
                      })
                  });

                  if (!response.ok) {
                      throw new Error(`Error triggering workflow: ${response.statusText}`);
                  }

                  console.info(`Workflow triggered successfully for cacheName: ${cacheName}`);
                }
            }

            triggerConfigureCacheWorkflow().catch(error => console.error(error));

      - name: List files (End)
        run: ls

Ошибка: фатальная: не удалось прочитать имя пользователя для https://github.vodafone.com: такого устройства или адреса нет.

Мой код находится в GitHub, и репозиторий, который я пытаюсь клонировать, также находится в GitHub. Действительно ли мне нужно предоставлять пользователя? Я сомневаюсь, что в моем коде много недостатков.

Цель: из исходного рабочего процесса я хочу несколько раз запустить целевой рабочий процесс для настройки кэша.

actions/checkout уже клонирует репозиторий в экземпляре бегуна, поэтому вам не нужно впоследствии добавлять шаг клонирования git. Просто используйте cd <repo-name>, и вы сможете получить доступ к файлам репо в рабочем процессе.

GuiFalourd 17.05.2024 19:51

Также обратите внимание, что концепция многократного использования рабочего процесса относится к чему-то другому в действиях GitHub.

GuiFalourd 17.05.2024 19:52

Код теперь не работает при «Чтении CSV и рабочих процессах запуска». Я немного изменил его: - name: Read CSV and trigger workflows env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | #!/path/to/node const fs = require("fs"); const fetch = require('node-fetch'); Ошибка: /runner/_work/_temp/xxx: строка 2: синтаксическая ошибка рядом с неожиданным токеном `('

Reddy Rohit 20.05.2024 08:16

Кажется, это связано с чем-то другим (с участием Node). Не могли бы вы открыть еще один вопрос, поделившись дополнительным контекстом (например, всей конфигурацией рабочего процесса)?

GuiFalourd 20.05.2024 13:34

Похоже, мне придется подождать. - «Прошло 3 дня с тех пор, как вы задали свой последний вопрос. Мы просим вас подождать 1 день, прежде чем задавать снова». Хотя это сообщество предлагает ценную информацию, я не считаю его гостеприимным.

Reddy Rohit 20.05.2024 15:47

Завтра попробую еще раз. Спасибо, @GuiFalourd!

Reddy Rohit 20.05.2024 15:48

Хорошо. А пока я добавлю официальный ответ на этот вопрос.

GuiFalourd 20.05.2024 16:01
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
0
7
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Действия /оформление заказа уже клонируют исходный код репозитория в экземпляре бегуна, поэтому вам не нужно впоследствии добавлять шаг клонирования git.

Просто используйте cd <repository-name>, и вы сможете получить доступ к файлам репо в рабочем процессе.

Другие вопросы по теме