Skip to content

Commit

Permalink
Renew Scripts
Browse files Browse the repository at this point in the history
- Add Support For Both Ubuntu Focal and Bionic Runners
- Update README
- Added branding

Signed-off-by: rokibhasansagar <[email protected]>
  • Loading branch information
rokibhasansagar committed Mar 1, 2021
1 parent 4da5305 commit fd0023c
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 176 deletions.
72 changes: 20 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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*

Expand Down
4 changes: 3 additions & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ runs:
- run: $GITHUB_ACTION_PATH/cleanup.sh
name: 'Cleanup'
shell: bash

branding:
icon: 'layers'
color: 'blue'
189 changes: 66 additions & 123 deletions cleanup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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"
Expand All @@ -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
Expand All @@ -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 \
Expand All @@ -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::"

Expand Down

0 comments on commit fd0023c

Please sign in to comment.