aboutsummaryrefslogblamecommitdiff
path: root/.drone.yml
blob: f349d92691860c1d4e96d2b76e2157032050f1eb (plain) (tree)
1
2
3
4
5
6
7
8
   


              
          
                     
 
        



                            

          


                     
      

                                  
            






                                                                                                   
 
                      
                                  
            



                      
             

                                                                                                                                              
 
               
                                  
            



                      
             
                                                                                                                                    
 

                                  
            



                      
             











                                                     
 

                                  
            









                                                                                                                                    




                                                

                                 
            



                      
             


























                                                                                                                  

























                                                   
         

              

              

                           
 























































































































                                                                                                                  












































































































                                                                                                                    




































































































                                                                                                                         


































































































                                                                                                                    



























                                                                                
                       
                         
                         








           

               
                                                                      

   
---
kind: pipeline
name: default

workspace:
  base: /drone/garage

volumes:
- name: nix_store
  host:
    path: /var/lib/drone/nix
- name: nix_config
  temp: {}

environment:
  HOME: /drone/garage

steps:
  - name: setup nix
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - cp nix/nix.conf /etc/nix/nix.conf
      - nix-build --no-build-output --no-out-link shell.nix --arg release false  -A inputDerivation

  - name: code quality
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-shell --arg release false --run "cargo fmt -- --check"
      - nix-shell --arg release false --run "cargo clippy -- --allow clippy::needless_borrow --allow  clippy::needless-return --deny warnings"

  - name: build
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-build --no-build-output --argstr target x86_64-unknown-linux-musl --arg release false --argstr git_version $DRONE_COMMIT

  - name: unit tests
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - |
        nix-build \
          --no-build-output \
          --argstr target x86_64-unknown-linux-musl \
          --argstr compileMode test
      - ./result*/bin/garage_api*
      - ./result*/bin/garage_model*
      - ./result*/bin/garage_rpc*
      - ./result*/bin/garage_table*
      - ./result*/bin/garage_util*
      - ./result*/bin/garage_web*
      - ./result*/bin/garage*

  - name: smoke-test
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-build --no-build-output --argstr target x86_64-unknown-linux-musl --arg release false --argstr git_version $DRONE_COMMIT
      - nix-shell --arg release false --run ./script/test-smoke.sh || (cat /tmp/garage.log; false)

  - name: update cache
    image: nixpkgs/nix:nixos-21.05
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: cache_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: cache_aws_secret_access_key
      NIX_PRIV_KEY:
        from_secret: nix_priv_key
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - (umask 377 && echo $NIX_PRIV_KEY > /etc/nix/signing-key.sec)
      - |
        nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
          $(nix-store -qR --include-outputs \
            $(nix-build --no-out-link shell.nix --arg release false -A inputDerivation))
      - |
        nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
          $(nix-store -qR --include-outputs \
            $(nix-instantiate --argstr target x86_64-unknown-linux-musl --argstr compileMode test))
      - |
        nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
          $(nix-store -qR --include-outputs \
            $(nix-instantiate --argstr target x86_64-unknown-linux-musl --arg release false))
    when:
      event:
      - cron

trigger:
  event:
  - custom
  - push
  - pull_request
  - tag
  - cron

node:
  nix: 1

---
kind: pipeline
name: website

steps:
  - name: build
    image: hrektts/mdbook
    commands:
      - cd doc/book
      - mdbook build

  - name: upload
    image: plugins/s3
    settings:
      bucket: garagehq.deuxfleurs.fr
      access_key:
        from_secret: garagehq_aws_access_key_id
      secret_key:
        from_secret: garagehq_aws_secret_access_key
      source: doc/book/book/**/*
      strip_prefix: doc/book/book/
      target: /
      path_style: true
      endpoint: https://garage.deuxfleurs.fr
      region: garage
    when:
      event:
        - push
      branch:
        - main
      repo:
        - Deuxfleurs/garage

trigger:
  event:
  - custom
  - push
  - pull_request

node:
  nix: 1

---
kind: pipeline
type: docker
name: release-linux-x86_64

volumes:
- name: nix_store
  host:
    path: /var/lib/drone/nix
- name: nix_config
  temp: {}

environment:
  TARGET: x86_64-unknown-linux-musl

