name: Generate Website on: workflow_dispatch: push: branches: - master env: USER_TOKEN: ${{ secrets.TOKEN }} USER_NAME: ${{ vars.USER }} jobs: build: name: Generate Website runs-on: docker container: image: alpine strategy: matrix: toolchain: - stable steps: - name: Install packages run: apk add --no-cache nodejs git git-lfs bash curl zstd - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Checkout assets uses: actions/checkout@v4 with: token: ${{ secrets.TOKEN }} repository: sapphirus.org/Suo sparse-checkout: | templates/assets dist path: suo - name: Pull from LFS run: | # Double authentication header workaround for actions/checkout@v4 # https://github.com/actions/checkout/issues/1830#issuecomment-2314758792 AUTH=$(git -C suo config --local http.$SERVER/.extraheader) git -C suo config --local --unset http.$SERVER/.extraheader git -C suo config --local http.$SERVER/$REPOSITORY/info/lfs/objects/batch.extraheader "$AUTH" git -C suo lfs pull env: SERVER: ${{ github.server_url }} REPOSITORY: sapphirus.org/Suo - name: Fetch suo binary shell: bash run: | POST_URL="https://git.sapphirus.org/api/packages/private/generic/suo/latest/suo" echo "::group:: Fetching suo" mkdir ./bin/ && curl --silent \ --show-error \ --user $USER_NAME:$USER_TOKEN $POST_URL \ --output ./bin/suo && chmod +x ./bin/suo echo "::endgroup::" - name: Generate website run: ./bin/suo && ./suo/dist/assets.sh ./output ./suo - name: Package website shell: bash run: | echo "::group:: Packaging website" cd output tar acvf website.tar.zst * echo "$(git rev-parse --short HEAD)$(git -C ../suo rev-parse --short HEAD)" > website.ver echo "::endgroup::" - name: Upload package shell: bash run: | POST_URL="https://git.sapphirus.org/api/packages/private/generic/website/latest/" SRC_DIR="./output/" FILES=$(ls "$SRC_DIR"*.tar.zst "$SRC_DIR"*.ver) for file in $FILES; do echo "::group:: Removing $file" curl --silent \ --show-error \ --user $USER_NAME:$USER_TOKEN \ -X DELETE $POST_URL${file##$SRC_DIR} echo "::endgroup::" done for file in $FILES; do echo "::group:: Publishing $file" curl --silent \ --show-error \ --user $USER_NAME:$USER_TOKEN \ --upload-file $file $POST_URL${file##$SRC_DIR} echo "::endgroup::" done