UNPKG

@reason-native/cli

Version:

[![Build Status](https://dev.azure.com/reason-native/reason-native/_apis/build/status/facebookexperimental.reason-native?branchName=master)](https://dev.azure.com/reason-native/reason-native/_build/latest?definitionId=1?branchName=master) ![Supported Plat

102 lines (94 loc) 5.79 kB
# Steps for restoring project cache steps: - bash: 'mkdir -p $(Build.StagingDirectory)' condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))) displayName: '[Cache][Publish] Create cache directory' # TODO: This can be done in parallel with installing node, and esy # (which would save a bunch of time on windows) - task: Bash@3 condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))) displayName: '[Cache][Restore] Restoring build cache using REST API' continueOnError: true inputs: targetType: 'inline' # Optional. Options: filePath, inline script: | # If org name is reasonml then REST_BASE will be: https://dev.azure.com/reasonml/ REST_BASE="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}" PROJ="$SYSTEM_TEAMPROJECT" ART_NAME="cache-${AGENT_OS}-install" fetchLatestBuild() { PREFIX="branchName=refs%2Fheads%2F" BRANCH=${PREFIX}${SYSTEM_PULLREQUEST_TARGETBRANCH} FILTER='deletedFilter=excludeDeleted&statusFilter=completed&resultFilter=succeeded' LATEST='queryOrder=finishTimeDescending&$top=1' REST_BUILDS="$REST_BASE/$PROJ/_apis/build/builds?${FILTER}&${BRANCH}&${LATEST}&api-version=4.1" echo "Rest call for builds: $REST_BUILDS" REST_BUILDS_RESP=$(curl "$REST_BUILDS") if [[ $REST_BUILDS_RESP =~ (\"web\":\{\"href\":\")([^\"]*) ]]; then LATEST_BUILD_PAGE="${BASH_REMATCH[2]}"; else LATEST_BUILD_PAGE=""; fi if [[ $REST_BUILDS_RESP =~ (\"badge\":\{\"href\":\")([^\"]*) ]]; then LATEST_BUILD_BADGE="${BASH_REMATCH[2]}"; else LATEST_BUILD_BADGE=""; fi if [[ $REST_BUILDS_RESP =~ (\"id\":)([^,]*) ]]; then LATEST_BUILD_ID="${BASH_REMATCH[2]}"; else LATEST_BUILD_ID=""; fi } fetchLatestBuild fetchArtifactURL() { REST_ART="$REST_BASE/$PROJ/_apis/build/builds/$LATEST_BUILD_ID/artifacts?artifactName=$ART_NAME&api-version=4.1" echo "Rest call for artifacts: $REST_ART" if [[ $(curl $REST_ART) =~ (downloadUrl\":\")([^\"]*) ]]; then LATEST_ART_URL="${BASH_REMATCH[2]}"; else LATEST_ART_URL=""; fi } downloadArtifactAndContinue() { if [ -z "$LATEST_ART_URL" ] then echo "No latest artifact for merge-target branch found at URL $REST_ART" else curl "$LATEST_ART_URL" > "${BUILD_STAGINGDIRECTORY}/$ART_NAME.zip" PROJECT_DIR=$PWD cd $BUILD_STAGINGDIRECTORY unzip "$ART_NAME.zip" echo "Using Dependency cache for buildID: $LATEST_BUILD_ID" echo "Build log for build that produced the cache: $LATEST_BUILD_PAGE" echo "Build badge for build that produced the cache: $LATEST_BUILD_BADGE" echo "Build artifact from build that produced the cache: $LATEST_ART_URL" echo "Restoring build cache into:" mkdir -p $ESY__CACHE_INSTALL_PATH echo $ESY__CACHE_INSTALL_PATH echo "##vso[task.setvariable variable=esy_export_dir_to_import]${BUILD_STAGINGDIRECTORY}/${ART_NAME}/_export" if [[ -d ${ART_NAME}/_export ]]; then echo "Cached builds to import from ${ART_NAME}/_export in next CI step" ls ${ART_NAME}/_export mv ${ART_NAME}/_export ${PROJECT_DIR}/_export else echo "No _export directory to import from build cache" echo "Here's the contents of build cache:" find ${BUILD_STAGINGDIRECTORY} fi fi } fetchArtifactURL downloadArtifactAndContinue - powershell: esy.cmd import-dependencies continueOnError: true condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))) displayName: "esy import-dependencies if windows (build cache from CI cache)" - bash: esy import-dependencies continueOnError: true condition: and(ne(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))) displayName: "esy import-dependencies if not windows (build cache from CI cache)" # Remove as soon as https://github.com/esy/esy/pull/969 is resolved. # For now, windows won't use build cache for problematic package. - task: Bash@3 continueOnError: true condition: and(eq(variables['AGENT.OS'], 'Windows_NT'), and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch'])))) displayName: 'Remove ocamlfind prebuilts if on Windows' inputs: targetType: 'inline' # Optional. Options: filePath, inline script: | ls ${ESY__CACHE_INSTALL_PATH} rm -rf ${ESY__CACHE_INSTALL_PATH}/opam__s__ocamlfind* - bash: 'rm -rf _import' continueOnError: true condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))) displayName: 'Remove import directory' - bash: 'rm -rf *' continueOnError: true workingDirectory: '$(Build.StagingDirectory)' condition: and(eq(variables['Build.Reason'], 'PullRequest'), and(succeeded(), ne(variables['Build.SourceBranch'], variables['System.PullRequest.TargetBranch']))) displayName: '[Cache][Restore] Clean up staging dir'