diff --git a/.docker/alpine.docker b/.docker/alpine.docker new file mode 100644 index 0000000..77be9ff --- /dev/null +++ b/.docker/alpine.docker @@ -0,0 +1,36 @@ +## REGISTRY CONFIGURATION ###################################################### + +ARG REGISTRY="docker.io" + +## BUILDER ##################################################################### + +FROM golang:alpine3.17 as builder + +WORKDIR /go/src/github.com/essentialkaos/atlassian-cloud-backuper + +COPY . . + +# hadolint ignore=DL3018 +RUN apk add --no-cache git make && make deps && make all + +## FINAL IMAGE ################################################################# + +FROM ${REGISTRY}/essentialkaos/alpine:3.17 + +LABEL org.opencontainers.image.title="atlassian-cloud-backuper" \ + org.opencontainers.image.description="Atlassian Cloud Backuper" \ + org.opencontainers.image.vendor="ESSENTIAL KAOS" \ + org.opencontainers.image.authors="Anton Novojilov" \ + org.opencontainers.image.licenses="Apache-2.0" \ + org.opencontainers.image.url="https://kaos.sh/atlassian-cloud-backuper" \ + org.opencontainers.image.source="https://github.com/essentialkaos/atlassian-cloud-backuper" + +COPY --from=builder /go/src/github.com/essentialkaos/atlassian-cloud-backuper/atlassian-cloud-backuper /usr/bin/ +COPY --from=builder /go/src/github.com/essentialkaos/atlassian-cloud-backuper/common/atlassian-cloud-backuper-container.knf /etc/atlassian-cloud-backuper.knf + +# hadolint ignore=DL3018 +RUN apk add --no-cache ca-certificates + +ENTRYPOINT ["atlassian-cloud-backuper"] + +################################################################################ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4737198..c2eb6e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,21 @@ jobs: with: files: common/atlassian-cloud-backuper.spec + Hadolint: + name: Hadolint + runs-on: ubuntu-latest + + needs: Go + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check dockerfiles with Hadolint + uses: essentialkaos/hadolint-action@v1 + with: + files: .docker/*.docker + Typos: name: Typos runs-on: ubuntu-latest @@ -80,3 +95,59 @@ jobs: - name: Check spelling uses: crate-ci/typos@master + + DockerBuild: + name: Docker Build Check + runs-on: ubuntu-latest + + needs: [Hadolint, Perfecto] + + env: + REGISTRY: ghcr.io + + strategy: + matrix: + image: [ 'alpine' ] + + steps: + - name: Check event type + run: | + if [[ "${{github.event_name}}" != "pull_request" ]] ; then + echo "::notice::Event type is not 'pull_request', all job actions will be skipped" + fi + + # This step is a hack for needs+if issue with actions + # More info about issue: https://github.com/actions/runner/issues/491 + + - name: Checkout + uses: actions/checkout@v4 + if: ${{ github.event_name == 'pull_request' }} + + - name: Login to DockerHub + uses: docker/login-action@v3 + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + if: ${{ github.event_name == 'pull_request' && env.DOCKERHUB_USERNAME != '' }} + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: ${{ github.event_name == 'pull_request' }} + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build Docker image + if: ${{ github.event_name == 'pull_request' }} + run: | + docker build --build-arg REGISTRY=${REGISTRY} -f .docker/${{matrix.image}}.docker -t ${{matrix.image}} . + + - name: Show info about built Docker image + uses: essentialkaos/docker-info-action@v1 + if: ${{ github.event_name == 'pull_request' }} + with: + image: ${{matrix.image}} + show-labels: true