--- version: '3' tasks: before: deps: - :install:software:git cmds: - task: commit:config - task: checkout - task: lockfiles - task: before:npm status: - '[ -z "$CI" ]' before:npm: deps: - :install:npm:pnpm log: error: Error encountered while configuring pnpm to store its cache in `.pnpm-store` start: Configuring pnpm to store its cache in `.pnpm-store` success: Successfully updated pnpm to store its cache in `.pnpm-store` cmds: - pnpm config set store-dir .pnpm-store checkout: deps: - :install:software:git log: error: Failed to pull latest changes start: Pulling latest changes success: Successfully pulled latest changes cmds: - cmd: git pull ignore_error: true - | if [ "$CI_COMMIT_REF_NAME" == 'synchronize' ]; then git checkout master git pull origin master else git checkout "$CI_COMMIT_REF_NAME" git pull origin "$CI_COMMIT_REF_NAME" fi status: - '[ -n "$NO_GIT_CREDS" ]' codeclimate: deps: - :install:software:docker log: error: Encountered error while running CodeClimate for CI start: Running CodeClimate for CI success: Successfully finished running CodeClimate for CI cmds: - | if [ -f .config/codeclimate.yml ]; then cp .config/codeclimate.yml .codeclimate.yml else curl -sSL https://gitlab.com/megabyte-labs/common/shared/-/raw/master/.config/codeclimate.yml > .codeclimate.yml fi - docker pull megabytelabs/codeclimate-internet - docker tag megabytelabs/codeclimate-internet codeclimate/codeclimate - task: :lint:codeclimate:load:custom-engines - task: codeclimate:gitlab codeclimate:gitlab: cmds: - docker run --rm --env CODECLIMATE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock --volume /tmp/cc:/tmp/cc codeclimate/codeclimate analyze --dev -f json > gl-code-quality-report.json status: - '[ -z "$GITLAB_CI" ]' commit: deps: - :install:software:git vars: CURR_BRANCH: sh: git rev-parse --abbrev-ref HEAD log: error: Encountered error while pushing changes to {{.CURR_BRANCH}} start: Bypassing git hooks and pushing changes to {{.CURR_BRANCH}} (if there are any changes) cmds: - task: commit:config - task: lockfiles:clean - task --list > /dev/null || (echo "ERROR Invalid Taskfiles!" && exit 1) - git add --all - git diff --cached "*" - | if [[ $(git status --porcelain) ]]; then git commit -m "☁️ chore(automation): Applying changes from upstream repository." git push -q -o ci.skip origin {{.CURR_BRANCH}} || FAILED_PUSH=$? if [ -n "$FAILED_PUSH" ]; then git pull -X theirs origin {{.CURR_BRANCH}} task --list &> /dev/null || (echo "ERROR: Invalid Taskfiles!" && exit 1) git add --all git commit -m "☁️ chore(automation): Merging changes from upstream repository with -X theirs." git push --force -q -o ci.skip origin {{.CURR_BRANCH}} fi fi status: - '[ -z "$CI" ] || [ -n "$NO_GIT_CREDS" ]' commit:config: deps: - :install:software:git run: once log: error: Error configuring git start: Configuring git to use CI-friendly parameters success: Successfully configured git to use CI parameters cmds: - git remote set-url origin "https://root:$GROUP_ACCESS_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git" - git config user.email "$GITLAB_CI_EMAIL" - git config user.name "$GITLAB_CI_NAME" status: - '[ -z "$GROUP_ACCESS_TOKEN" ] || [ -z "$GITLAB_CI_EMAIL" ] || [ -z "$GITLAB_CI_NAME" ] || [ -z "$GITLAB_CI" ]' lockfiles: cmds: - | if [ -f local/package-lock.json ]; then cp local/package-lock.json package-lock.json fi - | if [ -f local/yarn.lock ]; then cp local/yarn.lock yarn.lock fi lockfiles:clean: cmds: - | if [ -f local/package-lock.json ]; then rm -f package-lock.json fi - | if [ -f local/yarn.lock ];then rm -f yarn.lock fi mirror:github: deps: - :donothing submodules: deps: - :install:software:git log: error: Encountered error while ensuring submodules are up-to-date start: Ensuring submodules are configured and up-to-date with their master remote success: Ensured submodules are up-to-date cmds: - > git submodule foreach 'git config user.email "$GITLAB_CI_EMAIL"; git config user.name "$GITLAB_CI_NAME"; DEFAULT_BRANCH="$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')"; git checkout -q "$DEFAULT_BRANCH"; git pull -q origin "$DEFAULT_BRANCH" --ff-only' status: - '[ -z "$CI" ] || [ -n "$NO_GIT_CREDS" ]' synchronize: deps: - commit:config run: once log: error: Failed to update the `synchronize` branch start: Synchronizing the `synchronize` branch with the `master` branch success: Successfully updated the `synchronize` branch cmds: - git fetch origin - git checkout -b synchronize || git checkout synchronize - git reset --hard HEAD - git pull -q origin master - | git push --force -q -o ci.skip origin synchronize || FAILED_SYNC=$? if [ -n "$FAILED_SYNC" ]; then task git:gitlab:protected:off -- "synchronize" git push --force -q -o ci.skip origin synchronize fi - task: synchronize:gitlab - git checkout master - task: :ci:github:synchronize status: - '[ -n "$NO_GIT_CREDS" ] || ([ "$FULLY_AUTOMATED_TASKS" != "true" ] && [ -z "$CI" ])' synchronize:gitlab: run: once cmds: - curl -s --request POST --form "token=${CI_JOB_TOKEN}" --form ref=master --form "variables[PIPELINE_SOURCE]=$PIPELINE_SOURCE" "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/trigger/pipeline" status: - '[ -z "$GITLAB_CI" ] || [ -n "$NO_GITLAB_SYNCHRONIZE" ]'