diff --git a/.forgejo/workflows/build+release.yml b/.forgejo/workflows/build+release.yml index 53c3d83..06d482f 100644 --- a/.forgejo/workflows/build+release.yml +++ b/.forgejo/workflows/build+release.yml @@ -10,15 +10,14 @@ jobs: test: runs-on: docker steps: - - - name: Checking Out Repository Code + - name: Checking Out Repository Code uses: https://code.forgejo.org/actions/checkout@v3 - - - name: Get Yarn Cache Directory + + - name: Get Yarn Cache Directory id: yarn-cache-dir-path run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - name: Set Up Yarn Cache + + - name: Set Up Yarn Cache uses: actions/cache@v3 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: @@ -26,52 +25,106 @@ jobs: key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - - - name: Install Dependencies + + - name: Install Dependencies run: yarn install - - - name: Run Linter + + - name: Install Chromium for Unlighthouse + run: | + echo "apt update && apt install -y chromium" + apt update && apt install -y chromium + echo 'export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --no-sandbox" >> /etc/chromium.d/default-flags' + echo 'export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --no-sandbox"' >> /etc/chromium.d/default-flags + + - name: Add Unlighthouse + run: | + echo "yarn global add @unlighthouse/cli" + yarn global add @unlighthouse/cli + + - name: Run Linter run: yarn lint - - - name: Check if Version in package.json matches Tag + + - name: Check if Version in package.json matches Tag run: | VERSION=$(cat package.json | grep "version" | sed 's/.*://' | tr -d , | tr -d \" | tr -d " " ) - if test $VERSION != "${{ github.ref_name }}"; then + if test $VERSION != "${{ github.ref_name }}"; then echo "Expected Version is: '${{ github.ref_name }}' actual Version is: '$VERSION'"; exit 1 else echo "Version is: '$VERSION'"; - fi + fi + + - name: Build Site + run: yarn build + + - name: Start Server + run: | + export KUMA_USERNAME=${{ secrets.KUMA_USERNAME }} + export KUMA_PASSWORD=${{ secrets.KUMA_PASSWORD }} + yarn preview & + + - name: Run Unlighthouse for Desktop + run: unlighthouse-ci --build-static --desktop --outputPath reports/desktop + + - name: Refresh Server + run: | + if ! pgrep -f "node /usr/bin/yarn" ; then + export KUMA_USERNAME=${{ secrets.KUMA_USERNAME }} + export KUMA_PASSWORD=${{ secrets.KUMA_PASSWORD }} + yarn preview & + fi + + - name: Run Unlighthouse for Mobile + run: unlighthouse-ci --build-static --mobile --outputPath reports/mobile + + - name: Uploading Lighthouse Reports + uses: actions/upload-artifact@v3 + with: + name: lighthouse + path: reports + if-no-files-found: error build: needs: test if: success() runs-on: dind steps: - - - name: Set up Docker Buildx + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - - - name: Login to Docker Hub + with: + config-inline: | + [registry."docker.io"] + mirrors = ["https://docker-cache.neshweb.net"] + + - name: Login to Docker Hub uses: docker/login-action@v3 with: registry: forgejo.neshweb.net username: ${{ secrets.FORGEJO_USERNAME }} password: ${{ secrets.FORGEJO_TOKEN }} - - - name: Push to Package Registry + + - name: Determine Docker tags + id: tags + run: | + if echo ${{ github.ref_name }} | grep -qi '\-rc' ; then + echo latest=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:preview >> $GITHUB_OUTPUT; + else + echo latest=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:latest >> $GITHUB_OUTPUT; + fi + echo version=forgejo.neshweb.net/neshweb-sites/${{ github.event.repository.name }}:${{ github.ref_name }} >> $GITHUB_OUTPUT; + + - name: Push to Package Registry uses: docker/build-push-action@v5 with: push: true - tags: forgejo.neshweb.net/neshweb-sites/main-site:${{ github.ref_name }}, forgejo.neshweb.net/neshweb-sites/main-site:latest - + tags: ${{ steps.tags.outputs.version }}, ${{ steps.tags.outputs.latest }} + release: needs: build if: success() runs-on: docker steps: - - - name: Release New Version + - name: Release New Version uses: actions/forgejo-release@v1 with: direction: upload