Skip to content

otechdo/continuous-testing

Repository files navigation

What it's ?

continuous

It's a project to run continuous testing to check if the last commit have not broken something.

On every commit run a git clone of your project in the container, print the latest commit, run build and tests.

On your computer you will see notification after the build or on the tracking initialize.

The continuous directory is now a git repository.

The latest release branch take the name of your environment variable $USER.

You can be back to an old release if you want or create your branch.

All providers scripts are based on archlinux from my docker hub to simplify testing.

D Rust Go Bash Php C Java Template

cd continuous && git checkout -b new-branch-name $tag || exit 1

continuous zuu

demonstration

Audit Check Clippy Format Test

GitHub workflow

name: continuous
on:
  push:
    branches: [ "master" , "develop" ]
  pull_request:
    branches: [ "master" , "develop"]
env:
  CARGO_TERM_COLOR: always
jobs:
  continuous:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: deps 
      run: sudo apt-get install -y curl fd-find git docker-ce docker-ce-cli containerd.io docker-buildx-plugin packer && packer plugins install github.com/hashicorp/docker
    - name: continuous
      run: git clone https://github.com/taishingi/continuous-template.git continuous && cd continuous/rust && ./scripts-gen "github.com" "username" "repository" "${GITHUB_REF##*/}" "cpu" && packer validate . && packer build .

Local workflow

Docker, Packer Git and lib notify must be installed on your system.

Install docker

curl -fsSL https://get.docker.com/rootless | sh

Configure packer

packer plugins install github.com/hashicorp/docker

Configure packer for go

packer plugins install github.com/hashicorp/googlecompute

Install continuous testing

Archlinux

AUR License AUR Maintainer AUR Version AUR Votes

paru -S continuous-testing

Others

cargo install continuous-testing fd-find

Initialize tracking

again init

Again configuration

AGAIN_REPOSITORY=continuous-testing
AGAIN_USERNAME=taishingi
AGAIN_BRANCH=master
AGAIN_DOMAIN=github.com
AGAIN_CPU=5
AGAIN_LANGUAGE=rust
AGAIN_REMOTE=origin

Again language valid

  • c
  • c++
  • d
  • go
  • java
  • php
  • rust
  • sh

Usage

git add .
git commit -m "msg"

Structure for rust executable

.
├── continuous
│  ├── d
│  │  ├── d.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── go
│  │  ├── go.pkr.hcl
│  │  ├── main.go
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── rust
│  │  ├── beta
│  │  ├── nightly
│  │  ├── README.md
│  │  ├── rust.pkr.hcl
│  │  ├── scripts-gen
│  │  └── stable
│  ├── sh
│  │  ├── bash.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  └── README.md
├── src
│  └── main.rs
└── Cargo.toml

Structure for rust library

.
├── continuous
│  ├── d
│  │  ├── d.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── go
│  │  ├── go.pkr.hcl
│  │  ├── main.go
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── rust
│  │  ├── beta
│  │  ├── nightly
│  │  ├── README.md
│  │  ├── rust.pkr.hcl
│  │  ├── scripts-gen
│  │  └── stable
│  ├── sh
│  │  ├── bash.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  └── README.md
├── src
│  └── lib.rs
└── Cargo.toml

Structure for d

.
├── continuous
│  ├── d
│  │  ├── beta
│  │  ├── d.pkr.hcl
│  │  ├── nightly
│  │  ├── README.md
│  │  ├── scripts-gen
│  │  └── stable
│  ├── go
│  │  ├── go.pkr.hcl
│  │  ├── main.go
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── rust
│  │  ├── README.md
│  │  ├── rust.pkr.hcl
│  │  └── scripts-gen
│  ├── sh
│  │  ├── bash.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  └── README.md
├── source
│  └── app.d
└── dub.json

File structure for go

.
├── continuous
│  ├── d
│  │  ├── d.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  ├── go
│  │  ├── beta
│  │  ├── go.pkr.hcl
│  │  ├── main.go
│  │  ├── nightly
│  │  ├── README.md
│  │  ├── scripts-gen
│  │  └── stable
│  ├── rust
│  │  ├── README.md
│  │  ├── rust.pkr.hcl
│  │  └── scripts-gen
│  ├── sh
│  │  ├── bash.pkr.hcl
│  │  ├── README.md
│  │  └── scripts-gen
│  └── README.md
└── go.mod