actions/checkout@v2gitconfig을 바꾸는 부작용이 있어요.
한마디로
github actions에서 사용하는 것은 입니다.git/config를 다시 써야 하기 때문에
actions/checkout@v2
를 사용하면 예상치 못한 git 명령을 사용하는 동작이 나타날 수 있으니 주의하십시오.그리고 잊지 마세요
actions/checkout@v2
.추기
리뷰를 받았지만 다음 기술을 통해 피할 수 있다.
- uses: actions/checkout@v2
name: "チェックアウト"
with:
persist-credentials: false
무슨 일이 있었는지
github의 사유창고 의존성이 포함되어 있기 때문에 영패를 사용하여 의존성을 해결합니다.
다음 작업 절차를 썼습니다.
# at github.com/Urotea/sample-private-app.git
name: sample
on:
push:
branches:
- "*"
jobs:
test1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
name: "チェックアウト"
- name: set git config
env:
READONLY_GITHUB_TOKEN: ${{ secrets.PAT }}
run: git config --global url."https://${READONLY_GITHUB_TOKEN}:x-oauth-[email protected]/Urotea".insteadOf "https://github.com/Urotea"
- name: access remote
# gitでリモートアクセスするサンプル
run: git clone https://github.com/Urotea/sample-private-lib.git
test2:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
name: "チェックアウト"
- name: set git config
env:
READONLY_GITHUB_TOKEN: ${{ secrets.PAT }}
run: git config --global url."https://${READONLY_GITHUB_TOKEN}:x-oauth-[email protected]/Urotea".insteadOf "https://github.com/Urotea"
- name: access remote
# gitでリモートアクセスするサンプル
run: git clone https://github.com/Urotea/sample-private-lib.git
테스트1이 떨어졌지만 테스트2는 정상적으로 작동합니다.이유는git/config를 직접 쓰기 때문에 내가 설정한 config보다 우선적으로 사용합니다.
(config의 우선순위는local&global)
.dockerignore
그런 일은 안 한 것 같아요.그래서 테스트2가 통과했습니다."아니오, 작업 프로세스에서git 명령을 사용하지 않습니다."그렇게 생각할지도 모르지만, 함정이 하나 더 있어.
docker build을 하는 경우입니다.다음은 여기를 설명하겠습니다.
github actions를 사용하여 docker build을 진행할 때 주의사항
상기 발전 형식
.git
으로 인해 docker build은 실패할 수 있습니다.다음 예는 docker가github 개인 창고에 의존하는 js 응용 프로그램을 구축하는 경우입니다.
workflow.yaml
# at github.com/Urotea/sample-private-app.git
name: sample
on:
push:
branches:
- "*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
name: "チェックアウト"
- name: build docker
env:
READONLY_GITHUB_TOKEN: ${{ secrets.PAT }}
run: docker build --build-arg TOKEN=$READONLY_GITHUB_TOKEN -t test:latest .
DockerfileFROM node:14
ARG TOKEN
WORKDIR /src
COPY . .
RUN git config --global url."https://${TOKEN}:[email protected]/Urotea".insteadOf "https://github.com/Urotea"
RUN yarn install --frozen-lockfile # ここで落ちる
package.json{
"dependencies": {
"sample-private-lib": "git+https://github.com/Urotea/sample-private-lib.git#v0.0.1",
},
// 以下略
}
왜 빌딩이 무너졌을까?actions/checkout@v2
개작actions/checkout@v1
actions/checkout@v2
actions/checkout@v2
docker에실행
.git/config
중 후면COPY . .
에서 두드렸지만 읽을 수 없음.git/*
으로 실패yarn install --frozen-lockfile
git
에 불편하면 무단으로 개작한.git/config
을 도커 안에 가져가면 빌딩이 성립될 수 있다.원래
.dockerignore
다 가져가면 안 돼요?그건...근데 개발할 때 다들 하지 않을까요?
최후
. dockerignore를 무시하지 마십시오.또
actions/checkout@v2
처럼 다 가져가지 말고 적당히 가져갈 것을 골라라.같은 github 영패를 사용하여 로컬 도커 빌딩을 통과하고 액션스의 작업 절차에서 떨어지는 현상에 시달려 반나절을 망가뜨렸다...
아니면
.git/config
부작용이 있는 동작도 하지 않았으면 좋겠다.실행하고 config 돌려주시면 안 돼요?어떤 의미에서 보면, 이것은 아마도 채용 기회일 것이다.
Reference
이 문제에 관하여(actions/checkout@v2gitconfig을 바꾸는 부작용이 있어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/urotea/articles/0ed9b326d0ec8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)