steps:
  - name: setup nix
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - cp nix/nix.conf /etc/nix/nix.conf
      - nix-build --no-build-output --no-out-link shell.nix -A inputDerivation

  - name: build
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-build --no-build-output --argstr target $TARGET --arg release true --argstr git_version $DRONE_COMMIT

  - name: integration
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-shell --run ./script/test-smoke.sh || (cat /tmp/garage.log; false)

  - name: update cache
    image: nixpkgs/nix:nixos-21.05
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: cache_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: cache_aws_secret_access_key
      NIX_PRIV_KEY:
        from_secret: nix_priv_key
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - (umask 377 && echo $NIX_PRIV_KEY > /etc/nix/signing-key.sec)
      - |
        nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
          $(nix-store -qR --include-outputs \
            $(nix-instantiate --argstr target $TARGET --arg release true))

  - name: push static binary
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: garagehq_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: garagehq_aws_secret_access_key
    commands:
      - nix-shell --arg rust false --arg integration false --run "to_s3"

  - name: docker build and publish
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    environment:
      DOCKER_AUTH:
        from_secret: docker_auth
      DOCKER_PLATFORM: "linux/amd64"
      CONTAINER_NAME: "dxflrs/amd64_garage"
      HOME: "/kaniko"
    commands:
      - mkdir -p /kaniko/.docker
      - echo $DOCKER_AUTH > /kaniko/.docker/config.json
      - export CONTAINER_TAG=${DRONE_TAG:-$DRONE_COMMIT}
      - nix-shell --arg rust false --arg integration false --run "to_docker"


trigger:
  event:
  - promote
  - cron

node:
  nix: 1

# ---
# kind: pipeline
# type: docker
# name: release-linux-i686
# 
# volumes:
# - name: nix_store
#   host:
#     path: /var/lib/drone/nix
# - name: nix_config
#   temp: {}
# 
# environment:
#   TARGET: i686-unknown-linux-musl
# 
# steps:
#   - name: setup nix
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - cp nix/nix.conf /etc/nix/nix.conf
#       - nix-build --no-build-output --no-out-link shell.nix -A inputDerivation
# 
#   - name: build
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - nix-build --no-build-output --argstr target $TARGET --arg release true --argstr git_version $DRONE_COMMIT
# 
#   - name: integration
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - nix-shell --run ./script/test-smoke.sh || (cat /tmp/garage.log; false)
# 
#   - name: update cache
#     image: nixpkgs/nix:nixos-21.05
#     environment:
#       AWS_ACCESS_KEY_ID:
#         from_secret: cache_aws_access_key_id
#       AWS_SECRET_ACCESS_KEY:
#         from_secret: cache_aws_secret_access_key
#       NIX_PRIV_KEY:
#         from_secret: nix_priv_key
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - (umask 377 && echo $NIX_PRIV_KEY > /etc/nix/signing-key.sec)
#       - |
#         nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
#           $(nix-store -qR --include-outputs \
#             $(nix-instantiate --argstr target $TARGET --arg release true))
# 
#   - name: push static binary
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     environment:
#       AWS_ACCESS_KEY_ID:
#         from_secret: garagehq_aws_access_key_id
#       AWS_SECRET_ACCESS_KEY:
#         from_secret: garagehq_aws_secret_access_key
#     commands:
#       - nix-shell --arg rust false --arg integration false --run "to_s3"
# 
#   - name: docker build and publish
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     environment:
#       DOCKER_AUTH:
#         from_secret: docker_auth
#       DOCKER_PLATFORM: "linux/386"
#       CONTAINER_NAME: "dxflrs/386_garage"
#       HOME: "/kaniko"
#     commands:
#       - mkdir -p /kaniko/.docker
#       - echo $DOCKER_AUTH > /kaniko/.docker/config.json
#       - export CONTAINER_TAG=${DRONE_TAG:-$DRONE_COMMIT}
#       - nix-shell --arg rust false --arg integration false --run "to_docker"
# 
# trigger:
#   event:
#   - promote
#   - cron
# 
# node:
#   nix: 1

---
kind: pipeline
type: docker
name: release-linux-aarch64

volumes:
- name: nix_store
  host:
    path: /var/lib/drone/nix
- name: nix_config
  temp: {}

environment:
  TARGET: aarch64-unknown-linux-musl

