aboutsummaryrefslogblamecommitdiff
path: root/.drone.yml
blob: 01adc2786e337cc372fab145b1e298533941623f (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 -A rust.inputDerivation -A integration.inputDerivation -A release.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 --attr rust --run "cargo fmt -- --check"
      - nix-shell --attr rust --run "cargo clippy -- --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 --option log-lines 100 --argstr target x86_64-unknown-linux-musl --arg release false --argstr git_version $DRONE_COMMIT
      - nix-shell --attr rust --run "./script/not-dynamic.sh result/bin/garage"

  - name: unit + func tests
    image: nixpkgs/nix:nixos-21.05
    environment:
      GARAGE_TEST_INTEGRATION_EXE: result/bin/garage
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - |
        nix-build \
          --no-build-output \
          --option log-lines 100 \
          --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-*
      - ./result/bin/integration-*

  - 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 --attr integration --run ./script/test-smoke.sh || (cat /tmp/garage.log; false)

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

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 rust.inputDerivation -A integration.inputDerivation -A release.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
      - nix-shell --attr rust --run "./script/not-dynamic.sh result/bin/garage"

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

  - 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 --attr release --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 --attr release --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 rust.inputDerivation -A integration.inputDerivation -A release.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
      - nix-shell --attr rust --run "./script/not-dynamic.sh result/bin/garage"

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

  - 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 --attr release --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 --attr release --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  -A rust.inputDerivation -A integration.inputDerivation -A release.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
      - nix-shell --attr rust --run "./script/not-dynamic.sh result/bin/garage"

  - 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 --attr release --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 --attr release --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 shell.nix -A rust.inputDerivation -A integration.inputDerivation -A release.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
      - nix-shell --attr rust --run "./script/not-dynamic.sh result/bin/garage"

  - 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 --attr release --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 --attr release --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 --attr release --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: 60fad5d78c12616be848aae35703f250300abab5f2eda08eb48fe3afd6cc58c8

...