Prevent unnecessary string copy #2539
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
name: Centos7 Build | |
on: | |
merge_group: | |
push: | |
branches: | |
- develop | |
- dependabot/* | |
- release/* | |
pull_request: | |
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@v44 | |
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: latest,1.0.0 | |
versions: | |
runs-on: ubuntu-latest | |
outputs: | |
antares-version: ${{steps.antares-version.outputs.result}} | |
antares-xpansion-version: ${{steps.antares-xpansion-version.outputs.result}} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Read antares-solver version | |
id: antares-version | |
uses: ./.github/actions/read-json-value | |
with: | |
path: 'antares-version.json' | |
key: 'antares_version' | |
- name: Read antares-xpansion version | |
id: antares-xpansion-version | |
uses: ./.github/actions/read-json-value | |
with: | |
path: 'antares-version.json' | |
key: 'antares_xpansion_version' | |
build: | |
runs-on: ubuntu-latest | |
needs: [ docker_publish, versions ] | |
container: 'antaresrte/xpansion-centos7' | |
strategy: | |
matrix: | |
xprs: [ | |
# { value: XPRESS-ON, ref: 8.13a }, | |
{ value: XPRESS-ON, ref: 9.2.5 }, | |
#{ value: XPRESS-OFF } | |
] | |
env: | |
XPRESSDIR: ${{ github.workspace }}/xpress | |
XPRESS: ${{ github.workspace }}/xpress/bin | |
XPRS_LIB_Path: ${{ github.workspace }}/xpress/lib | |
XPRESSDIR_CONTAINER: ${GITHUB_WORKSPACE}/xpress | |
XPRESS_CONTAINER: ${GITHUB_WORKSPACE}/xpress/bin | |
XPRS_LIB_Path_CONTAINER: ${GITHUB_WORKSPACE}/xpress/lib | |
VCPKG_ROOT: ${{ github.workspace }}/vcpkg | |
outputs: | |
TGZ_NAME: ${{ steps.export_output.outputs.TGZ_NAME }} | |
SINGLE_FILE_NAME: ${{ steps.export_output.outputs.SINGLE_FILE_NAME }} | |
steps: | |
- run: | | |
source /opt/rh/devtoolset-10/enable | |
echo $PATH >> $GITHUB_PATH | |
- name: Get release | |
if: github.event_name == 'release' && github.event.action == 'created' | |
id: get_release | |
uses: bruceadams/[email protected] | |
- uses: actions/checkout@v3 #Keep at 3 | |
with: | |
submodules: true | |
- run: | | |
yum install -y nodejs | |
- name: Setup cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.28.x' | |
- name: Checkout xpressmp linux | |
uses: actions/checkout@v3 #keep v3 | |
with: | |
token: ${{ secrets.AS_TOKEN }} | |
repository: rte-france/xpress-mp | |
path: ${{ env.XPRESSDIR }} | |
github-server-url: https://github.com | |
ref: ${{matrix.xprs.ref}} | |
if: matrix.xprs.value == 'XPRESS-ON' | |
- name: Download pre-compiled librairies | |
uses: ./.github/workflows/download-extract-precompiled-libraries-tgz | |
with: | |
antares-version: ${{needs.versions.outputs.antares-version}} | |
os: centos7 | |
os-full-name: CentOS-7.9.2009 | |
- name: repo update | |
run: | | |
yum update | |
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo | |
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo | |
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo | |
- name: Install dependencies | |
run: | | |
pip3 install --upgrade pip | |
pip3 install wheel #Does not work in requirements | |
pip3 install -r requirements-tests.txt | |
pip3 install -r requirements-ui.txt | |
- name: vcpkg install | |
run: | | |
git config --global safe.directory '*' | |
git submodule update --remote --init vcpkg | |
pushd vcpkg | |
git fetch --unshallow | |
./bootstrap-vcpkg.sh -disableMetrics | |
echo "VCPKG_ROOT=$GITHUB_WORKSPACE/vcpkg" >> $GITHUB_ENV | |
echo "VCPKG_CACHE_DIR=$GITHUB_WORKSPACE/vcpkg_cache" >> $GITHUB_ENV | |
echo "VCPKG_BINARY_SOURCES=clear;files,$GITHUB_WORKSPACE/vcpkg_cache,readwrite" >> $GITHUB_ENV | |
- name: Restore vcpkg binary dir from cache | |
id: cache-vcpkg-binary | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ env.VCPKG_CACHE_DIR }} | |
key: vcpkg-cache-centOS-${{ hashFiles('src/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-centOS- | |
- name: Configure | |
run: | | |
source /opt/rh/devtoolset-10/enable | |
cmake -B _build -S . \ | |
-DBUILD_TESTING=ON \ | |
-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/deps \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_INSTALL_PREFIX=_install \ | |
-DBUILD_UI=ON \ | |
-DALLOW_RUN_AS_ROOT=ON \ | |
-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake | |
- name: Build | |
run: | | |
cmake --build _build --config Release -j$(nproc) | |
- name: Cache vcpkg binary dir | |
if: always() | |
id: save-cache-vcpkg-binary | |
uses: actions/cache/save@v3 | |
with: | |
path: ${{ env.VCPKG_CACHE_DIR }} | |
key: vcpkg-cache-centOS-${{ hashFiles('src/vcpkg.json', '.git/modules/vcpkg/HEAD') }} | |
- name: Running unit tests | |
timeout-minutes: 120 | |
shell: bash | |
run: | | |
export PATH=${GITHUB_WORKSPACE}/_build/vcpkg_installed/x64-linux/tools/openmpi/bin/:$PATH | |
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:${{ env.XPRS_LIB_Path_CONTAINER }} | |
export XPRESS=${{ env.XPRESS_CONTAINER }} | |
cd _build | |
ctest -C Release --output-on-failure -L "unit|benders|lpnamer|medium" | |
####################### | |
- name: Install | |
run: | | |
cd _build | |
cmake --install . | |
- id: create-single-file | |
name: Single file .tar.gz creation | |
uses: ./.github/workflows/single-file-creation-tgz | |
with: | |
antares-xpansion-version: ${{needs.versions.outputs.antares-xpansion-version}} | |
- name: Installer .tar.gz creation | |
run: | | |
cd _build | |
export FILE_NAME="antaresXpansion-${{needs.versions.outputs.antares-xpansion-version}}-CentOS-7.9.2009" | |
cpack -G TGZ -D CPACK_PACKAGE_FILE_NAME=$FILE_NAME | |
#Need to differentiate between xpress/no_xpress files | |
#Cpack command line doesn't seem to care about -P or -R options | |
echo "TGZ_NAME=$FILE_NAME.tar.gz" >> $GITHUB_ENV | |
- name: Upload .tar.gz | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.TGZ_NAME}} | |
path: _build/${{env.TGZ_NAME}} | |
- name: Upload single file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.create-single-file.outputs.archive-name }} | |
path: ${{ steps.create-single-file.outputs.archive-path }} | |
- name: export asset name in output | |
id: export_output | |
run: | | |
echo "TGZ_NAME=${{env.TGZ_NAME}}" >> $GITHUB_OUTPUT | |
echo "SINGLE_FILE_NAME=${{ steps.create-single-file.outputs.archive-name }}" >> $GITHUB_OUTPUT | |
####################### | |
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 }} | |
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}} |