devcontainers / devcontainers/ci

cache miss

Aperta
#200 8 commenti 3 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
496
Fork
101
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hoping to get some guidance 🙏
In my workflow I have a separate job that builds a test image in CI off of a base production image using docker's build-push action. That image then gets pushed to GCR and subsequent steps pull to run tests. I'm noticing that for the first devcontainer action it'll rebuild the container from scratch everytime, even though the cache is being stored in line. looking at the docker build command shows
![Screenshot 2023-02-02 at 4 35 33 PM](https://user-images.githubusercontent.com/114429763/216485677-a815cc02-8773-4bf2-8bf9-85648c2e3b13.png)

Could someone point out where my configuration may be incorrect?

Here is my workflow, (i've omitted some steps that I don't believe to be related to the issue):
```
jobs:
pre-build:
runs-on: ubuntu-latest

outputs:
run_attempt: ${{ github.run_attempt }}

env:
SHA: ${{ github.event.pull_request.head.sha }}

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Get Short GitHub SHA
run: echo "SHA7=${SHA::7}" >> $GITHUB_ENV

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- name: Log in to GCR
uses: docker/login-action@v2
with:
registry: gcr.io
username: _json_key
password: ${{ env.SERVICE_KEY_FILE }}

- name: Build and Push Docker Image
uses: docker/build-push-action@v3
with:
context: "{{defaultContext}}:dbt"
pull: true
push: true
tags: |
${{ env.IMAGE_NAME }}:${{ env.DATASET }}.gh-${{ github.run_id }}.${{ github.run_attempt }}
${{ env.IMAGE_NAME }}:${{ env.SHA7 }}
cache-from: type=gha
cache-to: type=gha,mode=max,type=inline
provenance: false
secrets: |
GIT_AUTH_TOKEN=${{ secrets.GITHUB_TOKEN }}
test:
runs-on: ubuntu-latest
needs: [ pre-build ]

env:
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID_TEST }}
TARGET: test

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Run git hooks
uses: devcontainers/ci@v0.2
env:
GOOGLE_APPLICATION_CREDENTIALS: /var/secrets/google/client_secrets.json
with:
cacheFrom: ${{ env.IMAGE_NAME }}:${{ env.DATASET }}.gh-${{ github.run_id }}.${{ github.run_attempt }}
runCmd: |
pre-commit run

- name: Run test
uses: devcontainers/ci@v0.2
env:
GOOGLE_APPLICATION_CREDENTIALS: /var/secrets/google/client_secrets.json
with:
cacheFrom: ${{ env.IMAGE_NAME }}:${{ env.DATASET }}.gh-${{ github.run_id }}.${{ github.run_attempt }}
runCmd: |
dbt test -m state:modified+ --defer --state .
```

The first devcontainer call:
![Screenshot 2023-02-02 at 4 51 36 PM](https://user-images.githubusercontent.com/114429763/216484675-9d6b096d-2c56-4342-be64-3e1e1ac30d0d.png)

The second devcontainer call:
![Screenshot 2023-02-02 at 4 51 55 PM](https://user-images.githubusercontent.com/114429763/216484862-da6c32c2-c0f6-4a3c-9617-0e8c8fe3423c.png)
it doesn't look like in the first instance of devcontainer the cache is being used?

The build and push step is successful:
![Screenshot 2023-02-02 at 4 57 19 PM](https://user-images.githubusercontent.com/114429763/216485886-a3faf586-92ab-4148-b452-6973a6dd480d.png)

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con il passaggio docker/build-push-action del pre-build job e confronta le relative impostazioni cache-from/cache-to con il valore cacheFrom passato a devcontainers/ci@v0.2. Ispeziona i log di entrambe le chiamate a devcontainer e verifica che la prima chiamata riutilizzi l’immagine pubblicata o la cache invece di ricostruirla; il lavoro è completato quando la cache configurata viene utilizzata in modo coerente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, github-actions
Ambito
ci-cd, devops
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.