Skip to content
Snippets Groups Projects
Select Git revision
  • 988f9566cdcb9d00ff0202c53db68a4706252d8c
  • master default protected
  • yassin.elhakoun-master-patch-15592
  • yassin.elhakoun-master-patch-40090
  • pk
  • high-order-functions
6 results

base_4.md

Blame
  • Forked from programmation_sequentielle / cours
    Source project has a limited visibility.
    01_functions.yml 3.59 KiB
    .get_vars:
        script:
            - IS_DEV=$([[ $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ]] && echo false || echo true)
            - IS_TEST=$([[ $CI_COMMIT_BRANCH == "test" ]] && echo false || echo true)
            - |
                if [ $IS_TEST == "true" ]; then
                    DOCKER_REGISTRY_USER=dojohessotest
                    DOCKER_REGISTRY_IMAGE=dojohesso/test-dojo_exercise_checker
                    DOCKER_REGISTRY_PASSWORD=$DOCKER_TEST_REGISTRY_PASSWORD
                fi
    
    
    .get_version:
        script:
            - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '')$([[ $IS_TEST == true ]] && echo $VERSION_TEST_SUFFIX || echo '')
    
    
    .get_packages_url:
        script:
            # Wiki
            - WIKI_ARCHIVE_NAME="${PROJECT_NAME}_Wiki_${VERSION}.tar.xz"
            - PACKAGE_URL_WIKI="${PACKAGE_REGISTRY_URL}_Wiki/${VERSION}/${WIKI_ARCHIVE_NAME}"
    
    
    .init_dind_script:
        script:
            # Install dependencies
            - apk update
            - apk add git
            - apk add jq
            - apk add curl
    
            # Init docker buildx
            - |
                if [ $CI_COMMIT_REF_PROTECTED == "true" ]; then
                    docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY
                fi
            - docker buildx create --use
    
            # Get version from package.json
            - !reference [ .get_version, script ]
            - CONTAINER_IMAGE=$DOCKER_REGISTRY_IMAGE:$VERSION
    
    
    .build_script:
        script:
            - !reference [ .init_dind_script, script ]
            - mkdir -p $ARTIFACTS_FOLDER
    
            # Decrypt env vars for production
            - apk add npm sed
            - cd $PROJECT_FOLDER
            - sed -i -r "s/\{\{VERSION\}\}/${VERSION}/g" src/app.ts
            - |
                if [ $CI_COMMIT_REF_PROTECTED == "true" ]; then
                    echo "Decrypt production env vars"
                    sed -i -r "s/(DOTENV_KEY[ ]*:[ ]*[\'\"\`])[^'\"\`]*([\'\"\`])([ ]*\,)?//g" src/app.ts
                    sed -i -r "s/,[\ \n]*\}/\}/g" src/app.ts
                    npx dotenv-vault local decrypt "${DOTENV_PROD_KEY}" > .env
                
                fi
            - cd ..
    
            # Need to build for each platform separately because of multi-stage builds (docker buildx don't use cache same way as docker build)
            - >
                platform_array=$(echo $DOCKER_PLATFORMS | tr "," "\n");
                for platform in $platform_array; do
                  echo "Buildind for : $platform"
                  docker buildx build --pull --platform $platform --file $DOCKERFILE --tag $CONTAINER_IMAGE .
                done