diff --git a/.github/workflows/build-and-publish-docker-image.yaml b/.github/workflows/build-and-publish-docker-image.yaml new file mode 100644 index 0000000..99e02d4 --- /dev/null +++ b/.github/workflows/build-and-publish-docker-image.yaml @@ -0,0 +1,60 @@ +name: Build and publish docker image +on: + workflow_dispatch: + push: + branches: + - main + - use_head_commit + tags: + # any tag names starting with 'v' + - 'v*' +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + # Gives the action the ability to mint the OIDC token necessary to request a Sigstore signing certificate + id-token: write + # Permission necessary to persist the attestation + attestations: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set-up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64 + - name: Log in to the Github Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + - name: Build and push Docker image + id: push + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v2 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true \ No newline at end of file diff --git a/.github/workflows/hadolint.yml b/.github/workflows/hadolint.yml new file mode 100644 index 0000000..c0a577a --- /dev/null +++ b/.github/workflows/hadolint.yml @@ -0,0 +1,15 @@ +name: Hadolint - Dockerfile linting +on: + workflow_dispatch: + pull_request: + types: [opened, synchronize] + paths: + - "Dockerfile" +jobs: + hadolint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: hadolint/hadolint-action@v3.1.0 + with: + verbose: true diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 0000000..77a9be4 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,14 @@ + # list of rules: https://github.com/hadolint/hadolint/wiki +ignored: + - DL3008 # Pin versions in apt-get install - https://github.com/hadolint/hadolint/wiki/DL3008 + # - DL3018 # Pin versions in apk add - https://github.com/hadolint/hadolint/wiki/DL3018 + # - DL3028 # Pin version in gem install - https://github.com/hadolint/hadolint/wiki/DL3028 + +trustedRegistries: + - docker.io + - "*.gcr.io" + - "*.ecr.eu-west-1.amazonaws.com" + +override: + warning: + - DL3028 # Pin version in gem install - https://github.com/hadolint/hadolint/wiki/DL3028 \ No newline at end of file