summaryrefslogtreecommitdiffstats
path: root/.github/workflows/main.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/main.yml')
-rw-r--r--.github/workflows/main.yml85
1 files changed, 85 insertions, 0 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 00000000..d58e3e41
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,85 @@
+name: CI
+
+env:
+ DEFAULT_DOCKER_IMAGE: nicolargo/glances
+ NODE_ENV: ${{ (contains('refs/heads/master', github.ref) || startsWith(github.ref, 'refs/tags/v')) && 'prod' || 'dev' }}
+ PUSH_BRANCH: ${{ 'refs/heads/develop' == github.ref || 'refs/heads/master' == github.ref || startsWith(github.ref, 'refs/tags/v') }}
+ DOCKER_PLATFORMS: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386
+
+on:
+ pull_request:
+ branches: [ develop ]
+ push:
+ branches: [ master, develop ]
+ tags:
+ - v*
+
+jobs:
+ buildx:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Cache Docker layers
+ uses: actions/cache@v2
+ with:
+ path: /tmp/.buildx-cache
+ key: ${{ runner.os }}-buildx-${{ env.NODE_ENV }}-${{ github.sha }}
+ restore-keys: |
+ ${{ runner.os }}-buildx-${{ env.NODE_ENV }}
+
+ - name: Configure ENVs
+ env:
+ DOCKER_IMAGE: ${{ secrets.DOCKER_IMAGE || env.DEFAULT_DOCKER_IMAGE }}
+ DOCKERFILE: ${{ env.NODE_ENV == 'prod' && './docker-files/Dockerfile' || './docker-files/dev.Dockerfile' }}
+ run: |
+ ls -la /tmp/.buildx-cache || true
+ VERSION=latest
+
+ if [[ $GITHUB_REF == refs/tags/* ]]; then
+ VERSION=${GITHUB_REF#refs/tags/v}
+ fi
+
+ if [[ $GITHUB_REF == refs/heads/develop ]]; then
+ VERSION=dev
+ fi
+
+ echo "DOCKERFILE=${DOCKERFILE}" >> $GITHUB_ENV
+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
+ echo "TAGS=${DOCKER_IMAGE}:${VERSION}" >> $GITHUB_ENV
+ echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
+ echo "VCS_REF=${GITHUB_SHA::8}" >> $GITHUB_ENV
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+ with:
+ platforms: all
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v1
+ with:
+ version: latest
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v1
+ if: ${{ env.PUSH_BRANCH == 'true' }}
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v2
+ with:
+ push: ${{ env.PUSH_BRANCH == 'true' }}
+ tags: ${{env.TAGS}}
+ build-args: |
+ VERSION=${{env.VERSION}}
+ BUILD_DATE=${{env.BUILD_DATE}}
+ VCS_REF=${{env.VCS_REF}}
+ context: .
+ file: ${{env.DOCKERFILE}}
+ platforms: ${{env.DOCKER_PLATFORMS}}
+ cache-from: type=local,src=/tmp/.buildx-cache
+ cache-to: type=local,dest=/tmp/.buildx-cache,mode=max