Skip to content

Commit

Permalink
devnet (#427)
Browse files Browse the repository at this point in the history
* devnet release

* Build everything

* Use self hosted runners

* use pre-installed cargo

Co-authored-by: Karel L. Kubat <k.l.kubat@gmail.com>
  • Loading branch information
2 people authored and Dominik Roth committed Jan 17, 2022
1 parent ae98509 commit d6216aa
Show file tree
Hide file tree
Showing 10 changed files with 5,876 additions and 204 deletions.
84 changes: 84 additions & 0 deletions .github/workflows/devnet-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: "Devnet Community Release"

on:
push:
branches:
- nix-devnet

jobs:
deploy-devnet:
runs-on:
- self-hosted
- linux
- x64
- sre
concurrency:
group: deploy-devnet
cancel-in-progress: false
steps:
- uses: actions/checkout@v2

- uses: google-github-actions/setup-gcloud@master
with:
service_account_key: ${{ secrets.GCP_CREDENTIALS }}
export_default_credentials: true

- uses: actions/setup-python@v2

- uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixos-unstable

- uses: cachix/cachix-action@v10
with:
name: composable-community
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
extraPullNames: composable-community

- name: Set env
run: |
echo "RELEASE_VERSION=$GITHUB_SHA" >> $GITHUB_ENV
- name: Push artifact
run: |
/home/runner/.cargo/bin/cargo build --release
tar -czvf composable-picasso-${{ env.RELEASE_VERSION }}.tar.gz target/release/composable
gsutil mv *.tar.gz gs://composable-binaries/community-releases/picasso/
- name: Load state
run: |
cd nix
echo $(cat devnet.json | jq --arg version "${{ env.RELEASE_VERSION }}" '.composable.version = $version' | jq --arg hash "$(nix-prefetch-url https://storage.googleapis.com/composable-binaries/community-releases/picasso/composable-picasso-${{ env.RELEASE_VERSION }}.tar.gz)" '.composable.hash = $hash') > devnet.json
jq --null-input --arg client_email "$GCP_DEVNET_SERVICE_ACCOUNT" --arg project_id "$GCP_PROJECT_ID" --arg key "\"$GCP_DEVNET_SERVICE_ACCOUNT_KEY\"" '{ "project_id": $project_id, "private_key": ($key | fromjson), "client_email": $client_email }' > ops.json
if gsutil -q stat $NIXOPS_STATE_URL/$NIXOPS_STATE;
then
gsutil cp $NIXOPS_STATE_URL/$NIXOPS_STATE $NIXOPS_STATE
else
nix develop .#deploy --impure --command nixops create -d devnet-gce
fi
env:
NIXOPS_STATE_URL: "gs://composable-state"
NIXOPS_STATE: "deployment.nixops"
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
GCP_DEVNET_SERVICE_ACCOUNT: ${{ secrets.GCP_DEVNET_SERVICE_ACCOUNT }}
GCP_DEVNET_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_DEVNET_SERVICE_ACCOUNT_KEY }}

- name: Deploy
run: |
cd nix
nix develop .#deploy --impure --command nixops deploy --check --confirm -d devnet-gce
env:
NIXOPS_STATE: "deployment.nixops"

- name: Store state
if: always()
run: |
cd nix
gsutil cp $NIXOPS_STATE $NIXOPS_STATE_URL/
env:
NIXOPS_STATE: "deployment.nixops"
NIXOPS_STATE_URL: "gs://composable-state"

Loading

0 comments on commit d6216aa

Please sign in to comment.