summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrhun Parmaksız <orhunparmaksiz@gmail.com>2021-10-30 23:01:35 +0300
committerOrhun Parmaksız <orhunparmaksiz@gmail.com>2021-10-30 23:01:35 +0300
commitc8a1c29a43123779f4a518068cf54473ae8f851e (patch)
treef6136d41ecc72671ceb48ea85430e5c4d251a77f
parenta87e09da4cac94e372f690d8c9c95a29708a99d9 (diff)
chore: Optimize the Docker builds
-rw-r--r--.github/workflows/cd.yml19
-rw-r--r--.github/workflows/docker.yml79
-rw-r--r--.github/workflows/dockerci.yml29
3 files changed, 79 insertions, 48 deletions
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 2346fa6..5f99c50 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -76,22 +76,3 @@ jobs:
with:
command: publish
args: --locked --token ${{ secrets.CARGO_TOKEN }}
-
- publish-docker-image:
- name: Publish Docker image
- needs: publish-github
- runs-on: ubuntu-18.04
- steps:
- - name: Checkout repository
- uses: actions/checkout@master
- - name: Set the release version
- run: echo "RELEASE_VERSION=${GITHUB_REF:11}" >> $GITHUB_ENV
- - name: Publish
- run: |
- docker build -t kmon .
- docker tag kmon ${{ secrets.DOCKER_USERNAME }}/kmon:${{ env.RELEASE_VERSION }}
- docker tag kmon docker.pkg.github.com/orhun/kmon/kmon:${{ env.RELEASE_VERSION }}
- echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
- docker push ${{ secrets.DOCKER_USERNAME }}/kmon:${{ env.RELEASE_VERSION }}
- echo ${{ secrets.GITHUB_TOKEN }} | docker login -u orhun docker.pkg.github.com --password-stdin
- docker push docker.pkg.github.com/orhun/kmon/kmon:${{ env.RELEASE_VERSION }}
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 0000000..27ec04b
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,79 @@
+name: Docker Automated Builds
+
+on:
+ push:
+ branches:
+ - master
+ tags:
+ - "v*.*.*"
+ pull_request:
+ branches:
+ - master
+ schedule:
+ - cron: "0 0 * * 0"
+
+jobs:
+ docker:
+ name: Docker Build and Push
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Docker meta
+ id: meta
+ uses: docker/metadata-action@v3
+ with:
+ images: |
+ orhunp/kmon
+ ghcr.io/${{ github.repository_owner }}/kmon/kmon
+ tags: |
+ type=schedule
+ type=ref,event=branch
+ type=ref,event=pr
+ type=sha
+ type=raw,value=latest
+ type=semver,pattern={{version}}
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Cache Docker layers
+ uses: actions/cache@v2
+ with:
+ path: /tmp/.buildx-cache
+ key: ${{ runner.os }}-buildx-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-buildx-
+
+ - name: Login to Docker Hub
+ if: github.event_name != 'pull_request'
+ uses: docker/login-action@v1
+ with:
+ username: orhunp
+ password: ${{ secrets.DOCKER_TOKEN }}
+
+ - name: Login to GHCR
+ if: github.event_name != 'pull_request'
+ uses: docker/login-action@v1
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push
+ id: docker_build
+ uses: docker/build-push-action@v2
+ with:
+ context: ./
+ file: ./Dockerfile
+ builder: ${{ steps.buildx.outputs.name }}
+ push: ${{ github.event_name != 'pull_request' }}
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+ cache-from: type=local,src=/tmp/.buildx-cache
+ cache-to: type=local,dest=/tmp/.buildx-cache
+
+ - name: Image digest
+ run: echo ${{ steps.docker_build.outputs.digest }}
diff --git a/.github/workflows/dockerci.yml b/.github/workflows/dockerci.yml
deleted file mode 100644
index 86cdc6c..0000000
--- a/.github/workflows/dockerci.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Continuous Integration
-
-on:
- push:
- branches:
- - master
-
-jobs:
- docker:
- name: Docker
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: Build
- run: docker build -t kmon .
- - name: Tag
- run: |
- docker tag kmon ${{ secrets.DOCKER_USERNAME }}/kmon:latest
- docker tag kmon docker.pkg.github.com/orhun/kmon/kmon:latest
- - name: Login (Docker Hub)
- run: echo ${{ secrets.DOCKER_PASSWORD }} |
- docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
- - name: Push (Docker Hub)
- run: docker push ${{ secrets.DOCKER_USERNAME }}/kmon:latest
- - name: Login (Package Registry)
- run: echo ${{ secrets.GITHUB_TOKEN }} |
- docker login -u orhun docker.pkg.github.com --password-stdin
- - name: Push (Package Registry)
- run: docker push docker.pkg.github.com/orhun/kmon/kmon:latest