automate all the things
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is failing Details

This commit is contained in:
Cadey Ratio 2020-07-25 21:24:47 -04:00
parent 5c7188a2bf
commit a9d7c9b3be
2 changed files with 105 additions and 0 deletions

View File

@ -10,3 +10,84 @@ steps:
when:
event:
- push
- name: auto-release
image: xena/gitea-release
pull: always
settings:
auth_username: cadey
gitea_server: https://tulpa.dev
gitea_token:
from_secret: GITEA_TOKEN
when:
event:
- push
branch:
- master
---
kind: pipeline
name: cargo publish
steps:
- name: publish maj
image: rust:1
commands:
- cargo login $CARGO_TOKEN
- "cargo publish ||:"
environment:
CARGO_TOKEN:
from_secret: CARGO_TOKEN
when:
event:
- tag
---
kind: pipeline
name: docker
steps:
- name: build docker image
image: "monacoremo/nix:2020-04-05-05f09348-circleci"
environment:
USER: root
commands:
- true # cachix use xe
- nix-build -A majsite docker.nix
- cp $(readlink result) /result/site.tgz
- nix-build -A majc docker.nix
- cp $(readlink result) /result/majc.tgz
volumes:
- name: image
path: /result
when:
event:
- tag
- name: push docker image
image: docker:dind
volumes:
- name: image
path: /result
- name: dockersock
path: /var/run/docker.sock
commands:
- docker load -i /result/site.tgz
- docker load -i /result/majc.tgz
- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
- docker push xena/majsite
- docker push xena/majc
environment:
DOCKER_USERNAME: xena
DOCKER_PASSWORD:
from_secret: DOCKER_PASSWORD
when:
event:
- tag
volumes:
- name: image
temp: {}
- name: dockersock
host:
path: /var/run/docker.sock

24
docker.nix Normal file
View File

@ -0,0 +1,24 @@
{ system ? builtins.currentSystem }:
let
pkgs = import <nixpkgs> { };
callPackage = pkgs.lib.callPackageWith pkgs;
crates = callPackage ./default.nix { };
dockerImage = pkg:
pkgs.dockerTools.buildLayeredImage {
name = "xena/${pkg.name}";
tag = "latest";
contents = [ pkg ];
config = {
Cmd = [ "/bin/${pkg.name}" ];
WorkingDir = "/";
};
};
in {
majc = dockerImage crates.majc;
majsite = dockerImage crates.majsite;
}