name: CI on: push: branches: [main] tags: ['v*'] pull_request: workflow_dispatch: env: REGISTRY: ghcr.io IMAGE_NAME: ghcr.io/sulfurnitride/fluorine-builder jobs: build: runs-on: ubuntu-latest permissions: contents: write packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Log in to GHCR uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Pull or build Docker image run: | if docker pull ${{ env.IMAGE_NAME }}:latest; then docker tag ${{ env.IMAGE_NAME }}:latest fluorine-builder:latest else echo "Pull failed, building from scratch..." docker build -t fluorine-builder:latest docker/ fi - name: Restore ccache uses: actions/cache@v4 with: path: ~/.cache/fluorine-ccache key: ccache-${{ runner.os }}-${{ github.sha }} restore-keys: | ccache-${{ runner.os }}- - name: Build inside container run: | mkdir -p ~/.cache/fluorine-ccache docker run --rm \ -v "${{ github.workspace }}:/src:rw" \ -v "$HOME/.cache/fluorine-ccache:/ccache:rw" \ -e CCACHE_DIR=/ccache \ -e BUILD_MODE=tarball \ -w /src \ fluorine-builder:latest \ bash /src/docker/build-inner.sh - name: Upload build uses: actions/upload-artifact@v4 with: name: Fluorine-Manager path: build/fluorine-manager/ compression-level: 6 if-no-files-found: warn