My pipeline is:
image: java:8
pipelines:
default:
- step:
caches:
- gradle
- android-sdk
script:
# Download and unzip android sdk
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- unzip -o -qq android-sdk.zip -d android-sdk
# Define Android Home and add PATHs
- export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
- export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"
# Download packages.
- yes | sdkmanager "platform-tools"
- yes | sdkmanager "platforms;android-29"
- yes | sdkmanager "build-tools;29.0.2"
- yes | sdkmanager "extras;android;m2repository"
- yes | sdkmanager "extras;google;m2repository"
- yes | sdkmanager "extras;google;instantapps"
- yes | sdkmanager --licenses
# Build apk
- chmod a+x ./gradlew
- ./gradlew assembleDebug
branches:
develop:
- step:
caches:
- gradle
- android-sdk
script:
# Download and unzip android sdk
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- unzip -o -qq android-sdk.zip -d android-sdk
# Define Android Home and add PATHs
- export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
- export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"
# Download packages.
- yes | sdkmanager "platform-tools"
- yes | sdkmanager "platforms;android-29"
- yes | sdkmanager "build-tools;29.0.2"
- yes | sdkmanager "extras;android;m2repository"
- yes | sdkmanager "extras;google;m2repository"
- yes | sdkmanager "extras;google;instantapps"
- yes | sdkmanager --licenses
# Build apk
- chmod a+x ./gradlew
- ./gradlew assembleDebug
artifacts:
- app/build/outputs/apk/debug/*.apk
definitions:
caches:
android-sdk: android-sdk
I want to move
# Download and unzip android sdk
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- unzip -o -qq android-sdk.zip -d android-sdk
# Define Android Home and add PATHs
- export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
- export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"
# Download packages.
- yes | sdkmanager "platform-tools"
- yes | sdkmanager "platforms;android-29"
- yes | sdkmanager "build-tools;29.0.2"
- yes | sdkmanager "extras;android;m2repository"
- yes | sdkmanager "extras;google;m2repository"
- yes | sdkmanager "extras;google;instantapps"
- yes | sdkmanager --licenses
to script build.sh, and do like this:
image: java:8
pipelines:
default:
- step:
caches:
- gradle
- android-sdk
script:
- ./build.sh
# Build apk
- chmod a+x ./gradlew
- ./gradlew assembleDebug
branches:
develop:
- step:
caches:
- gradle
- android-sdk
script:
- ./build.sh
# Build apk
- chmod a+x ./gradlew
- ./gradlew assembleDebug
artifacts:
- app/build/outputs/apk/debug/*.apk
definitions:
caches:
android-sdk: android-sdk
But I have errors:
+ ./build.sh
./build.sh: line 4: -: command not found./build.sh: line 5: -: command not found
./build.sh: line 8: -: command not found
Any ideas?
Hi @SmsParser
Bitbucket uses a special YAML file format to represent the pipeline tasks configuration. It does not work like a shell script although it has some similarities. The external file you are trying to call as a script should be in shell format. There are multiple shell types out there like csh, sh, bash etc.
This is an example of how your script could look like:
#!/bin/bash
# Download and unzip android sdk
wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip -o -qq android-sdk.zip -d android-sdk
# Define Android Home and add PATHs
export ANDROID_HOME="/opt/atlassian/pipelines/agent/build/android-sdk"
export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH"
# Download packages.
yes | sdkmanager "platform-tools"
yes | sdkmanager "platforms;android-29"
yes | sdkmanager "build-tools;29.0.2"
yes | sdkmanager "extras;android;m2repository"
yes | sdkmanager "extras;google;m2repository"
yes | sdkmanager "extras;google;instantapps"
yes | sdkmanager --licenses
You could use any type of complex bash script structures inside this file. It is not treated as an extension of a pipeline configuration, but as a terminal script that needs to be run.
I hope that clarifies the issue.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.