Skip to content

feat: delay configurations #61

feat: delay configurations

feat: delay configurations #61

Workflow file for this run

name: CI-CD
on:
push:
env:
# Docker
DOCKER_DOMAIN: ghcr.io
DOCKER_USER: ${{ github.actor }}
DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
DOCKER_LATEST_BRANCH: main
DOCKER_CACHE_KEY_ID: ${{ secrets.R2_KEY_ID }}
DOCKER_CACHE_KEY_SECRET: ${{ secrets.R2_KEY_SECRET }}
DOCKER_CACHE_URL: "https://9f21cac25548ad04899fc78c8101e7de.r2.cloudflarestorage.com"
DOCKER_CACHE_BUCKET: "ci-cache"
DOCKER_CACHE_REGION: "APAC"
jobs:
precommit:
name: Pre-commit Check
runs-on:
- nscloud-ubuntu-22.04-amd64-4x8-with-cache
- nscloud-cache-size-50gb
- nscloud-cache-tag-nitroso-helium-nix-store-cache
- nscloud-git-mirror-1gb
steps:
# Setup
- uses: AtomiCloud/actions.setup-nix@v1.1.0
- uses: AtomiCloud/actions.cache-bun@v1.0.1
# Action
- name: Run pre-commit
run: nix develop .#ci -c ./scripts/ci/pre-commit.sh
build:
name: Build Docker
permissions:
contents: read
id-token: write
packages: write
runs-on: ubuntu-22.04
strategy:
matrix:
configs:
- image-name: nitroso-helium
dockerfile: ./infra/Dockerfile
context: .
platform: linux/arm64,linux/amd64
env:
STRAT_DOCKER_IMAGE: ${{ matrix.configs.image-name }}
STRAT_DOCKERFILE: ${{ matrix.configs.dockerfile }}
STRAT_DOCKER_CONTEXT: ${{ matrix.configs.context }}
STRAT_DOCKER_PLATFORM: ${{ matrix.configs.platform }}
steps:
# Setup
- uses: AtomiCloud/actions.setup-docker@v1.2.0
# Action
- uses: rlespinasse/github-slug-action@v3.x
- name: Build and Push Docker
run: ./scripts/ci/ci-docker.sh
env:
CI_DOCKER_IMAGE: ${{ env.STRAT_DOCKER_IMAGE }}
CI_DOCKER_CONTEXT: ${{ env.STRAT_DOCKER_CONTEXT }}
CI_DOCKERFILE: ${{ env.STRAT_DOCKERFILE }}
CI_DOCKER_PLATFORM: ${{ env.STRAT_DOCKER_PLATFORM }}
DOMAIN: ${{ env.DOCKER_DOMAIN }}
GITHUB_REPO_REF: ${{ github.repository }}
GITHUB_SHA: ${{ github.sha }}
GITHUB_BRANCH: ${{ env.GITHUB_REF_SLUG }}
DOCKER_PASSWORD: ${{ env.DOCKER_PASSWORD }}
DOCKER_USER: ${{ env.DOCKER_USER }}
S3_KEY_ID: ${{ env.DOCKER_CACHE_KEY_ID }}
S3_KEY_SECRET: ${{ env.DOCKER_CACHE_KEY_SECRET }}
S3_URL: ${{ env.DOCKER_CACHE_URL }}
S3_BUCKET: ${{ env.DOCKER_CACHE_BUCKET }}
S3_REGION: ${{ env.DOCKER_CACHE_REGION }}
LATEST_BRANCH: ${{ env.DOCKER_LATEST_BRANCH}}
publish:
name: Publish Helm
needs: build
permissions:
contents: read
id-token: write
packages: write
runs-on:
- nscloud-ubuntu-22.04-amd64-4x8-with-cache
- nscloud-cache-size-50gb
- nscloud-cache-tag-nitroso-helium-nix-store-cache
- nscloud-git-mirror-1gb
steps:
# Setup
- uses: AtomiCloud/actions.setup-nix@v1.1.0
# Action
- uses: rlespinasse/github-slug-action@v3.x
- name: Publish
env:
GITHUB_REPO_REF: ${{ github.repository }}
GITHUB_SHA: ${{ github.sha }}
GITHUB_BRANCH: ${{ env.GITHUB_REF_SLUG_URL }}
DOMAIN: ${{ env.DOCKER_DOMAIN }}
DOCKER_PASSWORD: ${{ env.DOCKER_PASSWORD }}
DOCKER_USER: ${{ env.DOCKER_USER }}
run: nix develop .#ci -c scripts/ci/publish-helm.sh
release:
name: Semantic Release
needs:
- precommit
- build
if: github.ref == 'refs/heads/main'
runs-on:
- nscloud-ubuntu-22.04-amd64-4x8-with-cache
- nscloud-cache-size-50gb
- nscloud-cache-tag-releaser-nitroso-helium-nix-store-cache
- nscloud-git-mirror-1gb
steps:
# Setup
- uses: AtomiCloud/actions.setup-nix@v1.1.0
- uses: AtomiCloud/actions.cache-npm@v1.0.1
# Action
- uses: rlespinasse/github-slug-action@v3.x
- name: Release
env:
GITHUB_REPO_REF: ${{ github.repository }}
GITHUB_SHA: ${{ github.sha }}
GITHUB_BRANCH: ${{ env.GITHUB_REF_SLUG_URL }}
CI_DOCKER_IMAGES: "nitroso-helium"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOMAIN: ${{ env.DOCKER_DOMAIN }}
DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
DOCKER_USER: ${{ env.DOCKER_USER }}
run: nix develop .#releaser -c scripts/ci/release.sh