diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2704b68..cfac590 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,13 @@ version: 2 +registries: + maven-github: + type: maven-repository + url: https://maven.pkg.github.com/homecentr + username: lholota + password: ${{ secrets.GH_PACKAGES_TOKEN }} updates: - package-ecosystem: gradle + registries: "*" directory: "/tests" schedule: interval: daily diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ccd20ee..2a18b22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,13 +11,11 @@ env: jobs: build: runs-on: ubuntu-latest + permissions: + contents: read + packages: read steps: - uses: actions/checkout@master - - - name: Set up java for tests execution - uses: actions/setup-java@v1 - with: - java-version: 11 - name: Set tag var id: vars @@ -30,10 +28,7 @@ jobs: run: docker build . -t ${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.docker_tag }} - name: Test Docker image - run: cd tests && sudo gradle test --info -Dimage_tag=${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.docker_tag }} - - - name: Scan with Phonito Security - uses: phonito/phonito-scanner-action@master - with: - image: ${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.docker_tag }} - phonito-token: '${{ secrets.PHONITO_TOKEN }}' \ No newline at end of file + run: cd tests && sudo --preserve-env gradle test --info -Ddocker_image_tag=${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.docker_tag }} + env: # To allow downloading packages + GITHUB_USERNAME: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 7fc99c5..d35dddf 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -10,16 +10,14 @@ env: jobs: build: runs-on: ubuntu-latest + permissions: + contents: write # To add version tags + packages: write # To push docker image steps: - uses: actions/checkout@master - - name: Set up java for tests execution - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: "Determine release version" - uses: codfish/semantic-release-action@master + uses: docker://ghcr.io/codfish/semantic-release-action:v1.9.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -29,7 +27,11 @@ jobs: - name: "Build Docker image" if: env.RELEASE_VERSION != '' run: | - docker build . -t "$IMAGE_NAME:$RELEASE_VERSION" \ + docker build . \ + --tag "$IMAGE_NAME:$RELEASE_VERSION" \ + --tag "$IMAGE_NAME:latest" \ + --tag "ghcr.io/$IMAGE_NAME:$RELEASE_VERSION" \ + --tag "ghcr.io/$IMAGE_NAME:latest" \ --label "org.label-schema.schema-version=1.0" \ --label "org.label-schema.vcs-ref=${GITHUB_SHA}" \ --label "org.label-schema.vcs-url=https://github.com/${GITHUB_REPOSITORY}" \ @@ -40,36 +42,33 @@ jobs: - name: Test Docker image if: env.RELEASE_VERSION != '' - run: cd tests && sudo gradle test -Dimage_tag=${{ env.IMAGE_NAME }}:${{ env.RELEASE_VERSION }} - - - name: Scan with Phonito Security - if: env.RELEASE_VERSION != '' - uses: phonito/phonito-scanner-action@master - with: - image: ${{ env.IMAGE_NAME }}:${{ env.RELEASE_VERSION }} - phonito-token: '${{ secrets.PHONITO_TOKEN }}' - - - name: "Tag image as latest" - if: env.RELEASE_VERSION != '' - run: "docker tag $IMAGE_NAME:$RELEASE_VERSION $IMAGE_NAME:latest" + run: cd tests && sudo --preserve-env gradle test -Ddocker_image_tag=${{ env.IMAGE_NAME }}:${{ env.RELEASE_VERSION }} + env: # To allow downloading packages + GITHUB_USERNAME: ${{ github.actor }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # DockerHub - name: "Log into Docker Hub" if: env.RELEASE_VERSION != '' run: "echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login --username ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin" - - name: "Push versioned image" + - name: "Push to DockerHub" if: env.RELEASE_VERSION != '' - run: "docker push $IMAGE_NAME:$RELEASE_VERSION" - - - name: "Push latest image" - if: env.RELEASE_VERSION != '' - run: "docker push $IMAGE_NAME:latest" + run: "docker push $IMAGE_NAME:$RELEASE_VERSION && docker push $IMAGE_NAME:latest" - name: "Update Docker Hub description" if: env.RELEASE_VERSION != '' - uses: peter-evans/dockerhub-description@v2.4.2 + uses: peter-evans/dockerhub-description@v2.4.3 env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} DOCKERHUB_REPOSITORY: ${{ env.IMAGE_NAME }} - \ No newline at end of file + + # GitHub Packages + - name: "Log into GitHub Packages" + if: env.RELEASE_VERSION != '' + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin + + - name: "Push to GitHub Packages" + if: env.RELEASE_VERSION != '' + run: "docker push ghcr.io/$IMAGE_NAME:$RELEASE_VERSION && docker push ghcr.io/$IMAGE_NAME:latest" \ No newline at end of file diff --git a/.github/workflows/regular_scan.yml b/.github/workflows/regular_scan.yml deleted file mode 100644 index 4cf0a1e..0000000 --- a/.github/workflows/regular_scan.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Regular Docker image vulnerability scan -on: - schedule: - - cron: '0 6 * * *' - -env: - IMAGE_NAME: "homecentr/swarm-local-network-connector" - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Pull Docker image - run: docker pull ${{ env.IMAGE_NAME }}:latest - - - name: Scan image for vulnerabilities - uses: phonito/phonito-scanner-action@master - with: - image: ${{ env.IMAGE_NAME }}:latest - phonito-token: '${{ secrets.PHONITO_TOKEN }}' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5bc0fca..9a625af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM golang:1.16.0-alpine as build +FROM golang:1.17.0-alpine3.14 as build ENV GO111MODULE=auto -RUN apk add --no-cache git=2.30.1-r0 +RUN apk add --no-cache git=2.32.0-r0 COPY ./src /go/src/github.com/homecentr/docker-swarm-local-network-connector @@ -11,7 +11,7 @@ WORKDIR /go/src/github.com/homecentr/docker-swarm-local-network-connector RUN go get ./... && \ go build -FROM homecentr/base:2.4.3-alpine +FROM homecentr/base:3.2.0-alpine # Copy S6 overlay COPY --from=build /go/src/github.com/homecentr/docker-swarm-local-network-connector/docker-swarm-local-network-connector /swarm-local-network-connector diff --git a/README.md b/README.md index ce21921..d6c7aee 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [![](https://badgen.net/docker/size/homecentr/swarm-local-network-connector)](https://hub.docker.com/repository/docker/homecentr/swarm-local-network-connector) ![CI/CD on master](https://github.com/homecentr/docker-swarm-local-network-connector/workflows/CI/CD%20on%20master/badge.svg) -![Regular Docker image vulnerability scan](https://github.com/homecentr/docker-swarm-local-network-connector/workflows/Regular%20Docker%20image%20vulnerability%20scan/badge.svg) # HomeCentr - swarm-local-network-connector Connector process which monitors for newly created containers and connectes them to the network specified in the label. This is a workaround to solve the problem when Docker Swarm does not pass explicit IP address when connecting container to a macvlan network or other local scoped network drivers. diff --git a/SECURITY.md b/SECURITY.md index 432ecf9..4de4bc1 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,6 +10,6 @@ Known security issues will be published in GitHub repository's Security / Securi ## Automated processes -The Docker image is scanned for vulnerabilities every 24 hours using [Phonito.io](https://phonito.io/?b=a). You can see the scan status under the actions tab / Regular Docker image vulnerability scan. +The Docker image is regularly scanned for vulnerabilities with [Snyk.io](https://snyk.io/). The dependencies are automatically scanned using [Dependabot](https://dependabot.com/). Dependencies are regularly updated. You can check for pending dependency updates by listing open Pull requests with the "dependencies" label. \ No newline at end of file diff --git a/fs/etc/services.d/connector/run b/fs/etc/services.d/connector/run index d153499..9472a1f 100644 --- a/fs/etc/services.d/connector/run +++ b/fs/etc/services.d/connector/run @@ -1,5 +1,3 @@ #!/usr/bin/with-contenv sh -s6-setuidgid "$PUID:$PGID" - -exec /swarm-local-network-connector \ No newline at end of file +exec runas /swarm-local-network-connector \ No newline at end of file diff --git a/tests/.idea/jarRepositories.xml b/tests/.idea/jarRepositories.xml index fdc392f..760e86d 100644 --- a/tests/.idea/jarRepositories.xml +++ b/tests/.idea/jarRepositories.xml @@ -16,5 +16,10 @@