version 3.4.0.4 #1313
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This pipeline aims at building Glances for the following targets: | |
# - Docker Hub | |
# - Pypi | |
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') }} | |
# linux/arm/v7 (drop support for v6) support following issue - See issue #2120 | |
DOCKER_PLATFORMS: linux/amd64,linux/arm/v7,linux/arm64,linux/386 | |
# Ubuntu image only support linux/amd64 and linux/arm64 - See issue #2185 | |
DOCKER_PLATFORMS_UBUNTU: linux/amd64,linux/arm64 | |
on: | |
pull_request: | |
branches: [ develop ] | |
push: | |
branches: [ master, develop ] | |
tags: | |
- v* | |
jobs: | |
pypi: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install pip install build tools | |
run: >- | |
python -m | |
pip install | |
build | |
--user | |
- name: Build a binary wheel and a source tarball | |
run: >- | |
python -m | |
build | |
--sdist | |
--wheel | |
--outdir dist/ | |
- name: Publish distribution package to Test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository-url: https://test.pypi.org/legacy/ | |
skip-existing: true | |
- name: Publish distribution package to PyPI | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
create_Docker_builds: | |
runs-on: ubuntu-latest | |
# Make sure we release the python package first. So we are sure to get the latest. | |
needs: | |
- pypi | |
outputs: | |
tags: ${{ steps.config.outputs.tags }} | |
steps: | |
- name: Determine image tags | |
id: config | |
shell: bash | |
run: | | |
TAG_ARRAY='[' | |
if [[ $GITHUB_REF == refs/tags/* ]]; then | |
VERSION=${GITHUB_REF#refs/tags/v} | |
TAG_ARRAY="$TAG_ARRAY { \"target\": \"minimal\", \"tag\": \"${VERSION}\" }," | |
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"${VERSION}-full\" }," | |
elif [[ $GITHUB_REF == refs/heads/develop ]]; then | |
TAG_ARRAY="$TAG_ARRAY { \"target\": \"dev\", \"tag\": \"dev\" }," | |
else | |
TAG_ARRAY="$TAG_ARRAY { \"target\": \"minimal\", \"tag\": \"latest\" }," | |
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"latest-full\" }," | |
fi | |
TAG_ARRAY="${TAG_ARRAY::-1} ]" | |
echo "Tags to build: $TAG_ARRAY" | |
echo "::set-output name=tags::$TAG_ARRAY" | |
build_Docker_image: | |
runs-on: ubuntu-latest | |
needs: | |
- create_Docker_builds | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ['alpine', 'ubuntu'] | |
tag: ${{ fromJson(needs.create_Docker_builds.outputs.tags) }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Retrieve Repository Docker metadata | |
id: docker_meta | |
uses: crazy-max/ghaction-docker-meta@v4.4.0 | |
with: | |
images: ${{ env.DEFAULT_DOCKER_IMAGE }} | |
labels: | | |
org.opencontainers.image.url=https://nicolargo.github.io/glances/ | |
- name: Cache Docker layers | |
uses: actions/cache@v3 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ env.NODE_ENV }}-${{ matrix.os }}-${{ matrix.tag.tag }} | |
restore-keys: ${{ runner.os }}-buildx-${{ env.NODE_ENV }}-${{ matrix.os }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
with: | |
platforms: all | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
version: latest | |
- name: Login to DockerHub | |
uses: docker/login-action@v2 | |
if: ${{ env.PUSH_BRANCH == 'true' }} | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_TOKEN }} | |
- name: Build and push image | |
uses: docker/build-push-action@v4 | |
with: | |
push: ${{ env.PUSH_BRANCH == 'true' }} | |
tags: "${{ env.DEFAULT_DOCKER_IMAGE }}:${{ matrix.os != 'alpine' && format('{0}-', matrix.os) || '' }}${{ matrix.tag.tag }}" | |
build-args: | | |
CHANGING_ARG=${{ github.sha }} | |
context: . | |
file: "docker-files/${{ matrix.os }}.Dockerfile" | |
platforms: ${{ matrix.os != 'ubuntu' && env.DOCKER_PLATFORMS || env.DOCKER_PLATFORMS_UBUNTU }} | |
target: ${{ matrix.tag.target }} | |
labels: ${{ steps.docker_meta.outputs.labels }} | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max |