aboutsummaryrefslogblamecommitdiff
path: root/.drone.yml
blob: 726387a4fe23fa3cbab940f1c12f191eea10b5c7 (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: nix maintainance
    image: nixpkgs/nix:nixos-22.05
    volumes:
    - name: nix_store
      path: /mnt
    - name: nix_config
      path: /etc/nix
    commands:
    - "[ -d /mnt/store/3vpyn2qz5ay057nq9x68sh0r328d77ng-nix-2.8.1/ ] || (mkdir -p /mnt/store && cp -r /nix/store/* /mnt/store/)"
    - "[ -d /mnt/var/ ] || cp -r /nix/var /mnt/"
    - cp nix/nix.conf /etc/nix/nix.conf

  - name: warmup cache
    image: nixpkgs/nix:nixos-22.05
    volumes:
    - name: nix_store
      path: /nix
    - name: nix_config
      path: /etc/nix
    commands:
      - 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-22.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-22.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 rust --run "./script/not-dynamic.sh result/bin/garage"

  - name: unit + func tests
    image: nixpkgs/nix:nixos-22.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-22.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

---
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-22.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-22.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-22.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-22.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-22.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

---
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-22.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-22.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-22.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-22.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-22.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

---
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-22.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-22.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-22.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-22.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

---
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-22.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-22.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-22.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-22.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

---
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-22.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

---
kind: signature
hmac: 12b06094741a9b6da448e3a176d2fc37b2c261ab87acefa60a070e67a55352b0

...