steps:
  - name: setup nix
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - cp nix/nix.conf /etc/nix/nix.conf
      - nix-build --no-build-output --no-out-link ./shell.nix --arg rust false --arg integration false -A inputDerivation

  - name: build
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - nix-build --no-build-output --argstr target $TARGET --arg release true --argstr git_version $DRONE_COMMIT

  - name: update cache
    image: nixpkgs/nix:nixos-21.05
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: cache_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: cache_aws_secret_access_key
      NIX_PRIV_KEY:
        from_secret: nix_priv_key
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - (umask 377 && echo $NIX_PRIV_KEY > /etc/nix/signing-key.sec)
      - |
        nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
          $(nix-store -qR --include-outputs \
            $(nix-instantiate --argstr target $TARGET --arg release true))

  - name: push static binary
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: garagehq_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: garagehq_aws_secret_access_key
    commands:
      - nix-shell --arg rust false --arg integration false --run "to_s3"

  - name: docker build and publish
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    environment:
      DOCKER_AUTH:
        from_secret: docker_auth
      DOCKER_PLATFORM: "linux/arm64"
      CONTAINER_NAME: "dxflrs/arm64_garage"
      HOME: "/kaniko"
    commands:
      - mkdir -p /kaniko/.docker
      - echo $DOCKER_AUTH > /kaniko/.docker/config.json
      - export CONTAINER_TAG=${DRONE_TAG:-$DRONE_COMMIT}
      - nix-shell --arg rust false --arg integration false --run "to_docker"

trigger:
  event:
  - promote
  - cron

node:
  nix: 1

# ---
# kind: pipeline
# type: docker
# name: release-linux-armv6l
# 
# volumes:
# - name: nix_store
#   host:
#     path: /var/lib/drone/nix
# - name: nix_config
#   temp: {}
# 
# environment:
#   TARGET: armv6l-unknown-linux-musleabihf
# 
# steps:
#   - name: setup nix
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - cp nix/nix.conf /etc/nix/nix.conf
#       - nix-build --no-build-output --no-out-link --arg rust false --arg integration false -A inputDerivation
# 
#   - name: build
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - nix-build --no-build-output --argstr target $TARGET --arg release true --argstr git_version $DRONE_COMMIT
# 
#   - name: update cache
#     image: nixpkgs/nix:nixos-21.05
#     environment:
#       AWS_ACCESS_KEY_ID:
#         from_secret: cache_aws_access_key_id
#       AWS_SECRET_ACCESS_KEY:
#         from_secret: cache_aws_secret_access_key
#       NIX_PRIV_KEY:
#         from_secret: nix_priv_key
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     commands:
#       - (umask 377 && echo $NIX_PRIV_KEY > /etc/nix/signing-key.sec)
#       - |
#         nix copy --to 's3://nix?endpoint=garage.deuxfleurs.fr&region=garage&secret-key=/etc/nix/signing-key.sec' \
#           $(nix-store -qR --include-outputs \
#             $(nix-instantiate --argstr target $TARGET --arg release true))
# 
#   - name: push static binary
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     environment:
#       AWS_ACCESS_KEY_ID:
#         from_secret: garagehq_aws_access_key_id
#       AWS_SECRET_ACCESS_KEY:
#         from_secret: garagehq_aws_secret_access_key
#     commands:
#       - nix-shell --arg integration false --arg rust false --run "to_s3"
# 
#   - name: docker build and publish
#     image: nixpkgs/nix:nixos-21.05
#     volumes:
#     - name: nix_store
#       path: /nix
#     - name: nix_config
#       path: /etc/nix
#     environment:
#       DOCKER_AUTH:
#         from_secret: docker_auth
#       DOCKER_PLATFORM: "linux/arm"
#       CONTAINER_NAME: "dxflrs/arm_garage"
#       HOME: "/kaniko"
#     commands:
#       - mkdir -p /kaniko/.docker
#       - echo $DOCKER_AUTH > /kaniko/.docker/config.json
#       - export CONTAINER_TAG=${DRONE_TAG:-$DRONE_COMMIT}
#       - nix-shell --arg rust false --arg integration false --run "to_docker"
# 
# trigger:
#   event:
#   - promote
#   - cron
# 
# node:
#   nix: 1

---
kind: pipeline
type: docker
name: refresh-release-page

volumes:
- name: nix_store
  host:
    path: /var/lib/drone/nix

steps:
  - name: refresh-index
    image: nixpkgs/nix:nixos-21.05
    volumes:
    - name: nix_store
      path: /nix
    environment:
      AWS_ACCESS_KEY_ID:
        from_secret: garagehq_aws_access_key_id
      AWS_SECRET_ACCESS_KEY:
        from_secret: garagehq_aws_secret_access_key
    commands:
      - mkdir -p /etc/nix && cp nix/nix.conf /etc/nix/nix.conf
      - nix-shell --arg integration false --arg rust false --run "refresh_index"

depends_on:
  - release-linux-x86_64
  #- release-linux-i686
  - release-linux-aarch64
  #- release-linux-armv6l

trigger:
  event:
  - promote
  - cron

node:
  nix: 1

---
kind: signature
hmac: 1c33490cc2902564c4250a409c156683d0d549b8c9d5aee4e46d1bde4e0ccf2c

...