# This file is a template, and might need editing before it works on your project. # This is a sample GitLab CI/CD configuration file that should run without any modifications. # It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, # it uses echo commands to simulate the pipeline execution. # # A pipeline is composed of independent jobs that run scripts, grouped into stages. # Stages run in sequential order, but jobs within stages run in parallel. # # For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages # # You can copy and paste this template into a new `.gitlab-ci.yml` file. # You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. # # To contribute improvements to CI/CD templates, please follow the Development guide at: # https://docs.gitlab.com/ee/development/cicd/templates.html # This specific template is located at: # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml stages: - lint # List of stages for jobs, and their order of execution - build - deploy - release lint_job: stage: lint image: "reactnativecommunity/react-native-android:latest" rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: manual - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH script: - npm install - npx expo install - npx expo customize tsconfig.json - npx tsc cache: policy: pull-push when: on_success paths: - "node_modules/" build_job: image: "reactnativecommunity/react-native-android:latest" stage: build # This job runs in the build stage, which runs first. needs: - job: lint_job rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" when: manual script: - echo BUILD_JOB_ID=$CI_JOB_ID >> environment.env - npm install -g sharp-cli - npm install expo - npx expo customize tsconfig.json - npx expo prebuild --platform android - cd android && ./gradlew assembleRelease - cd $CI_PROJECT_DIR - cp android/app/build/outputs/apk/release/app-release.apk finanzfuchs-is1-group-g-v0.$CI_PIPELINE_IID.apk - echo RELEASE_APK=finanzfuchs-is1-group-g-v0.$CI_PIPELINE_IID.apk >> environment.env # - echo "hello World" >> finanzfuchs-is1-group-g-v0.$CI_PIPELINE_IID.apk artifacts: untracked: false name: $CI_PROJECT_NAME-group-g-finanzfuchs-$CI_COMMIT_REF_NAME paths: - "finanzfuchs-is1-group-g-v0.$CI_PIPELINE_IID.apk" reports: dotenv: environment.env when: on_success expire_in: 60 days deploy_job: stage: deploy image: "alpine:latest" needs: - job: build_job artifacts: true rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" when: on_success script: - apk add curl jq - content=$(curl https://api.dropbox.com/oauth2/token -d grant_type=refresh_token -d refresh_token=$REFRESH_TOKEN -d client_id=$CLIENT_KEY -d client_secret=$CLIENT_SECRET) - token=$(echo $content | jq -r ".access_token") - echo 'Dropbox-API-Arg:' {\"path\"':' \"/release/v0_$CI_PIPELINE_IID/$RELEASE_APK\"} > arg.json - | curl -X POST https://content.dropboxapi.com/2/files/upload --header "Authorization: Bearer $token" --header "Content-Type: application/octet-stream" --header @arg.json --data-binary @"$RELEASE_APK" - echo {\"path\":\"/release/v0_$CI_PIPELINE_IID/$RELEASE_APK\", \"settings\":{\"access\":\"viewer\", \"allow_download\":true}} >> data.json - | content=$(curl -X POST https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings --header "Authorization: Bearer $token" --header "Content-Type: application/json" --data @data.json) - url=$(echo $content | jq -r ".url") - echo APK_URL=$url >> urlEnv.env artifacts: untracked: false when: on_success expire_in: 30 days reports: dotenv: urlEnv.env release_job: stage: release image: "registry.gitlab.com/gitlab-org/release-cli:latest" needs: - job: deploy_job artifacts: true rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == "push" when: on_success release: tag_name: 'v0.$CI_PIPELINE_IID' description: 'v0.$CI_PIPELINE_IID create by pipeline' ref: '$CI_COMMIT_SHA' assets: links: - name: Download APK url: $APK_URL script: - echo deploying