Skip to content

Commit

Permalink
ci: build and push dev images (#1448)
Browse files Browse the repository at this point in the history
* add push images workflow

* allow for workflow dispatch trigger

* remove trigger
  • Loading branch information
lkstrp authored Jan 10, 2025
1 parent 638e001 commit d111104
Show file tree
Hide file tree
Showing 4 changed files with 82 additions and 5 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/push-images.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Push images

on:
push:

branches:
- master
workflow_dispatch:

env:
IMAGE_NAME: eur-dev-env
BASE_ENV: envs/linux-pinned.yaml

jobs:
push-image:
name: dev-env
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 'Get relevant env'
run: |
hash_last_changed=$(git log -1 --pretty=format:%H -- ${{ env.BASE_ENV }})
echo "hash_last_changed=$hash_last_changed" >> $GITHUB_ENV
- name: 'Login to GitHub Container Registry'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}

- name: 'Build new image' # only build if the pinned envs file was modified
if: env.hash_last_changed == github.sha || github.event_name == 'workflow_dispatch'
run: |
docker build . --file docker/dev-env/Dockerfile --tag ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
# Add latest tag if on main branch
if [ "${{ github.ref }}" == "refs/heads/master" ]; then
docker tag ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
fi
- name: 'Add SHA tag to existing image' # when rebuild is not needed
if: env.hash_last_changed != github.sha
run: |-
docker pull ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.hash_last_changed }}
docker tag ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ env.hash_last_changed }} ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
docker push ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
4 changes: 0 additions & 4 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# SPDX-FileCopyrightText: Contributors to PyPSA-Eur <https://github.com/pypsa/pypsa-eur>
#
# SPDX-License-Identifier: CC0-1.0

name: Test workflows

on:
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/validate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
pull_request:
branches:
- master
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
30 changes: 30 additions & 0 deletions docker/dev-env/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: Contributors to PyPSA-Eur <https://github.com/pypsa/pypsa-eur>
#
# SPDX-License-Identifier: CC0-1.0

FROM condaforge/mambaforge

RUN conda update -n base conda
RUN conda install -n base conda-libmamba-solver
RUN conda config --set solver libmamba

RUN apt-get update && apt-get install -y bash git make

RUN conda --version

WORKDIR /pypsa-eur

COPY ./envs ./temp

RUN conda env create -n pypsa-eur -f temp/linux-pinned.yaml
RUN conda init bash
RUN echo "conda activate pypsa-eur" >> ~/.bashrc

SHELL ["/bin/bash", "--login", "-c"]
ENV PATH=/opt/conda/envs/pypsa-eur/bin:$PATH

RUN rm -r temp
RUN conda clean -afy && \
rm -rf /tmp/*

CMD ["bash"]

0 comments on commit d111104

Please sign in to comment.