Skip to content

Cache

Cache #3041

Workflow file for this run

name: Centos7 Build
on:
merge_group:
push:
branches:
- develop
- feature/*
- features/*
- fix/*
- issue-*
- release/*
- doc/*
- dependabot/*
release:
types: [ created ]
env:
GITHUB_TOKEN: ${{ github.token }}
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
docker_publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v45
with:
files: |
docker/centos7-system-deps
- name: Docker file push
id: docker_push
if: steps.changed-files.outputs.any_changed == 'true'
uses: elgohr/Publish-Docker-Github-Action@main
with:
name: antaresrte/xpansion-centos7
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
workdir: docker
dockerfile: centos7-system-deps
cache: false
tags: 1.1.1
build:
runs-on: ubuntu-latest
needs: [ docker_publish ]
steps:
# - name: Get release
# if: github.event_name == 'release' && github.event.action == 'created'
# id: get_release
# uses: bruceadams/[email protected]
- uses: actions/checkout@master
with:
fetch-depth: 0
sparse-checkout: |
docker
src/vcpkg.json
ref: ${{ env.REF }}
- name: create vcpkg cache dir
run: |
echo "VCPKG_CACHE_DIR=$GITHUB_WORKSPACE/vcpkg_cache" >> $GITHUB_ENV
mkdir -p ${{ github.workspace }}/vcpkg_cache
- name: Restore vcpkg binary dir from cache
id: cache-vcpkg-binary
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/vcpkg_cache
key: vcpkg-cache-centos7-${{ hashFiles('vcpkg.json', '.git/modules/vcpkg/HEAD') }}
# Allows to restore a cache when deps have only partially changed (like adding a dependency)
restore-keys: vcpkg-cache-centos7-
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: centos7-on-${{ runner.os }}
- name: set env variables -- DockerFiles
run: |
echo "DOCKERFILE=$(pwd)/docker/centos7-build" >> $GITHUB_ENV
echo "DOCKERDIR=$(pwd)/docker" >> $GITHUB_ENV
- name: Build the image and Antares-Xpansion
run: |
ls -latr .ccache/
echo "-------------"
docker build \
-t antaresxpansion:centos7 \
--build-arg="BRANCH=${{ github.ref_name }}" \
--build-arg="NPROC=$(nproc)" \
--build-arg="VCPKG_CACHE_DIR=./vcpkg_cache" \
--build-arg CCACHE_DIR=./.ccache \
--build-arg CCACHE_KEY=centos7-on-${{ runner.os }} \
-f ${{ env.DOCKERFILE }} .
- name: create a container without starting it && retrieve archive dir
run: |
container_id=$(docker create antaresxpansion:centos7)
docker cp $container_id:/workspace/antares-xpansion/archive archive
docker cp $container_id:/workspace/vcpkg_cache ${{ env.VCPKG_CACHE_DIR }}
docker cp $container_id:/workspace/.ccache/. .ccache
ls -la .ccache
docker rm $container_id
- name: Cache vcpkg binary dir
if: always()
id: save-cache-vcpkg-binary
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/vcpkg_cache
key: vcpkg-cache-centos7-${{ hashFiles('vcpkg.json', '.git/modules/vcpkg/HEAD') }}
- name: Upload .tar.gz
uses: actions/upload-artifact@v4
with:
path: archive/*.tar.gz
#####################
userguide:
if: github.event_name == 'release' && github.event.action == 'created'
runs-on: ubuntu-latest
outputs:
pdf-name: ${{ steps.create-user-guide.outputs.pdf-name }}
steps:
- uses: actions/checkout@v4
- name: Read antares-xpansion version
id: antares-xpansion-version
uses: ./.github/actions/read-json-value
with:
path: 'antares-version.json'
key: 'antares_xpansion_version'
- id: create-user-guide
name: user guide pdf creation
uses: ./.github/workflows/generate-userguide-pdf
with:
antares-xpansion-version: ${{steps.antares-xpansion-version.outputs.result}}
- name: user guide upload
id: userguide_upload
uses: actions/upload-artifact@v4
with:
name: user-guide
path: ${{ steps.create-user-guide.outputs.pdf-path }}
#
# build_running_image:
# runs-on: ubuntu-latest
# steps:
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
#
# - name: Build and export
# uses: docker/build-push-action@v6
# with:
# tags: centos:run
# file: docker/centos7_test_run
# outputs: type=docker,dest=/tmp/centos.tar
#
# - name: Upload artifact
# uses: actions/upload-artifact@v4
# with:
# name: centos
# path: /tmp/centos.tar
# test_assets:
# runs-on: ubuntu-latest
# needs: [ build, build_running_image ]
# steps:
# - name: Download build assets
# uses: actions/download-artifact@v3
# with:
# name: ${{needs.build.outputs.TGZ_NAME}}
#
# - name: Download image
# uses: actions/download-artifact@v4
# with:
# name: centos
# path: /tmp
#
# - name: Load image
# run: |
# docker load --input /tmp/centos.tar
#
# - name: setup
# run: |
# tar --strip-components=1 -xzf ${{needs.build.outputs.TGZ_NAME}}
#
# - uses: addnab/docker-run-action@v3
# name: Run tests
# with:
# image: centos:run
# shell: bash
# options: -v ${{ github.workspace }}:/work
# run: |
# export PATH=$PATH:/usr/lib64/openmpi/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
# cd /work
# ./antares-xpansion-launcher -i examples/SmallTestFiveCandidates --allow-run-as-root
#
# - uses: addnab/docker-run-action@v3
# name: run tests with 2 processes
# with:
# image: centos:run
# shell: bash
# options: -v ${{ github.workspace }}:/work
# run: |
# export PATH=$PATH:/usr/lib64/openmpi/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
# cd /work
# ./antares-xpansion-launcher -i examples/SmallTestFiveCandidates -n 2 --allow-run-as-root
#
# test_single_file_asset:
# runs-on: ubuntu-latest
# needs: [ build, build_running_image ]
# steps:
# - name: Download build assets
# uses: actions/download-artifact@v3
# with:
# name: ${{needs.build.outputs.SINGLE_FILE_NAME}}
#
# - name: Download image
# uses: actions/download-artifact@v4
# with:
# name: centos
# path: /tmp
#
# - name: Load image
# run: |
# docker load --input /tmp/centos.tar
#
# - name: setup
# run: |
# tar --strip-components=1 -xzf ${{needs.build.outputs.SINGLE_FILE_NAME}}
#
# - uses: addnab/docker-run-action@v3
# name: Run tests
# with:
# image: centos:run
# shell: bash
# options: -v ${{ github.workspace }}:/work
# run: |
# export PATH=$PATH:/usr/lib64/openmpi/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
# cd /work
# ./antares-xpansion-launcher -i examples/SmallTestFiveCandidates --allow-run-as-root
#
# - uses: addnab/docker-run-action@v3
# name: run tests with 2 processes
# with:
# image: centos:run
# shell: bash
# options: -v ${{ github.workspace }}:/work
# run: |
# export PATH=$PATH:/usr/lib64/openmpi/bin
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
# cd /work
# ./antares-xpansion-launcher -i examples/SmallTestFiveCandidates -n 2 --allow-run-as-root
release:
runs-on: ubuntu-latest
needs: [ build, userguide ]
if: github.event_name == 'release' && github.event.action == 'created'
steps:
- name: Download userguide
uses: actions/download-artifact@v4
with:
name: user-guide
path: docs/
- name: Download build assets
uses: actions/download-artifact@v3 #build use v3
with:
name: ${{needs.build.outputs.TGZ_NAME}}
path: _build/
- name: Download build assets single file
uses: actions/download-artifact@v3
with:
name: ${{needs.build.outputs.SINGLE_FILE_NAME}}
path: .
- name: Get release
id: get_release
uses: bruceadams/get-release@main
- name: Upload Release Asset
env:
GH_REPO: ${{ github.repository }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload --repo ${{env.GH_REPO}} ${{ steps.get_release.outputs.tag_name }} _build/${{needs.build.outputs.TGZ_NAME}}
gh release upload --repo ${{env.GH_REPO}} ${{ steps.get_release.outputs.tag_name }} ${{needs.build.outputs.SINGLE_FILE_NAME}}