Select Git revision
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