diff --git a/.forgejo/workflows/build-debian.yml b/.forgejo/workflows/build-debian.yml index d94b282e..f674a7c5 100644 --- a/.forgejo/workflows/build-debian.yml +++ b/.forgejo/workflows/build-debian.yml @@ -32,6 +32,27 @@ jobs: echo "distribution=$DISTRIBUTION" >> $GITHUB_OUTPUT echo "Debian distribution: $DISTRIBUTION ($VERSION)" + - name: Get package revision and component + id: package_meta + run: | + # REVISION is appended to the package version, COMPONENT is used in + # apt's repository config like a git repo branch + if [[ "${{ forge.ref }}" == "refs/tags/"* ]]; then + COMPONENT="stable" + REVISION="stable" + elif [ "${{ forge.ref_name }}" = "main" ]; then + COMPONENT="dev" + REVISION="dev" + else + # Use sanitized ref name for the component + COMPONENT=$(echo "${{ forge.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]' | cut -c1-30) + # and use SHA for the revision + REVISION=${{ forge.sha }} + fi + echo "component=$COMPONENT" >> $GITHUB_OUTPUT + echo "revision=$REVISION" >> $GITHUB_OUTPUT + echo "Target component: $COMPONENT revision $REVISION" + - name: Checkout repository with full history uses: https://code.forgejo.org/actions/checkout@v4 with: @@ -65,66 +86,24 @@ jobs: rust-version: nightly github-token: ${{ secrets.GH_PUBLIC_RO }} - - name: Get package version and component - id: package-meta - run: | - BASE_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r ".packages[] | select(.name == \"conduwuit\").version" | sed 's/[^a-zA-Z0-9.+]/~/g') - # VERSION is the package version, COMPONENT is used in - # apt's repository config like a git repo branch - if [[ "${{ forge.ref }}" == "refs/tags/"* ]]; then - COMPONENT="stable" - VERSION=$BASE_VERSION - else - SHA=$(echo "${{ forge.sha }}" | cut -c1-7) - DATE=$(date +%Y%m%d) - if [ "${{ forge.ref_name }}" = "main" ]; then - COMPONENT="dev" - else - # Use sanitized ref name for the component - COMPONENT=$(echo "${{ forge.ref_name }}" | sed 's/[^a-zA-Z0-9.+]/~/g' | tr '[:upper:]' '[:lower:]' | cut -c1-30) - fi - VERSION="$BASE_VERSION~git$DATE.$SHA-$COMPONENT" - fi - echo "component=$COMPONENT" >> $GITHUB_OUTPUT - echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "Component: $COMPONENT" - echo "Version: $VERSION" - - - name: Check cargo-deb version - id: cargo-deb-version - run: | - VERSION=$(curl -s https://index.crates.io/ca/rg/cargo-deb | tail -n1 | jq -r .vers) - echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "Latest cargo-deb version: $VERSION" - - - name: Cache cargo-deb installation - id: cache-cargo-deb - uses: actions/cache@v3 - with: - path: ~/.cargo/bin/cargo-deb - key: ${{ steps.cargo-deb-version.outputs.version }} - - - name: Install cargo-deb - if: steps.cache-cargo-deb.outputs.cache-hit != 'true' - run: cargo binstall cargo-deb - - name: Install build dependencies run: | + cargo binstall cargo-deb apt-get update -y # Build dependencies for rocksdb apt-get install -y clang liburing-dev - name: Run cargo-deb - id: cargo-deb + id: cargo_deb run: | - DEB_PATH=$(cargo deb --deb-version ${{ steps.package-meta.outputs.version }}) + DEB_PATH=$(cargo deb --deb-revision ${{ steps.package_meta.outputs.revision }}) echo "path=$DEB_PATH" >> $GITHUB_OUTPUT - name: Test deb installation run: | - echo "Installing: ${{ steps.cargo-deb.outputs.path }}" + echo "Installing: ${{ steps.cargo_deb.outputs.path }}" - apt install -y ${{ steps.cargo-deb.outputs.path }} + apt install -y ${{ steps.cargo_deb.outputs.path }} apt info continuwuity @@ -136,15 +115,15 @@ jobs: uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: continuwuity - path: ${{ steps.cargo-deb.outputs.path }} + path: ${{ steps.cargo_deb.outputs.path }} - name: Publish to Forgejo package registry if: ${{ forge.event_name == 'push' || forge.event_name == 'workflow_dispatch' }} run: | OWNER="continuwuation" DISTRIBUTION=${{ steps.debian_version.outputs.distribution }} - COMPONENT=${{ steps.package-meta.outputs.component }} - DEB=${{ steps.cargo-deb.outputs.path }} + COMPONENT=${{ steps.package_meta.outputs.component }} + DEB=${{ steps.cargo_deb.outputs.path }} echo "Publishing: $DEB in component $COMPONENT for distribution $DISTRIBUTION"