Peta dunia

 

EN: Read in English

Dunia C2: Pipeline Container

Lint dengan hadolint dan actionlint

Anda akan belajar: biar robot semak resipi dan workflow anda.

Teks BM belum disemak oleh penutur asli.

Disemak dengan GitHub Actions 2026-10 pada 31 Okt 2026

Masalahnya

bash
hadolint Dockerfile
Dockerfile:1 DL3007 warning: Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag
hadolint semak Dockerfile dan beri amaran DL3007: guna latest.

Bulan lepas node:latest lompat satu versi, dan kedai rosak semalaman. linter: Robot penyemak. Ia cari kesilapan dan tabiat berisiko dalam fail sebelum fail itu dijalankan. (robot penyemak) dah boleh beri amaran. Maksudnya: tetapkan versi, contohnya node:24-alpine.

Teka

Dockerfile anda masih tulis FROM node:latest. Ketik stesen yang akan hentikan talian, kemudian tekan Run.

Stesen mana akan hentikan tali sawat? Tekan stesen itu, kemudian Run.

Apa yang berlaku di GitHub

Fail workflow .github/workflows/lint.yml

name: Lint
on:
pull_request:
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile
- name: Lint workflows
run: docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.12

Tali sawat

Pull request · feature → main

Tengok

bash
docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.12 .github/workflows/image.yml
.github/workflows/image.yml:14:3: job "scan" needs job "imgae" which does not exist in this workflow [job-needs]
|
14 | scan:
| ^~~~~
actionlint baca image.yml dan dapati job scan perlukan job bernama imgae, yang tiada.

actionlint semak fail workflow. Ia tangkap salah taip sebelum GitHub: imgae. Image rasminya jalan tanpa perlu pasang apa-apa.

Cuba

Robot mana tangkap kesilapan mana?

Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.

      Semak

      Di mana job lint patut duduk di tali sawat?

      Pilih satu jawapan.

      Anda berjaya!

      Kini anda boleh biar hadolint dan actionlint semak setiap PR.

      Nak tahu lebih (pilihan)

      hadolint juga semak shell dalam baris RUN, dengan ShellCheck. Untuk langkau satu peraturan, letak # hadolint ignore=DL3007 di atas baris itu. Buat hanya bila ada sebab kukuh. actionlint juga semak skrip run:, bila ShellCheck dipasang.

      Latihan sebenar (pilihan), di mesin anda dengan Docker:

      Misi sebenar

      1. docker run --rm -i hadolint/hadolint:v2.14.0 < Dockerfile
      2. docker run --rm -v "$PWD:/repo" -w /repo rhysd/actionlint:1.7.12

      0 daripada 3 langkah siap · Tanda anda disimpan.