kind: pipeline
type: docker
name: amd64:linux

platform:
  arch: amd64

steps:
- name: cache:restore
  image: codercom/nbin:centos
  commands:
    - yum install -y libxkbfile-devel libsecret-devel
    - . /opt/rh/devtoolset-6/enable
    - ./scripts/cacher.sh

- name: lint
  image: node:12
  commands:
    - yarn lint

- name: test
  image: codercom/nbin:centos
  commands:
    - yum install -y openssl
    - yarn test

- name: build
  image: codercom/nbin:centos
  commands:
    - yum install -y libxkbfile-devel libsecret-devel
    - . /opt/rh/devtoolset-6/enable
    - timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'

- name: cache:package
  image: node:12
  commands:
    - ./scripts/cacher.sh
  when:
    event: push

- name: cache:push
  image: plugins/gcs
  settings:
     source: cache-upload/
     target: codesrv-ci.cdr.sh
     token:
       from_secret: gcs-token
  when:
    event: push

- name: test:build
  image: codercom/nbin:centos
  commands:
    - yarn test:build

- name: publish:github
  image: plugins/github-release
  settings:
   api_key:
     from_secret: github_token
   files: release/*.tar.gz
   draft: true
   overwrite: true
   title: ${DRONE_TAG}
  when:
   event: tag

- name: publish:docker
  image: plugins/docker
  settings:
    username:
      from_secret: docker_user
    password:
      from_secret: docker_pass
    repo: codercom/code-server
    dockerfile: scripts/ci.dockerfile
    tags:
      - ${DRONE_TAG}
  when:
    event: tag

- name: publish:gcs
  image: plugins/gcs
  settings:
    source: binary-upload
    target: codesrv-ci.cdr.sh/
    token:
      from_secret: gcs-token
  when:
    event: tag

---
kind: pipeline
type: docker
name: amd64:alpine

platform:
  arch: amd64

steps:
- name: cache:restore
  image: node:12-alpine
  commands:
    - apk add libxkbfile-dev libsecret-dev build-base git bash python
    - ./scripts/cacher.sh

- name: lint
  image: node:12-alpine
  commands:
    - yarn lint

- name: test
  image: node:12-alpine
  commands:
    - apk add openssl
    - yarn test

- name: build
  image: node:12-alpine
  commands:
    - apk add libxkbfile-dev libsecret-dev build-base git bash python
    - timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'

- name: cache:package
  image: node:12-alpine
  commands:
    - ./scripts/cacher.sh
  when:
    event: push

- name: cache:push
  image: plugins/gcs
  settings:
     source: cache-upload/
     target: codesrv-ci.cdr.sh
     token:
       from_secret: gcs-token
  when:
    event: push

- name: test:build
  image: node:12-alpine
  commands:
    - yarn test:build

- name: publish:github
  image: plugins/github-release
  settings:
   api_key:
     from_secret: github_token
   files: release/*.tar.gz
   draft: true
   overwrite: true
   title: ${DRONE_TAG}
  when:
   event: tag

- name: publish:gcs
  image: plugins/gcs
  settings:
    source: binary-upload
    target: codesrv-ci.cdr.sh/
    token:
      from_secret: gcs-token
  when:
    event: tag

---
kind: pipeline
type: docker
name: arm64:linux

platform:
  arch: arm64

steps:
- name: cache:restore
  image: node:12
  commands:
    - apt update && apt install -y build-essential git libsecret-1-dev libx11-dev libxkbfile-dev
    - ./scripts/cacher.sh

- name: lint
  image: node:12
  commands:
    - yarn lint

- name: test
  image: node:12
  commands:
    - yarn test

- name: build
  image: node:12
  commands:
    - apt update && apt install -y build-essential git libsecret-1-dev libx11-dev libxkbfile-dev
    - timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'

- name: cache:package
  image: node:12
  commands:
    - ./scripts/cacher.sh
  when:
    event: push

- name: cache:push
  image: plugins/gcs
  settings:
     source: cache-upload/
     target: codesrv-ci.cdr.sh
     token:
       from_secret: gcs-token
  when:
    event: push

- name: test:build
  image: node:12
  commands:
    - yarn test:build

- name: publish:github
  image: plugins/github-release
  settings:
   api_key:
     from_secret: github_token
   files: release/*.tar.gz
   draft: true
   overwrite: true
   title: ${DRONE_TAG}
  when:
   event: tag

- name: publish:docker
  image: plugins/docker
  settings:
    username:
      from_secret: docker_user
    password:
      from_secret: docker_pass
    repo: codercom/code-server
    dockerfile: scripts/ci.dockerfile
    tags:
      - ${DRONE_TAG}-arm64
  when:
    event: tag

- name: publish:gcs
  image: plugins/gcs
  settings:
    source: binary-upload
    target: codesrv-ci.cdr.sh/
    token:
      from_secret: gcs-token
  when:
    event: tag

---
kind: pipeline
type: docker
name: arm64:alpine

platform:
  arch: arm64

steps:
- name: cache:restore
  image: node:12-alpine
  commands:
    - apk add libxkbfile-dev libsecret-dev build-base git bash python
    - ./scripts/cacher.sh

- name: lint
  image: node:12-alpine
  commands:
    - yarn lint

- name: test
  image: node:12-alpine
  commands:
    - apk add openssl
    - yarn test

- name: build
  image: node:12-alpine
  commands:
    - apk add libxkbfile-dev libsecret-dev build-base git bash python
    - timeout 50m ./scripts/ci.bash || echo 'Timed out or failed; continuing to preserve cache for the next run'

- name: cache:package
  image: node:12-alpine
  commands:
    - ./scripts/cacher.sh
  when:
    event: push

- name: cache:push
  image: plugins/gcs
  settings:
     source: cache-upload/
     target: codesrv-ci.cdr.sh
     token:
       from_secret: gcs-token
  when:
    event: push

- name: test:build
  image: node:12-alpine
  commands:
    - yarn test:build

- name: publish:github
  image: plugins/github-release
  settings:
   api_key:
     from_secret: github_token
   files: release/*.tar.gz
   draft: true
   overwrite: true
   title: ${DRONE_TAG}
  when:
   event: tag

- name: publish:gcs
  image: plugins/gcs
  settings:
    source: binary-upload
    target: codesrv-ci.cdr.sh/
    token:
      from_secret: gcs-token
  when:
    event: tag
