stages:
  - verify
  - build
  - deploy

variables:
  GIT_STRATEGY: clone
  GIT_DEPTH: "500"

lint:
  stage: verify
  interruptible: true
  script:
    - |
      sudo apk add shellcheck atools sudo abuild
      export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
      lint
  allow_failure: true
  only:
    - merge_requests
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64

.build:
  stage: build
  interruptible: true
  script:
    - |
      sudo apk add alpine-sdk lua-aports sudo
      sudo addgroup $USER abuild
      export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
      sudo -Eu $USER build.sh
  artifacts:
    paths:
      - packages/
      - keys/
      - logs/
    expire_in: 7 days
  only:
    - merge_requests

.cross:
  stage: build
  interruptible: true
  script:
    - |
      sudo apk add alpine-sdk lua-aports sudo gzip xz qemu-$CI_QEMU_TARGET_ARCH
      sudo addgroup $USER abuild
      export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
      build-rootfs.sh alpine${CI_MERGE_REQUEST_TARGET_BRANCH_NAME/v} $CI_ALPINE_TARGET_ARCH --rootfsdir $HOME/sysroot-$CI_ALPINE_TARGET_ARCH
      cp /etc/apk/repositories $HOME/sysroot-$CI_ALPINE_TARGET_ARCH/etc/apk/.
      sudo -Eu $USER CHOST=$CI_TARGET_ALPINE_ARCH build.sh
  artifacts:
    paths:
      - packages/
      - keys/
      - logs/
    expire_in: 7 days
  only:
    - merge_requests

build-x86_64:
  extends: .build
  when: always
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64

build-aarch64:
  extends: .build
  when: always
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-aarch64

build-ppc64le:
  extends: .build
  when: manual
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-ppc64le

build-s390x:
  extends: .build
  when: manual
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-s390x

build-armv7:
  extends: .cross
  when: manual
  tags:
    - apk-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME-x86_64
  variables: 
    CI_ALPINE_TARGET_ARCH: armv7
    CI_QEMU_TARGET_ARCH: arm

push:
  interruptible: true
  stage: deploy
  script:
    - |
      sudo apk add abuild git-lfs findutils
      export PATH="$PATH:$CI_PROJECT_DIR/.gitlab/bin"
      push.sh
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      when: manual
  tags:
    - repo
