Skip to content

Commit

Permalink
Merge pull request #6 from felipecruz91/feature/add-gha
Browse files Browse the repository at this point in the history
Add GHA workflows
  • Loading branch information
felipecruz91 committed Jun 17, 2022
2 parents 72046c2 + bd36d55 commit baf4569
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 1 deletion.
119 changes: 119 additions & 0 deletions .github/workflows/build-scan-push.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Build, Scan and Push

on:
push:
branches:
- main
pull_request:

jobs:
build-image:
name: Build Images
runs-on: ubuntu-latest

permissions:
pull-requests: write # needed to create and update comments in PRs
# actions: read # for github/codeql-action/upload-sarif, only required for workflows in private repositories
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
steps:
- name: Checkout git repo
uses: actions/checkout@v3

- name: Set up QEMU
uses: docker/setup-qemu-action@v1

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

- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and export to Docker
uses: docker/build-push-action@v2
with:
push: false
load: true # Export to Docker Engine rather than pushing to a registry
tags: ${{ github.run_id }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64

- name: Run Trivy for all CVEs (non-blocking)
uses: aquasecurity/trivy-action@master
with:
image-ref: ${{ github.run_id }}
format: table
exit-code: 0

- name: Run Trivy for HIGH,CRITICAL CVEs and report (blocking)
uses: aquasecurity/trivy-action@master
with:
image-ref: ${{ github.run_id }}
exit-code: 1
ignore-unfixed: true
vuln-type: "os,library"
severity: "HIGH,CRITICAL"
format: "sarif"
output: "trivy-results.sarif"

# Code scanning is only free to use on public repositories.
# - name: Upload Trivy scan results to GitHub Security tab
# uses: github/codeql-action/upload-sarif@v2
# if: always()
# with:
# sarif_file: "trivy-results.sarif"

- name: Docker Metadata for Final Image Build
id: docker_meta
uses: docker/metadata-action@v3
with:
images: felipecruz/${{ github.event.repository.name }}
flavor: |
latest=false
tags: |
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
type=ref,event=pr
type=ref,event=branch
type=semver,pattern={{version}}
- name: Docker Build and Push to Docker Hub
uses: docker/build-push-action@v2
with:
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64
# If PR, put image tags in the PR comments
# from https://github.com/marketplace/actions/create-or-update-comment
- name: Find comment for image tags
uses: peter-evans/find-comment@v1
if: github.event_name == 'pull_request'
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: "github-actions[bot]"
body-includes: Docker image tag(s) pushed

# If PR, put image tags in the PR comments
- name: Create or update comment for image tags
uses: peter-evans/create-or-update-comment@v1
if: github.event_name == 'pull_request'
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
Docker image tag(s) pushed:
```text
${{ steps.docker_meta.outputs.tags }}
```
Labels added to images:
```text
${{ steps.docker_meta.outputs.labels }}
```
edit-mode: replace
16 changes: 16 additions & 0 deletions .github/workflows/hadolint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Lint Dockerfile
on:
push:
branches:
- main
pull_request:

jobs:
lint-dockerfile:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v2.0.0
with:
dockerfile: Dockerfile
ignore: DL3048
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ RUN --mount=type=cache,target=/usr/src/app/.npm \
COPY ui /ui
RUN npm run build

FROM alpine
FROM alpine:3.16
LABEL org.opencontainers.image.title="vackup-docker-extension" \
org.opencontainers.image.description="Easily backup and restore docker volumes." \
org.opencontainers.image.vendor="Felipe" \
Expand All @@ -21,6 +21,7 @@ LABEL org.opencontainers.image.title="vackup-docker-extension" \
com.docker.extension.additional-urls="[{\"title\":\"Author\", \"url\":\"https://twitter.com/felipecruz\"}]" \
com.docker.extension.changelog=""

WORKDIR /
COPY metadata.json .
COPY docker.svg .
COPY --from=client-builder /ui/build ui
Expand Down

0 comments on commit baf4569

Please sign in to comment.