Saya mencoba membangun alur kerja tindakan GitHub yang melibatkan pemasangan dependensi yang ada di dalam perwakilan pribadi lainnya. Saya sudah mencoba segala macam permutasi (saya agak kehilangan jejak sekarang) dan saya tidak bisa membuatnya bekerja.

Saya telah membuat rahasia, disimpan dalam TOKEN_GITHUB yang memberikan akses ke repositori lain, sehingga saya dapat menginstal dengan benar, karena saya yakin yang disediakan hanya mencakup perwakilan saat ini.

Berikut adalah contoh file alur kerja GitHub, yang pada akhirnya menyebarkan beberapa Lambdas melalui CDK, tetapi saya telah mengecualikannya untuk kesederhanaan:
deploy.yml

name: Lint, Audit, Test & Deploy

on:
    push:
        branches: [master]

jobs:
    build:
        runs-on: ubuntu-latest
        if: "!contains(github.event.head_commit.message, 'ci skip')"

        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12
            - name: getList Lambda
              run: |
                  cd lambdas
                  cd getList
                  npm ci
                  npm audit --production --audit-level=moderate
            - name: getItem Lambda
              run: |
                  cd lambdas
                  cd getItem
                  npm ci
                  npm audit --production --audit-level=moderate
            - name: saveItem Lambda
              run: |
                  cd lambdas
                  cd saveItem
                  npm ci
                  npm audit --production --audit-level=moderate


Jadi pada dasarnya ini gagal selama npm ci untuk getList lambda. Saya mengalami berbagai kesalahan seperti:

npm ERR! git@github.com: Izin ditolak (kunci publik). npm ERR! fatal: Tidak dapat membaca dari repositori jarak jauh.

package.json untuk lambda getList saya terlihat seperti:

{
    "name": "getList",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "jest"
    },
    "dependencies": {
        "dotenv": "^8.2.0",
        "mongodb": "^3.5.7",
        "get-db": "MyUsername/getDB"
    },
    "devDependencies": {
        "jest": "^26.0.1"
    }
}

Saya juga telah mencoba memasukkan username:token dalam file package.json meskipun saya tidak nyaman memiliki token saya di dalamnya daripada rahasia, tetapi ini tetap tidak berhasil. Saya juga mencoba menginstal npm menggunakan jalur https:

https://x-oauth-basic@github.com/MyUsername/getDB.git

Dengan baris gitconfig dari git config --global url."https://${{secrets.TOKEN_GITHUB}}:x-oauth-basic@github.com/".insteadOf https://x-oauth-basic@github.com/

Adakah yang bisa melihat apa yang saya lakukan salah di sini? Satu-satunya hal yang terlintas dalam pikiran adalah mungkin menyetel gitconfig tidak dibagikan di seluruh langkah?

Perlu dicatat bahwa semua langkah saya memerlukan instalasi ketergantungan pribadi, itulah sebabnya saya membaginya dengan cara ini. Juga hampir semua yang saya coba bekerja dengan baik secara lokal, hanya saja dalam tindakan itu gagal.

6
Ian 1 Juni 2020, 00:40

1 menjawab

Jawaban Terbaik

Alasan baris konfigurasi git Anda tidak berfungsi adalah karena cara otentikasi bekerja dengan actions/checkout. Upaya Anda untuk mengubah autentikasi sedang ditimpa oleh kredensial yang dipertahankan oleh tindakan tersebut. Saya pernah mengalami masalah lain yang terkait dengan ini sebelumnya dan Anda dapat membaca sedikit tentang apa yang saya temukan di sini< /a> jika Anda tertarik.

Anda akan senang mengetahui ada perbaikan yang mudah di sini. Nonaktifkan saja otentikasi yang dipertahankan di git config oleh actions/checkout.

      - uses: actions/checkout@v2
        with:
          persist-credentials: false

Ketergantungan package.json Anda baik-baik saja.

    "dependencies": {
        ...
        "get-db": "MyUsername/getDB"
    },

Berikut adalah contoh alur kerja. PAT adalah repo cakupan Token Akses Pribadi. Perhatikan bahwa perubahan git config tetap ada di antara langkah-langkah sehingga Anda hanya perlu menjalankannya sekali per tugas.

      - uses: actions/checkout@v2
        with:
          persist-credentials: false
      - uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://git@github.com/
      - run: npm ci
      ...
5
peterevans 1 Juni 2020, 01:23