From fd0023c401772d23dd3256b741980cb3d878d62c Mon Sep 17 00:00:00 2001 From: rokibhasansagar Date: Tue, 2 Mar 2021 01:13:13 +0600 Subject: [PATCH] Renew Scripts - Add Support For Both Ubuntu Focal and Bionic Runners - Update README - Added branding Signed-off-by: rokibhasansagar --- README.md | 72 ++++++-------------- action.yml | 4 +- cleanup.sh | 189 +++++++++++++++++++---------------------------------- 3 files changed, 89 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index a2b19a7..bd6bde8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # *rokibhasansagar/slimhub_actions@main* -![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/rokibhasansagar/slimhub_actions?label=Latest%20Tag&?cacheSeconds=600) -### *GitHub Actions Cleaner* +![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/rokibhasansagar/slimhub_actions?label=Latest%20Tag&?cacheSeconds=300) + +## *GitHub Actions Cleaner* A simple composite run steps action to clean the GitHub Actions environment to bare minimum. When you don't really need any extra software rather than core functions of Ubuntu itself, you would want to use this. @@ -12,63 +13,30 @@ That gives you only 22GB playground. But with this action, you can gain up to 78GB! That means around 56GB can be freed! >More space can be gained. Work is undergoing to achieve that. -## *Requirement* +## *How To Use* + +Your Workflow must run on Ubuntu Runners, bionic or focal. -Nothing really, just your Actions Runner needs to be run on **ubuntu-20.04**. ```yaml +# ... jobs: - build: - runs-on: ubuntu-20.04 + slim_build: + runs-on: ubuntu-latest + # You can use either of the ubuntu-18.04 or ubuntu-20.04 runner + steps: + # You might want to Checkout your repo first, but not mandatory + - uses: actions/checkout@v2 + # Cleanup The Actions Workspace Using Custom Composite Run Actions + - uses: rokibhasansagar/slimhub_actions@main + # That's it! Now use your normal steps + # ... ``` -Bionic support will be added later. - -## *How To Use* -```yaml -steps: - # ... - # You might want to Checkout your repo first, but not necessary. - # Cleanup The Actions Workspace Using Custom Composite Run Actions - - uses: rokibhasansagar/slimhub_actions@main - # That's it! Now use your normal steps - # ... -``` +### *What Are Removed* -## *Things Removed* +See the [script](cleanup.sh) itself to know what exactly are stripped. -The main programs removed by this action are - -```text -- adoptopenjdk-11 & adoptopenjdk-8 -- android-sdk and ndk -- ant, apache-maven, gradle, hhvm, julia, lein -- swift, miniconda -- azure-cli, aws-cli, vim -- buildah, ghc -- cabal* -- clang-9,clang-8, llvm-8 & lld-8 -- Docker Image Caches -- dotnet, graalvm, powershell -- erlang, php*, ruby, rake, rust & swig -- gcc-7, g++-7, cpp-7 -- gcc-8, g++-8, cpp-8 -- groff-base -- firefox -- google* -- Homebrew -- hostedtoolcache preconfigured packages -- heroku -- imagemagick* -- libreoffice* -- man-db & manpages -- mongodb, mysql & postgresql -- mono* -- mercurial, subversion -- node_modules -- phantomjs, chrome_driver, gecko_driver, xvfb -- python2 & pip local packages -- podman -``` -*Yet, More To Remove In The Future* +Don't cry if any further steps using other Actions or scripts fail due to *command not found*. You have to manually install every prerequisite programs which would seem to be unavailable to run your particular script(s). ## *Inspired By* diff --git a/action.yml b/action.yml index ffb4e91..4bbb3f5 100644 --- a/action.yml +++ b/action.yml @@ -7,4 +7,6 @@ runs: - run: $GITHUB_ACTION_PATH/cleanup.sh name: 'Cleanup' shell: bash - +branding: + icon: 'layers' + color: 'blue' diff --git a/cleanup.sh b/cleanup.sh index bdbd1d1..61432bd 100755 --- a/cleanup.sh +++ b/cleanup.sh @@ -10,9 +10,9 @@ export DEBIAN_FRONTEND=noninteractive # Prepare while ((${SECONDS_LEFT:=5} > 0)); do - printf "Please wait %ss ...\n" "${SECONDS_LEFT}" - sleep 1 - SECONDS_LEFT=$((${SECONDS_LEFT} - 1)) + printf "Please wait %ss ...\n" "${SECONDS_LEFT}" + sleep 1 + SECONDS_LEFT=$((SECONDS_LEFT - 1)) done unset SECONDS_LEFT @@ -25,101 +25,39 @@ docker rmi -f $(docker images -q) &>/dev/null echo "::endgroup::" echo "::group::Uninstalling Unnecessary Applications" -sudo -E apt-get -qq -y update &>/dev/null -sudo -E apt-get -qq -y purge \ - adoptopenjdk-* \ - adwaita-icon-theme \ - aisleriot \ - alsa-* \ - ant* \ - ansible \ - apache2* \ - apport* \ - aspnetcore-* \ - azure-cli \ +sudo -EH apt-get -qq -y update &>/dev/null +REL=$(grep "UBUNTU_CODENAME" /etc/os-release | cut -d'=' -f2) +if [[ ${REL} == "focal" ]]; then + APT_Pac4Purge="alsa-topology-conf alsa-ucm-conf python2 python2-minimal libpython-dev clang-9 clang-format-9" +elif [[ ${REL} == "bionic" ]]; then + APT_Pac4Purge="clang-6.0 clang-format-6.0 llvm-6.0-dev lld-6.0" +fi +unset REL +sudo -EH apt-get -qq -y purge \ + ${APT_Pac4Purge} \ + adoptopenjdk-* openjdk* ant* sbt \ + *-icon-theme plymouth *-theme* fonts-* gsfonts gtk-update-icon-cache \ + ansible google-cloud-sdk heroku \ + apache2* nginx msodbcsql* mssql-tools mysql* libmysqlclient* unixodbc-dev postgresql* libpq-dev odbcinst* mongodb-* sphinxsearch \ + apport* popularity-contest \ + aspnetcore-* dotnet* \ + azure-cli session-manager-plugin \ bazel* \ - brltty \ - buildah \ - byobu \ - cabal-* \ - chromium-browser \ - clang-8 clang-format-8 \ - clang-9 clang-format-9 \ - cpp-7 cpp-8 \ - dotnet* \ - duplicity \ - empathy \ - empathy-common \ - erlang* esl-erlang \ - example-content \ - firebird* firefox \ - fontconfig* fonts-* \ - g++-7* gcc-7* \ - g++-8* gcc-8* \ - gfortran* \ - gh \ - ghc* \ - gnome-accessibility-themes \ - google-chrome* google-cloud-sdk \ - groff-base \ - gsfonts \ - gtk-update-icon-cache \ - heroku \ - hhvm \ - hicolor-icon-theme \ - htop \ - humanity-icon-theme \ - imagemagick* \ - info \ - install-info \ - irqbalance \ - kubectl \ - landscape-common \ - libclang1-8 libclang-common-8-dev \ - libmono-* \ - libpython2* \ - libreoffice-* \ - libsane libsane-common \ - lld-8 llvm-8* \ + brltty byobu htop \ + buildah hhvm kubectl packagekit* podman podman-plugins skopeo \ + chromium-browser firebird* firefox google-chrome* xvfb \ + clang-8 clang-format-8 cpp-7 cpp-8 lld-8 llvm-8* \ + esl-erlang ghc-* groff-base rake r-base* r-cran-* r-recommended ruby* swig* \ + g++-7* gcc-7* g++-8* gcc-8* gfortran* \ + gh subversion mercurial mercurial-common \ + info install-info landscape-common \ + libpython2* imagemagick* vim vim-* \ man-db manpages \ - mercurial mercurial-common \ - mongodb-* \ - mono-* mono* \ - msodbcsql* mssql-tools mysql* libmysqlclient* unixodbc-dev \ - nginx \ - nuget \ - odbcinst* \ - openjdk* \ - packagekit* \ - packages-microsoft-prod \ + mono-* mono* libmono-* \ + nuget packages-microsoft-prod snapd yarn \ php-* php5* php7* php8* snmp \ - plymouth plymouth-theme-ubuntu-text \ - podman podman-plugins \ - poppler-data \ - popularity-contest \ - postgresql* libpq-dev \ - printer-driver-* \ - python2 python2-minimal \ - rake r-base* r-cran-* r-recommended ruby* \ - rhythmbox rhythmbox-plugin* \ - sane-utils \ - sbt \ - session-manager-plugin \ - shotwell* \ - skopeo \ - snapd \ - sphinxsearch \ - sound-theme-freedesktop \ - subversion \ - swig* \ - telepathy-* \ - totem* \ - ubuntu-mono \ - vim vim-* \ - xvfb \ - yarn \ - zulu* &>/dev/null -sudo -E apt-get -qq -y autoremove &>/dev/null + &>/dev/null +sudo -EH apt-get -qq -y autoremove &>/dev/null echo "::endgroup::" echo "::group::Removing Homebrew Completely" @@ -130,16 +68,16 @@ echo "::endgroup::" echo "::group::Removing NodeJS, NPM & NPX" { - sudo npm list -g --depth=0. 2>/dev/null | awk -F ' ' '{print $2}' | awk -F '@[0-9]' '{print $1}' | sudo xargs npm remove -g + sudo npm list -g --depth=0. 2>/dev/null | awk -F ' ' '{print $2}' | awk -F '@[0-9]' '{print $1}' | grep -v "^n$" | sudo xargs npm remove -g yes | sudo n uninstall - sudo rm -rf -- /usr/local/lib/node_modules /usr/local/n \ + sudo rm -rf -- /usr/local/lib/node_modules /usr/local/n /usr/local/bin/n \ /usr/local/bin/vercel /usr/local/bin/now } 2>/dev/null echo "::endgroup::" echo "::group::Purging PIPX & PIP packages" { - pipx uninstall-all && sudo pip uninstall -q -y pipx + pipx uninstall-all && sudo pip3 uninstall -q -y pipx find /usr/share /usr/lib ~/.local/lib -depth -type d -name __pycache__ \ -exec rm -rf '{}' + 2>/dev/null; } 2>/dev/null @@ -148,33 +86,38 @@ echo "::endgroup::" echo "::group::Removing Lots of Cached Programs & Unneeded Folders" { printf "Removing Runner Tool Cache...\n" - sudo rm -rf -- /opt/hostedtoolcache/* + sudo rm -rf -- /opt/hostedtoolcache printf "Removing Android SDK, NDK, Platform Tools, Gradle, Maven...\n" - sudo rm -rf -- /usr/local/lib/android - sudo rm -rf -- /usr/share/gradle* /usr/bin/gradle /usr/share/apache-maven* /usr/bin/mvn + sudo rm -rf -- /usr/local/lib/android \ + /usr/share/gradle* /usr/bin/gradle /usr/share/apache-maven* /usr/bin/mvn printf "Removing Microsoft vcpkg, Miniconda, Leiningen, Pulumi...\n" - sudo rm -rf -- /usr/local/share/vcpkg /usr/local/bin/vcpkg - sudo rm -rf -- /usr/share/miniconda /usr/bin/conda - sudo rm -rf -- /usr/local/lib/lein /usr/local/bin/lein /usr/local/bin/pulumi* + sudo rm -rf -- /usr/local/share/vcpkg /usr/local/bin/vcpkg \ + /usr/share/miniconda /usr/bin/conda \ + /usr/local/lib/lein /usr/local/bin/lein /usr/local/bin/pulumi* printf "Removing Browser-based Webdrivers...\n" sudo rm -rf -- /usr/share/java/selenium-server-standalone.jar \ /usr/local/share/phantomjs* /usr/local/bin/phantomjs \ /usr/local/share/chrome_driver /usr/bin/chromedriver \ /usr/local/share/gecko_driver /usr/bin/geckodriver printf "Removing PHP, Composer, Database Management Program Remains...\n" - sudo rm -rf -- /etc/php /usr/bin/composer /usr/local/bin/phpunit - sudo rm -rf -- /etc/mysql /usr/local/bin/sqlcmd /usr/local/bin/bcp - printf "Removing Julia, Rust, Cargo, Swift, Haskell, Erlang...\n" - sudo rm -rf -- /usr/local/julia* /usr/bin/julia - sudo rm -rf -- /usr/share/rust /home/runner/.cargo /home/runner/.rustup - sudo rm -rf -- /usr/share/swift /usr/local/bin/swift /usr/local/bin/swiftc - sudo rm -rf -- /usr/bin/ghc /usr/bin/cabal /usr/local/bin/stack - sudo rm -rf -- /usr/local/bin/rebar3 + sudo rm -rf -- /etc/php /usr/bin/composer /usr/local/bin/phpunit \ + /var/lib/mysql /etc/mysql /usr/local/bin/sqlcmd /usr/local/bin/bcp \ + /usr/local/bin/session-manager-plugin + printf "Removing Julia, Rust, Cargo, Rubugems, Rake, Swift, Haskell, Erlang...\n" + sudo rm -rf -- /usr/local/julia* /usr/bin/julia \ + /usr/share/rust /home/runner/.cargo /home/runner/.rustup \ + /usr/local/bin/rake /usr/local/bin/rdoc /usr/local/bin/ri /usr/local/bin/racc /usr/local/bin/rougify \ + /usr/local/bin/bundle /usr/local/bin/bundler /var/lib/gems \ + /usr/share/swift /usr/local/bin/swift /usr/local/bin/swiftc \ + /usr/bin/ghc /usr/local/.ghcup /usr/local/bin/stack \ + /usr/local/bin/rebar3 \ + /usr/bin/go /usr/bin/gofmt printf "Removing Various Cloud CLI Tools...\n" - sudo rm -rf -- /usr/local/bin/aws /usr/local/bin/aws_completer /usr/local/aws-cli /usr/local/aws - sudo rm -rf -- /usr/local/bin/aliyun /usr/share/az_* /opt/az /usr/bin/az \ - /usr/local/bin/azcopy10 /usr/bin/azcopy /usr/lib/azcopy - sudo rm -rf -- /usr/local/bin/oc /usr/local/bin/oras + sudo rm -rf -- /usr/local/bin/aws /usr/local/bin/aws_completer /usr/local/aws-cli /usr/local/aws \ + /usr/local/bin/aliyun /usr/share/az_* /opt/az /usr/bin/az \ + /usr/local/bin/azcopy10 /usr/bin/azcopy /usr/lib/azcopy \ + /usr/local/bin/oc /usr/local/bin/oras \ + /usr/local/bin/README.md printf "Removing Different Kubernetes & Container Management Programs...\n" sudo rm -rf -- /usr/local/bin/packer /usr/local/bin/terraform \ /usr/local/bin/helm /usr/local/bin/kubectl /usr/local/bin/kind \ @@ -186,17 +129,17 @@ echo "::group::Removing Lots of Cached Programs & Unneeded Folders" sudo rm -rf -- /usr/local/graalvm printf "Removing Manpages...\n" sudo rm -rf -- /usr/share/man + printf "Clearing Remains of Apt Packages...\n" + sudo rm -rf -- /var/lib/apt/lists/* /var/cache/apt/archives/* /etc/apt/sources.list.d/* } 2>/dev/null echo "::endgroup::" -echo "::group::Clearing Remains of Apt Packages" +echo "::group::Clearing Unwanted Environment Variables" { - sudo -E apt-get -qq -y clean && sudo -E apt-get -qq -y autoremove - sudo rm -rf -- /var/lib/apt/lists/* /var/cache/apt/archives/* /etc/apt/sources.list.d/* - export PATH="/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - sed -i '/.dotnet/d' ~/.bashrc 2>/dev/null - sed -i '/.config\/composer/d' ~/.bashrc 2>/dev/null - . ~/.bashrc 2>/dev/null + sudo sed -i -e '/^PATH=/d;/hostedtoolcache/d;/^AZURE/d;/^SWIFT/d;/^DOTNET/d;/DRIVER/d;/^CHROME/d;/HASKELL/d;/^JAVA/d;/^SELENIUM/d;/^GRAALVM/d;/^ANT/d;/^GRADLE/d;/^LEIN/d;/^CONDA/d;/^VCPKG/d;/^ANDROID/d;/^PIPX/d;/^HOMEBREW/d;' /etc/environment + sudo sed -i '1i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' /etc/environment + sed -i '/HOME\/\.local\/bin/d' /home/runner/.bashrc + source /home/runner/.bashrc } 2>/dev/null echo "::endgroup::"