mirror of https://github.com/built-aur/packages
ci: add long-built
This commit is contained in:
parent
e34e1481da
commit
ee4030aa98
|
@ -0,0 +1,328 @@
|
|||
name: Long Built
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'long-built/**'
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
packages:
|
||||
description: "Packege to rebuild"
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build-container:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/archlinux-pkg/packages:latest
|
||||
steps:
|
||||
- name: work around permission issue
|
||||
run: git config --global --add safe.directory /__w/packages/packages
|
||||
|
||||
- name: Checkout latest commit
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1000
|
||||
|
||||
- name: Install dependencies
|
||||
run: pacman -Syu --needed --noconfirm docker
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Prepare Build
|
||||
run: ./scripts/long-built/prepare.sh
|
||||
env:
|
||||
github_event: ${{ github.event_name }}
|
||||
github_inputs_packages: ${{ github.event.inputs.packages }}
|
||||
|
||||
- name: Build container
|
||||
id: build
|
||||
run: ./scripts/long-built/build-container.sh
|
||||
env:
|
||||
REGISTRY: ghcr.io/${{ github.repository_owner }}
|
||||
GH_REF: ${{ github.ref }}
|
||||
|
||||
- name: Push image
|
||||
run: docker push "${{ steps.build.outputs.version-tag }}"
|
||||
|
||||
outputs:
|
||||
chromium-version: "${{ steps.build.outputs.chromium-version }}"
|
||||
image-tag: "${{ steps.build.outputs.version-tag }}"
|
||||
|
||||
stage-1:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-container
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
package: packages-${{ matrix.arch }}
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-2:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-1
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-1
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-3:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-2
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-2
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-4:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-3
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-3
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-5:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-4
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-4
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-6:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-5
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-5
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
stage-7:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch: [x86-64, x86-64-v3]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
needs: stage-6
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Stage
|
||||
run: npm run setup --prefix ./scripts/long-built
|
||||
|
||||
- name: Run Stage
|
||||
id: stage
|
||||
uses: ./scripts/long-built
|
||||
with:
|
||||
finished: "${{ join(needs.*.outputs.finished) }}"
|
||||
package: packages-${{ matrix.arch }}
|
||||
progress-name: stage-6
|
||||
use-registry: true
|
||||
registry-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
image-tag: "${{ join(needs.*.outputs.image-tag) }}"
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
outputs:
|
||||
finished: "${{ steps.stage.outputs.finished }}"
|
||||
package: "${{ steps.stage.outputs.package }}"
|
||||
image-tag: "${{ steps.stage.outputs.image-tag }}"
|
||||
|
||||
upload:
|
||||
if: github.event_name != 'pull_request' && always()
|
||||
needs: stage-7
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1000
|
||||
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
path: ./
|
||||
|
||||
- name: Import GPG key
|
||||
if: always() && github.event_name != 'pull_request'
|
||||
uses: crazy-max/ghaction-import-gpg@v4
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_SECRET }}
|
||||
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||
|
||||
- name: Sign packages
|
||||
if: always() && github.event_name != 'pull_request'
|
||||
env:
|
||||
gpg_key: ${{ secrets.GPG_KEY }}
|
||||
run: |
|
||||
for file in ./packages-*/*.pkg.tar*
|
||||
do
|
||||
gpg --detach-sign --use-agent --default-key "${gpg_key}" --batch --yes "${file}"
|
||||
done
|
||||
|
||||
- name: Upload packages
|
||||
if: always() && github.event_name != 'pull_request'
|
||||
env:
|
||||
SFTP_HOST: ${{ secrets.SFTP_HOST }}
|
||||
SFTP_USER: ${{ secrets.SFTP_USER }}
|
||||
SFTP_PASSWORD: ${{ secrets.SFTP_PASSWORD }}
|
||||
SFTP_CWD: ${{ secrets.SFTP_CWD }}
|
||||
run: ./scripts/upload.sh
|
|
@ -14,3 +14,7 @@
|
|||
|
||||
# GitHub wiki
|
||||
/wiki
|
||||
|
||||
# Node.js
|
||||
node_modules
|
||||
/scripts/long-built/dist
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
AUR_NAME="ungoogled-chromium"
|
||||
AUR_UPDATED="1652288965"
|
|
@ -167,7 +167,7 @@ update-package() {
|
|||
fi
|
||||
}
|
||||
|
||||
for pkgdir in ./packages/*
|
||||
for pkgdir in ./packages/* ./long-built/*
|
||||
do
|
||||
update-package "${pkgdir}"
|
||||
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Env
|
||||
# DOCKER_IMAGE_TAG - Docker image tag
|
||||
#
|
||||
# SFTP_HOST - sftp server host
|
||||
# SFTP_USER - sftp username
|
||||
# SFTP_PASSWORD - sftp password
|
||||
# SFTP_CWD - sftp home directory
|
||||
#
|
||||
# PROGRESS_NAME - progress archive name, empty in not exists
|
||||
|
||||
# Outputs
|
||||
# finished - build ended?
|
||||
|
||||
free_space() {
|
||||
echo "::group::Stage: Free space on GitHub Runner..."
|
||||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf /usr/local/lib/android
|
||||
sudo rm -rf /opt/ghc
|
||||
echo "::endgroup::"
|
||||
}
|
||||
|
||||
pull_image() {
|
||||
echo "::group::Stage: Pulling image from registry..."
|
||||
docker pull "${DOCKER_IMAGE_TAG}"
|
||||
echo "::endgroup::"
|
||||
}
|
||||
|
||||
download_progress() {
|
||||
echo "::group::Stage: Downloading progress artifact..."
|
||||
SSHPASS="${SFTP_PASSWORD}" sshpass -e rsync -e ssh -avL "${SFTP_USER}@${SFTP_HOST}:${SFTP_CWD}/stage/${PROGRESS_NAME}" progress.tar.zst
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Stage: Moving progress archive into input directory..."
|
||||
mv progress.tar.zst input
|
||||
echo "::endgroup::"
|
||||
}
|
||||
|
||||
upload_progress() {
|
||||
echo "::group::Stage: Downloading progress artifact..."
|
||||
SSHPASS="${SFTP_PASSWORD}" sshpass -e rsync -e ssh -avL "${SFTP_USER}@${SFTP_HOST}:${SFTP_CWD}/stage/" progress.tar.zst
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Stage: Moving progress archive into input directory..."
|
||||
mv progress.tar.zst input
|
||||
echo "::endgroup::"
|
||||
}
|
||||
|
||||
run_docker() {
|
||||
echo "::group::Stage: Running docker container..."
|
||||
|
||||
docker run \
|
||||
-e TIMEOUT=330 \
|
||||
--mount type=bind,source="input",target="/mnt/input" \
|
||||
--mount type=bind,source="output",target="/mnt/output" \
|
||||
--mount type=bind,source="progress",target="/mnt/progress" \
|
||||
"${DOCKER_IMAGE}"
|
||||
|
||||
echo "::endgroup::"
|
||||
}
|
||||
|
||||
free_space
|
||||
|
||||
pull_image
|
||||
|
||||
# create input, output and progress directory
|
||||
mkdir input output progress
|
||||
|
||||
# Download progress artifact
|
||||
if [ -z "${PROGRESS_NAME}" ]
|
||||
then
|
||||
download_progress
|
||||
fi
|
||||
|
||||
# Run stage build
|
||||
run_docker
|
||||
|
||||
if [ -z "$(ls -A output)" ]
|
||||
then
|
||||
# Directory is empty
|
||||
echo "::set-output name=finished::false"
|
||||
else
|
||||
echo "Successfully built package"
|
||||
|
||||
echo "::set-output name=finished::true"
|
||||
fi
|
||||
|
||||
# echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
|
|
@ -0,0 +1,25 @@
|
|||
FROM ghcr.io/archlinux-pkg/packages:latest
|
||||
|
||||
ARG PACKAGE
|
||||
ENV PACKAGE=$PACKAGE
|
||||
|
||||
COPY scripts/long-built/build.sh /home/build/build.sh
|
||||
|
||||
# Expect archive with files required for building created by makepkg --allsource
|
||||
COPY *.src.tar.gz /home/build/
|
||||
|
||||
RUN chown -R build /home/build
|
||||
RUN tar xf /home/build/*.src.tar.gz -C /home/build --strip 1 && rm /home/build/*.src.tar.gz
|
||||
|
||||
RUN pacman -Syu --noconfirm && \
|
||||
su -c "cd && makepkg --nobuild --noextract --syncdeps --noconfirm" build && \
|
||||
su -c "cd && makepkg --nobuild --noextract --syncdeps --noconfirm" build && \
|
||||
su -c "cd && makepkg --nobuild --noextract --syncdeps --noconfirm" build
|
||||
|
||||
RUN ls -lah /home/build
|
||||
|
||||
RUN echo $(date +"%s") > /etc/buildtime
|
||||
|
||||
USER build
|
||||
|
||||
ENTRYPOINT [ "/bin/bash", "/home/build/build.sh" ]
|
|
@ -0,0 +1,39 @@
|
|||
name: Stage
|
||||
description: Build stage progressing or finishing the compilation in a container
|
||||
|
||||
inputs:
|
||||
finished:
|
||||
description: If a previous stage already finished the build, the stage will set all output variables to the input ones and exit
|
||||
required: false
|
||||
progress-name:
|
||||
description: The name of the progress artifact to be used
|
||||
required: false
|
||||
package:
|
||||
description: Package name
|
||||
required: true
|
||||
use-registry:
|
||||
description: If the image should be retrieved from ghcr.io or from an artifact called 'image'
|
||||
required: false
|
||||
registry-token:
|
||||
description: The access token for ghcr.io (required if 'use-registry' is set)
|
||||
required: false
|
||||
image-tag:
|
||||
description: The tag of the container image to use (required if 'use-registry' is set)
|
||||
required: false
|
||||
arch:
|
||||
description: Built arch
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
finished:
|
||||
description: If a previous stage already finished the build, the stage will set all output variables to the input ones and exit
|
||||
package:
|
||||
description: Package name
|
||||
use-registry:
|
||||
description: If the image should be retrieved from ghcr.io or from an artifact called 'image'
|
||||
image-tag:
|
||||
description: The tag of the container image to use (required if 'use-registry' is set)
|
||||
|
||||
runs:
|
||||
using: node16
|
||||
main: dist/index.js
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "::group::Generating source archive..."
|
||||
|
||||
ROOT_DIR=$(pwd)
|
||||
SCRIPT_DIR="$(realpath "$(dirname "$0")"/..)"
|
||||
|
||||
source "${SCRIPT_DIR}/lib/parse-conf.sh"
|
||||
|
||||
sudo chown build -R .
|
||||
|
||||
PACKAGE="$(cat ${ROOT_DIR}/built_packages.txt)"
|
||||
|
||||
pkgdir="${ROOT_DIR}/long-built/$PACKAGE"
|
||||
|
||||
clone_aur() {
|
||||
eval "$(parse-conf ${pkgdir})"
|
||||
|
||||
rm -rf "${pkgdir}"
|
||||
|
||||
git clone "https://aur.archlinux.org/${AUR_NAME}.git" "${pkgdir}"
|
||||
|
||||
EXIT_CODE="${?}"
|
||||
|
||||
if (( ${EXIT_CODE} ))
|
||||
then
|
||||
echo "exit code: ${code}"
|
||||
exit ${code}
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! -f "${pkgdir}/PKGBUILD" ]
|
||||
then
|
||||
clone_aur
|
||||
fi
|
||||
|
||||
cd "${pkgdir}"
|
||||
|
||||
sudo chown build -R .
|
||||
|
||||
# Generate archive with all required sources for the build
|
||||
# This either includes local or downloads files using an url
|
||||
su -c "makepkg --allsource --skippgpcheck" build
|
||||
mv ./*.src.tar.gz "${ROOT_DIR}"
|
||||
|
||||
cd "${ROOT_DIR}"
|
||||
|
||||
echo "::endgroup::"
|
||||
|
||||
VERSION="$(compgen -G "*.src.tar.gz" | grep -Po '([\d\.]+-\d*)')"
|
||||
NAME="packages"
|
||||
ID="$(echo "$REGISTRY"/$NAME | tr '[A-Z]' '[a-z]')"
|
||||
REF="$(echo "$GH_REF" | sed -e 's,.*/\(.*\),\1,')"
|
||||
[[ "${GH_REF}" == "refs/tags/"* ]] && REF=$(echo ${REF} | sed -e 's/^v//')
|
||||
[ "${REF}" == "master" ] && REF=latest
|
||||
VERSION_TAG="${ID}:${PACKAGE}-${VERSION}-$(date +%s)"
|
||||
|
||||
echo "VERSION=${VERSION}"
|
||||
echo "REGISTRY=${REGISTRY}"
|
||||
echo "NAME=${NAME}"
|
||||
echo "ID=${ID}"
|
||||
echo "REF=${REF}"
|
||||
echo "VERSION_TAG=${VERSION_TAG}"
|
||||
|
||||
echo "::group::Building container image..."
|
||||
|
||||
# Build container from source files
|
||||
docker build . \
|
||||
--file scripts/long-built/Dockerfile \
|
||||
--build-arg PACKAGE="${PACKAGE}" \
|
||||
--tag "${VERSION_TAG}" \
|
||||
|
||||
# Reduce worker space used
|
||||
rm -rf ./*
|
||||
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::set-output name=version-tag::${VERSION_TAG}"
|
|
@ -0,0 +1,104 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd /home/build
|
||||
|
||||
# variables
|
||||
ROOT_DIR=$(pwd)
|
||||
export HOME="/home/build"
|
||||
|
||||
# makepkg arguments
|
||||
BUILD_ARGUMENTS="--skippgpcheck --config /etc/makepkg.${BUILD_ARCH}.conf"
|
||||
|
||||
# librewolf
|
||||
sed -i 's|# mk_add_options MOZ_MAKE_FLAGS="-j4"|mk_add_options MOZ_MAKE_FLAGS="-j1"|g' PKGBUILD
|
||||
|
||||
# unpack compilation files from previous stage
|
||||
unpack_stage() {
|
||||
echo "==> Extracting source archive..."
|
||||
sudo tar -xf /mnt/input/progress.tar.zst -C "$ROOT_DIR"
|
||||
|
||||
echo "==> Deleting source archive..."
|
||||
sudo rm /mnt/input/*
|
||||
|
||||
echo "==> Deleting unused archive files..."
|
||||
sudo rm *.tar.*
|
||||
|
||||
echo "==> Adjusting ownership of build directory..."
|
||||
sudo chown -R build .
|
||||
|
||||
echo "==> Build directory content"
|
||||
ls -lah .
|
||||
|
||||
echo "==> Build subdirectory sizes"
|
||||
du -h -d 1
|
||||
|
||||
echo "==> Added --noextract --nodeps to build arguments"
|
||||
BUILD_ARGUMENTS="${BUILD_ARGUMENTS} --noextract --nodeps"
|
||||
}
|
||||
|
||||
# build stage with timeout
|
||||
build_stage() {
|
||||
echo "==> Building package..."
|
||||
echo "==> Using timestamp $(cat /etc/buildtime)"
|
||||
|
||||
SOURCE_DATE_EPOCH=$(cat /etc/buildtime) timeout -k 10m -s SIGTERM "${TIMEOUT}m" makepkg ${BUILD_ARGUMENTS}
|
||||
|
||||
EXIT_CODE="${?}"
|
||||
|
||||
if ! (( ${EXIT_CODE} ))
|
||||
then
|
||||
echo "==> Build successful"
|
||||
elif [[ "${EXIT_CODE}" == "124" ]] # https://www.gnu.org/software/coreutils/manual/html_node/timeout-invocation.html#timeout-invocation
|
||||
then
|
||||
echo "==> Build timed out"
|
||||
else
|
||||
echo "==> Build failed with ${EXIT_CODE}"
|
||||
|
||||
exit ${EXIT_CODE}
|
||||
fi
|
||||
|
||||
echo "==> Build directory content"
|
||||
ls -lah /home/build
|
||||
|
||||
echo "==> Build subdirectory sizes"
|
||||
sudo du -hd 1
|
||||
}
|
||||
|
||||
# unpack files from previous stage
|
||||
if [[ -d "/mnt/input" && -f "/mnt/input/progress.tar.zst" ]]
|
||||
then
|
||||
unpack_stage
|
||||
fi
|
||||
|
||||
# fix permissions
|
||||
sudo chown -R build .
|
||||
|
||||
build_stage
|
||||
|
||||
# if package built, move to /mnt/output
|
||||
if compgen -G "*.pkg.tar.xz" > /dev/null
|
||||
then
|
||||
echo "==> Successfully built package"
|
||||
|
||||
mkdir output -p
|
||||
|
||||
if [[ -d "/mnt/output" ]]; then
|
||||
echo "==> Moving package to output directory..."
|
||||
sudo mv *.pkg.tar.xz /mnt/output
|
||||
else
|
||||
echo "==> Output directory does not exist"
|
||||
fi
|
||||
fi
|
||||
|
||||
# pack the stage files
|
||||
if [[ -d "/mnt/progress" ]]; then
|
||||
echo "==> Found progress directory, compressing current build progress"
|
||||
|
||||
echo "==> Creating archive of progress..."
|
||||
tar caf progress.tar.zst src/ --remove-file -H posix --atime-preserve
|
||||
|
||||
echo "==> Moving archive to progress directory..."
|
||||
sudo mv progress.tar.zst /mnt/progress
|
||||
else
|
||||
echo "==> Progress directory does not exist, exiting"
|
||||
fi
|
|
@ -0,0 +1,100 @@
|
|||
import * as artifactHost from '@actions/artifact';
|
||||
import { ArtifactClient, DownloadResponse, UploadResponse } from '@actions/artifact';
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
import { ExecOptions } from '@actions/exec';
|
||||
import * as github from '@actions/github';
|
||||
import { readdirSync } from 'fs';
|
||||
|
||||
const shell = async (commandLine: string, args?: Array<string>, options?: ExecOptions): Promise<void> => {
|
||||
const code: number = await exec.exec(commandLine, args, options);
|
||||
|
||||
if (code !== 0)
|
||||
throw new Error(`Stage: A ${commandLine} command errored with code ${code}`);
|
||||
};
|
||||
|
||||
(async () => {
|
||||
const output = () => {
|
||||
console.log('Stage: Setting output', {
|
||||
'finished': input.finished,
|
||||
'package': input.package,
|
||||
'use-registry': input.useRegistry,
|
||||
'image-tag': input.imageTag
|
||||
});
|
||||
|
||||
core.setOutput('finished', input.finished);
|
||||
core.setOutput('package', input.package);
|
||||
core.setOutput('use-registry', input.useRegistry);
|
||||
core.setOutput('image-tag', input.imageTag);
|
||||
};
|
||||
|
||||
const artifact: ArtifactClient = artifactHost.create();
|
||||
const input = {
|
||||
finished: core.getInput('finished') === 'true',
|
||||
progressName: core.getInput('progress-name'),
|
||||
package: core.getInput('package', { required: true }),
|
||||
useRegistry: core.getInput('use-registry') === 'true',
|
||||
registryToken: core.getInput('registry-token'),
|
||||
imageTag: core.getInput('image-tag'),
|
||||
arch: core.getInput('arch'),
|
||||
};
|
||||
|
||||
console.log('Stage: Got input', input);
|
||||
|
||||
if (input.finished)
|
||||
return output();
|
||||
|
||||
// Taken from https://github.com/easimon/maximize-build-space/blob/master/action.yml
|
||||
await core.group<void>('Stage: Free space on GitHub Runner...', async () => {
|
||||
await shell('sudo rm -rf /usr/share/dotnet');
|
||||
await shell('sudo rm -rf /usr/local/lib/android');
|
||||
await shell('sudo rm -rf /opt/ghc');
|
||||
});
|
||||
|
||||
if (input.useRegistry) {
|
||||
await core.group<void>('Stage: Logging into docker registry...', () =>
|
||||
shell('docker', ['login', 'ghcr.io', '-u', github.context.actor, '-p', input.registryToken]));
|
||||
|
||||
await core.group<void>('Stage: Pulling image from registry...', () =>
|
||||
shell('docker', ['pull', input.imageTag]));
|
||||
} else {
|
||||
await core.group<DownloadResponse>('Stage: Downloading image artifact...', () =>
|
||||
artifact.downloadArtifact('image'));
|
||||
|
||||
await core.group<void>('Stage: Loading image from file...', () =>
|
||||
shell('docker load --input image'));
|
||||
|
||||
await core.group<void>('Stage: Removing image file...', () =>
|
||||
shell('rm image'));
|
||||
}
|
||||
|
||||
await core.group<void>('Stage: Creating input, output and progress directory...', () =>
|
||||
shell('mkdir input output progress'));
|
||||
|
||||
if (input.progressName !== '') {
|
||||
await core.group<DownloadResponse>('Stage: Downloading progress artifact...', () =>
|
||||
artifact.downloadArtifact(input.progressName));
|
||||
|
||||
await core.group<void>('Stage: Moving progress archive into input directory...', () =>
|
||||
shell('mv progress.tar.zst input'));
|
||||
}
|
||||
|
||||
const mount = (directory: string): Array<string> => ['--mount', `type=bind,source=${process.cwd()}/${directory},target=/mnt/${directory}`];
|
||||
|
||||
await core.group<void>('Stage: Running docker container...', () =>
|
||||
shell('docker', ['run', '-e', 'TIMEOUT=330', '-e', `BUILD_ARCH=${input.arch}`, ...mount('input'), ...mount('output'), ...mount('progress'), input.imageTag]));
|
||||
|
||||
if (readdirSync('output').length !== 0) {
|
||||
console.log('Stage: Successfully built package');
|
||||
input.finished = true;
|
||||
}
|
||||
|
||||
await core.group<UploadResponse>('Stage: Uploading progress...', () =>
|
||||
artifact.uploadArtifact(github.context.job, readdirSync('progress').map(node => `progress/${node}`), 'progress'));
|
||||
|
||||
if (input.finished)
|
||||
await core.group<UploadResponse>('Stage: Uploading package...', () =>
|
||||
artifact.uploadArtifact(input.package, readdirSync('output').map(node => `output/${node}`), 'output'));
|
||||
|
||||
output();
|
||||
})().catch(core.setFailed);
|
|
@ -0,0 +1,698 @@
|
|||
{
|
||||
"name": "@built-aur/long-built",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@built-aur/long-built",
|
||||
"version": "1.0.0",
|
||||
"license": "LGPL-2.0",
|
||||
"dependencies": {
|
||||
"@actions/artifact": "^1.1.0",
|
||||
"@actions/core": "^1.8.2",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/github": "^5.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^17.0.35",
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/artifact": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-1.1.0.tgz",
|
||||
"integrity": "sha512-shO+w/BAnzRnFhfsgUao8sxjByAMqDdfvek2LLKeCueBKXoTrAcp7U/hs9Fdx+z9g7Q0mbIrmHAzAAww4HK1bQ==",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"tmp": "^0.2.1",
|
||||
"tmp-promise": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.8.2.tgz",
|
||||
"integrity": "sha512-FXcBL7nyik8K5ODeCKlxi+vts7torOkoDAKfeh61EAkAy1HAvwn9uVzZBY0f15YcQTcZZ2/iSGBFHEuioZWfDA==",
|
||||
"dependencies": {
|
||||
"@actions/http-client": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/exec": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
|
||||
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
|
||||
"dependencies": {
|
||||
"@actions/io": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/github": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.3.tgz",
|
||||
"integrity": "sha512-myjA/pdLQfhUGLtRZC/J4L1RXOG4o6aYdiEq+zr5wVVKljzbFld+xv10k1FX6IkIJtNxbAq44BdwSNpQ015P0A==",
|
||||
"dependencies": {
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"@octokit/core": "^3.6.0",
|
||||
"@octokit/plugin-paginate-rest": "^2.17.0",
|
||||
"@octokit/plugin-rest-endpoint-methods": "^5.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/http-client": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||
"dependencies": {
|
||||
"tunnel": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/io": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||
},
|
||||
"node_modules/@octokit/auth-token": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
|
||||
"integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/core": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
|
||||
"integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
|
||||
"dependencies": {
|
||||
"@octokit/auth-token": "^2.4.4",
|
||||
"@octokit/graphql": "^4.5.8",
|
||||
"@octokit/request": "^5.6.3",
|
||||
"@octokit/request-error": "^2.0.5",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"before-after-hook": "^2.2.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/endpoint": {
|
||||
"version": "6.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
|
||||
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/graphql": {
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
|
||||
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
|
||||
"dependencies": {
|
||||
"@octokit/request": "^5.6.0",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/openapi-types": {
|
||||
"version": "11.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
|
||||
"integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
|
||||
},
|
||||
"node_modules/@octokit/plugin-paginate-rest": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz",
|
||||
"integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.34.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@octokit/core": ">=2"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/plugin-rest-endpoint-methods": {
|
||||
"version": "5.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz",
|
||||
"integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.34.0",
|
||||
"deprecation": "^2.3.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@octokit/core": ">=3"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/request": {
|
||||
"version": "5.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
|
||||
"integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
|
||||
"dependencies": {
|
||||
"@octokit/endpoint": "^6.0.1",
|
||||
"@octokit/request-error": "^2.1.0",
|
||||
"@octokit/types": "^6.16.1",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"node-fetch": "^2.6.7",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/request-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
|
||||
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
|
||||
"dependencies": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"deprecation": "^2.0.0",
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@octokit/types": {
|
||||
"version": "6.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
|
||||
"integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
|
||||
"dependencies": {
|
||||
"@octokit/openapi-types": "^11.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "17.0.35",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
|
||||
"integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"node_modules/before-after-hook": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
|
||||
"integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"node_modules/deprecation": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
|
||||
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
|
||||
},
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"node_modules/glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/is-plain-object": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"node_modules/path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"rimraf": "bin.js"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/tmp": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
|
||||
"dependencies": {
|
||||
"rimraf": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.17.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tmp-promise": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
|
||||
"integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
|
||||
"dependencies": {
|
||||
"tmp": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
||||
},
|
||||
"node_modules/tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
||||
"engines": {
|
||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
||||
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
|
||||
},
|
||||
"node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/artifact": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-1.1.0.tgz",
|
||||
"integrity": "sha512-shO+w/BAnzRnFhfsgUao8sxjByAMqDdfvek2LLKeCueBKXoTrAcp7U/hs9Fdx+z9g7Q0mbIrmHAzAAww4HK1bQ==",
|
||||
"requires": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"tmp": "^0.2.1",
|
||||
"tmp-promise": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"@actions/core": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.8.2.tgz",
|
||||
"integrity": "sha512-FXcBL7nyik8K5ODeCKlxi+vts7torOkoDAKfeh61EAkAy1HAvwn9uVzZBY0f15YcQTcZZ2/iSGBFHEuioZWfDA==",
|
||||
"requires": {
|
||||
"@actions/http-client": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"@actions/exec": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
|
||||
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
|
||||
"requires": {
|
||||
"@actions/io": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"@actions/github": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.3.tgz",
|
||||
"integrity": "sha512-myjA/pdLQfhUGLtRZC/J4L1RXOG4o6aYdiEq+zr5wVVKljzbFld+xv10k1FX6IkIJtNxbAq44BdwSNpQ015P0A==",
|
||||
"requires": {
|
||||
"@actions/http-client": "^2.0.1",
|
||||
"@octokit/core": "^3.6.0",
|
||||
"@octokit/plugin-paginate-rest": "^2.17.0",
|
||||
"@octokit/plugin-rest-endpoint-methods": "^5.13.0"
|
||||
}
|
||||
},
|
||||
"@actions/http-client": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||
"requires": {
|
||||
"tunnel": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"@actions/io": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||
},
|
||||
"@octokit/auth-token": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
|
||||
"integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
|
||||
"requires": {
|
||||
"@octokit/types": "^6.0.3"
|
||||
}
|
||||
},
|
||||
"@octokit/core": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
|
||||
"integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
|
||||
"requires": {
|
||||
"@octokit/auth-token": "^2.4.4",
|
||||
"@octokit/graphql": "^4.5.8",
|
||||
"@octokit/request": "^5.6.3",
|
||||
"@octokit/request-error": "^2.0.5",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"before-after-hook": "^2.2.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"@octokit/endpoint": {
|
||||
"version": "6.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
|
||||
"integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
|
||||
"requires": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"@octokit/graphql": {
|
||||
"version": "4.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
|
||||
"integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
|
||||
"requires": {
|
||||
"@octokit/request": "^5.6.0",
|
||||
"@octokit/types": "^6.0.3",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"@octokit/openapi-types": {
|
||||
"version": "11.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
|
||||
"integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
|
||||
},
|
||||
"@octokit/plugin-paginate-rest": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz",
|
||||
"integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==",
|
||||
"requires": {
|
||||
"@octokit/types": "^6.34.0"
|
||||
}
|
||||
},
|
||||
"@octokit/plugin-rest-endpoint-methods": {
|
||||
"version": "5.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz",
|
||||
"integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==",
|
||||
"requires": {
|
||||
"@octokit/types": "^6.34.0",
|
||||
"deprecation": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"@octokit/request": {
|
||||
"version": "5.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
|
||||
"integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
|
||||
"requires": {
|
||||
"@octokit/endpoint": "^6.0.1",
|
||||
"@octokit/request-error": "^2.1.0",
|
||||
"@octokit/types": "^6.16.1",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"node-fetch": "^2.6.7",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"@octokit/request-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
|
||||
"integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
|
||||
"requires": {
|
||||
"@octokit/types": "^6.0.3",
|
||||
"deprecation": "^2.0.0",
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"@octokit/types": {
|
||||
"version": "6.34.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
|
||||
"integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
|
||||
"requires": {
|
||||
"@octokit/openapi-types": "^11.2.0"
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "17.0.35",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
|
||||
"integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"before-after-hook": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
|
||||
"integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"deprecation": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
|
||||
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.2.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.1.1",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-plain-object": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
|
||||
"requires": {
|
||||
"rimraf": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"tmp-promise": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
|
||||
"integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
|
||||
"requires": {
|
||||
"tmp": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
||||
},
|
||||
"tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
|
||||
"integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
|
||||
"dev": true
|
||||
},
|
||||
"universal-user-agent": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
|
||||
},
|
||||
"whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
|
||||
"requires": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"name": "@built-aur/long-built",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
"setup": "npm install && tsc -p tsconfig.json"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "LGPL-2.0",
|
||||
"dependencies": {
|
||||
"@actions/artifact": "^1.1.0",
|
||||
"@actions/core": "^1.8.2",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/github": "^5.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^17.0.35",
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
if [ "${github_event}" != "workflow_dispatch" ]
|
||||
then
|
||||
BASE_COMMIT=$(jq --raw-output .pull_request.base.sha "${GITHUB_EVENT_PATH}")
|
||||
OLD_COMMIT=$(jq --raw-output .commits[0].id "${GITHUB_EVENT_PATH}")
|
||||
HEAD_COMMIT=$(jq --raw-output .commits[-1].id "${GITHUB_EVENT_PATH}")
|
||||
if [ "${BASE_COMMIT}" = "null" ]
|
||||
then
|
||||
if [ "${OLD_COMMIT}" = "${HEAD_COMMIT}" ]
|
||||
then
|
||||
# Single-commit push.
|
||||
echo "Processing commit: ${HEAD_COMMIT}"
|
||||
CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r "${HEAD_COMMIT}")
|
||||
else
|
||||
# Multi-commit push.
|
||||
OLD_COMMIT="${OLD_COMMIT}~1"
|
||||
echo "Processing commit range: ${OLD_COMMIT}..${HEAD_COMMIT}"
|
||||
CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r "${OLD_COMMIT}" "${HEAD_COMMIT}")
|
||||
fi
|
||||
else
|
||||
# Pull requests.
|
||||
echo "Processing pull request #$(jq --raw-output .pull_request.number "${GITHUB_EVENT_PATH}"): ${BASE_COMMIT}..HEAD"
|
||||
CHANGED_FILES=$(git diff-tree --no-commit-id --name-only -r "${BASE_COMMIT}" "HEAD")
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${github_event}" != "workflow_dispatch" ]
|
||||
then
|
||||
# Process tag '%ci:no-build' that may be added as line to commit message.
|
||||
# Forces CI to cancel current build with status 'passed'.
|
||||
if grep -qiP '^\s*%ci:no-build\s*$' <(git log --format="%B" -n 1 "HEAD")
|
||||
then
|
||||
echo "[!] Force exiting as tag '%ci:no-build' was applied to HEAD commit message."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Parse changed files and identify new packages and deleted packages.
|
||||
# Create lists of those packages that will be passed to upload job for
|
||||
# further processing.
|
||||
while read -r file
|
||||
do
|
||||
if [ -d ${file} ]
|
||||
then
|
||||
file="${file}/PKGBUILD"
|
||||
fi
|
||||
|
||||
# This file does not belong to a package, so ignore it
|
||||
if ! [[ ${file} == long-built/* ]]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ ${file} =~ ^long-built/([.a-z0-9+-]*)/.*$ ]]
|
||||
then
|
||||
# * package, check if it was deleted or updated
|
||||
pkg=${BASH_REMATCH[1]}
|
||||
if [ ! -d "long-built/${pkg}" ]; then
|
||||
echo "${pkg}" >> ./deleted_packages.txt
|
||||
else
|
||||
printf "${pkg}" > ./built_packages.txt
|
||||
echo "Package to built: ${pkg}"
|
||||
fi
|
||||
fi
|
||||
done<<<${CHANGED_FILES}
|
||||
else
|
||||
printf "${github_inputs_packages}" > ./built_packages.txt
|
||||
fi
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Projects */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
||||
// "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
|
||||
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
|
||||
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
|
||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
||||
|
||||
/* Language and Environment */
|
||||
"target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
|
||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
|
||||
// "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
|
||||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
|
||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
||||
|
||||
/* Modules */
|
||||
"module": "commonjs", /* Specify what module code is generated. */
|
||||
// "rootDir": "./", /* Specify the root folder within your source files. */
|
||||
// "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
|
||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
// "resolveJsonModule": true, /* Enable importing .json files */
|
||||
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
||||
|
||||
/* JavaScript Support */
|
||||
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
||||
|
||||
/* Emit */
|
||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
||||
"outDir": "./dist", /* Specify an output folder for all emitted files. */
|
||||
// "removeComments": true, /* Disable emitting comments. */
|
||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
|
||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
|
||||
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
||||
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
|
||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
||||
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
|
||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
|
||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
||||
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
|
||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
||||
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
|
||||
|
||||
/* Interop Constraints */
|
||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
||||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
|
||||
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
||||
|
||||
/* Type Checking */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
|
||||
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
||||
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
|
||||
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
|
||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
||||
// "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
|
||||
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
|
||||
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
|
||||
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
|
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
|
||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
|
||||
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
|
||||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
|
||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
||||
|
||||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue