Skip to content
Snippets Groups Projects
ci.yml 17.79 KiB
name: CI and Artifacts

on:
    pull_request:
    push:
        # documentation workflow deals with this or is not relevant for this workflow
        paths-ignore:
          - '*.md'
          - 'conduwuit-example.toml'
          - 'book.toml'
          - '.gitlab-ci.yml'
          - '.gitignore'
          - 'renovate.json'
          - 'docs/**'
          - 'debian/**'
          - 'docker/**'
        branches:
            - main
        tags:
          - '*'
    # Allows you to run this workflow manually from the Actions tab
    workflow_dispatch:

concurrency:
    group: ${{ github.head_ref || github.ref_name }}
    cancel-in-progress: true

env:
    # Required to make some things output color
    TERM: ansi
    # Publishing to my nix binary cache
    ATTIC_TOKEN: ${{ secrets.ATTIC_TOKEN }}
    # Just in case incremental is still being set to true, speeds up CI
    CARGO_INCREMENTAL: 0
    # Custom nix binary cache if fork is being used
    ATTIC_ENDPOINT: ${{ vars.ATTIC_ENDPOINT }}
    ATTIC_PUBLIC_KEY: ${{ vars.ATTIC_PUBLIC_KEY }}
    # Use the all-features devshell instead of default, to ensure that features
    # match between nix and cargo
    DIRENV_DEVSHELL: all-features
    # Get error output from nix that we can actually use
    NIX_CONFIG: show-trace = true

permissions:
    packages: write
    contents: read

jobs:
    tests:
        name: Test
        runs-on: ubuntu-latest
        steps:
            - name: Sync repository
              uses: actions/checkout@v4

            - name: Tag comparison check
              if: startsWith(github.ref, 'refs/tags/v')
              run: |
                  # Tag mismatch with latest repo tag check to prevent potential downgrades
                  LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)

                  if [ $LATEST_TAG != ${{ github.ref_name }} ]; then
                    echo '# WARNING: Attempting to run this workflow for a tag that is not the latest repo tag. Aborting.'
                    echo '# WARNING: Attempting to run this workflow for a tag that is not the latest repo tag. Aborting.' >> $GITHUB_STEP_SUMMARY
                    exit 1
                  fi

            - name: Install Nix
              uses: DeterminateSystems/nix-installer-action@main