name: CI on: push: branches: [main, 'feature/**', 'fix/**', 'feat/**'] tags-ignore: - 'v*' pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest if: github.event_name != 'delete' container: image: gitea.siegeln.net/cameleer/cameleer-build:1 credentials: username: cameleer password: ${{ secrets.REGISTRY_TOKEN }} steps: - uses: actions/checkout@v4 - name: Cache Maven dependencies uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- - name: Build and Test (unit tests only) run: >- mvn clean verify -B -Dsurefire.excludes="**/AuthControllerTest.java,**/TenantControllerTest.java,**/LicenseControllerTest.java,**/AuditRepositoryTest.java,**/CameleerSaasApplicationTest.java,**/EnvironmentControllerTest.java,**/AppControllerTest.java,**/DeploymentControllerTest.java" docker: needs: build runs-on: ubuntu-latest if: github.event_name == 'push' container: image: gitea.siegeln.net/cameleer/cameleer-docker-builder:1 credentials: username: cameleer password: ${{ secrets.REGISTRY_TOKEN }} steps: - name: Checkout run: | git clone --depth=1 --branch=${GITHUB_REF_NAME} https://cameleer:${REGISTRY_TOKEN}@gitea.siegeln.net/${GITHUB_REPOSITORY}.git . env: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} - name: Login to registry run: echo "$REGISTRY_TOKEN" | docker login gitea.siegeln.net -u cameleer --password-stdin env: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }} - name: Compute image tags run: | sanitize_branch() { echo "$1" | sed -E 's#^(feature|fix|feat|hotfix)/##' \ | tr '[:upper:]' '[:lower:]' \ | sed 's/[^a-z0-9-]/-/g' \ | sed 's/--*/-/g; s/^-//; s/-$//' \ | cut -c1-20 \ | sed 's/-$//' } if [ "$GITHUB_REF_NAME" = "main" ]; then echo "IMAGE_TAGS=latest" >> "$GITHUB_ENV" else SLUG=$(sanitize_branch "$GITHUB_REF_NAME") echo "IMAGE_TAGS=branch-$SLUG" >> "$GITHUB_ENV" fi - name: Build and push run: | TAGS="-t gitea.siegeln.net/cameleer/cameleer-saas:${{ github.sha }}" for TAG in $IMAGE_TAGS; do TAGS="$TAGS -t gitea.siegeln.net/cameleer/cameleer-saas:$TAG" done docker build $TAGS --provenance=false . for TAG in $IMAGE_TAGS ${{ github.sha }}; do docker push gitea.siegeln.net/cameleer/cameleer-saas:$TAG done env: REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}