[Feat] CarbonIntensityProvider
and ElectricityMaps implementation (…
#262
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
name: Push Docker image | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- zeus-v* | |
paths: | |
- '.github/workflows/push_docker.yaml' | |
- 'capriccio/**' | |
- 'examples/**' | |
- 'trace/**' | |
- 'zeus/**' | |
- 'zeus_monitor/**' | |
- '.dockerignore' | |
- 'docker/Dockerfile' | |
- 'LICENSE' | |
- 'setup.py' | |
- 'pyproject.toml' | |
env: | |
REGISTRY_NAME: mlenergy/zeus | |
MIRROR_REGISTRY_NAME: symbioticlab/zeus | |
jobs: | |
build_and_push: | |
if: github.repository_owner == 'ml-energy' | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
platform: | |
- linux/amd64 | |
- linux/arm64 | |
steps: | |
- name: Remove unnecessary files | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
- name: Prepare | |
run: | | |
platform=${{ matrix.platform }} | |
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Docker Hub login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Setup Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Generate image metadata | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.REGISTRY_NAME }} | |
${{ env.MIRROR_REGISTRY_NAME }} | |
tags: | | |
type=ref,event=branch | |
type=match,pattern=zeus-(.*),group=1 | |
- name: Build and push by digest | |
id: build | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: docker/Dockerfile | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-from: type=registry,ref=mlenergy/zeus:buildcache | |
cache-to: type=registry,ref=mlenergy/zeus:buildcache,mode=max | |
platforms: ${{ matrix.platform }} | |
outputs: type=image,name=${{ env.REGISTRY_NAME }},push-by-digest=true,name-canonical=true,push=true | |
- name: Export digest | |
run: | | |
mkdir -p /tmp/digests | |
digest="${{ steps.build.outputs.digest }}" | |
echo "$digest" > "/tmp/digests/${digest#sha256:}.digest" | |
- name: Upload digest | |
uses: actions/upload-artifact@v4 | |
with: | |
name: digests-${{ env.PLATFORM_PAIR }} | |
path: /tmp/digests/* | |
if-no-files-found: error | |
retention-days: 1 | |
merge: | |
runs-on: ubuntu-latest | |
needs: build_and_push | |
steps: | |
- name: Create directory | |
run: | | |
mkdir -p /tmp/digests | |
- name: Download digests for linux/amd64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: digests-linux-amd64 | |
path: /tmp/digests/linux-amd64 | |
- name: Download digests for linux/arm64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: digests-linux-arm64 | |
path: /tmp/digests/linux-arm64 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
${{ env.REGISTRY_NAME }} | |
${{ env.MIRROR_REGISTRY_NAME }} | |
tags: | | |
type=ref,event=branch | |
type=match,pattern=zeus-(.*),group=1 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Create manifest list and push | |
working-directory: /tmp/digests | |
run: | | |
tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") | |
digests=$(find /tmp/digests -type f -name '*.digest' | xargs cat) | |
cmd="docker buildx imagetools create $tags" | |
for digest in $digests; do | |
cmd="$cmd $REGISTRY_NAME@sha256:${digest#sha256:}" | |
done | |
eval $cmd | |
- name: Inspect image | |
run: | | |
docker buildx imagetools inspect ${{ env.REGISTRY_NAME }}:${{ steps.meta.outputs.version }} |