Solve issue when no change in the WebUI build process #1308
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') }} | |
DOCKER_PLATFORMS: linux/amd64,linux/arm/v6,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@v4 | |
- name: Upgrade pip | |
run: >- | |
python -m | |
pip install | |
--upgrade | |
pip | |
- name: 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@v4 | |
- name: Retrieve Repository Docker metadata | |
id: docker_meta | |
uses: crazy-max/ghaction-docker-meta@v5.0.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@v3 | |
with: | |
platforms: all | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
version: latest | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
if: ${{ env.PUSH_BRANCH == 'true' }} | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_TOKEN }} | |
- name: Build and push image | |
uses: docker/build-push-action@v5 | |
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 |