Remove Docker
This commit is contained in:
parent
6421bb7c65
commit
18164ef78a
10 changed files with 3 additions and 236 deletions
|
@ -12,7 +12,6 @@ __pycache__/
|
||||||
|
|
||||||
venv/
|
venv/
|
||||||
.venv/
|
.venv/
|
||||||
.docker-venv/
|
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
build/
|
build/
|
||||||
|
|
85
.github/workflows/docker.yml
vendored
85
.github/workflows/docker.yml
vendored
|
@ -1,85 +0,0 @@
|
||||||
name: Build Docker image
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- '**'
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
# pull_request:
|
|
||||||
|
|
||||||
env:
|
|
||||||
DOCKER_IMAGE: archivebox-ci
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
buildx:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
id: buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
install: true
|
|
||||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
|
||||||
|
|
||||||
- name: Builder instance name
|
|
||||||
run: echo ${{ steps.buildx.outputs.name }}
|
|
||||||
|
|
||||||
- name: Available platforms
|
|
||||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
|
||||||
|
|
||||||
- name: Cache Docker layers
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: /tmp/.buildx-cache
|
|
||||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-buildx-
|
|
||||||
|
|
||||||
- name: Docker Login
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Collect Docker tags
|
|
||||||
id: docker_meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
images: archivebox/archivebox,nikisweeting/archivebox
|
|
||||||
flavor: |
|
|
||||||
latest=auto
|
|
||||||
tags: |
|
|
||||||
type=ref,event=branch
|
|
||||||
type=semver,pattern={{version}}
|
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
|
||||||
type=sha
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
id: docker_build
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: ./
|
|
||||||
file: ./Dockerfile
|
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
|
||||||
tags: ${{ steps.docker_meta.outputs.tags }}
|
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
|
||||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
|
||||||
|
|
||||||
- name: Image digest
|
|
||||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -9,7 +9,6 @@ tests/out/
|
||||||
# Python and Node dependencies
|
# Python and Node dependencies
|
||||||
venv/
|
venv/
|
||||||
.venv/
|
.venv/
|
||||||
.docker-venv/
|
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
# Packaging artifacts
|
# Packaging artifacts
|
||||||
|
@ -32,4 +31,3 @@ output/
|
||||||
|
|
||||||
# kotovalexarian
|
# kotovalexarian
|
||||||
/deb_dist/
|
/deb_dist/
|
||||||
/docker/
|
|
||||||
|
|
|
@ -1014,7 +1014,7 @@ Extractors take the URL of a page to archive, write their output to the filesyst
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### Build pip package and docker image
|
#### Build pip package
|
||||||
|
|
||||||
<details><summary><i>Click to expand...</i></summary>
|
<details><summary><i>Click to expand...</i></summary>
|
||||||
|
|
||||||
|
@ -1024,7 +1024,6 @@ Extractors take the URL of a page to archive, write their output to the filesyst
|
||||||
|
|
||||||
# or individually:
|
# or individually:
|
||||||
./bin/build_deb.sh
|
./bin/build_deb.sh
|
||||||
./bin/build_docker.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -1039,7 +1038,6 @@ Extractors take the URL of a page to archive, write their output to the filesyst
|
||||||
|
|
||||||
# or individually:
|
# or individually:
|
||||||
./bin/release_deb.sh
|
./bin/release_deb.sh
|
||||||
./bin/release_docker.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -3,4 +3,4 @@ ignore = D100,D101,D102,D103,D104,D105,D202,D203,D205,D400,E131,E241,E252,E266,E
|
||||||
select = F,E9,W
|
select = F,E9,W
|
||||||
max-line-length = 130
|
max-line-length = 130
|
||||||
max-complexity = 10
|
max-complexity = 10
|
||||||
exclude = migrations,tests,node_modules,vendor,venv,.venv,.venv2,.docker-venv
|
exclude = migrations,tests,node_modules,vendor,venv,.venv,.venv2
|
||||||
|
|
|
@ -18,7 +18,6 @@ cd "$REPO_DIR"
|
||||||
|
|
||||||
# the order matters
|
# the order matters
|
||||||
./bin/build_deb.sh
|
./bin/build_deb.sh
|
||||||
./bin/build_docker.sh
|
|
||||||
|
|
||||||
echo "[√] Done. Install the built package by running:"
|
echo "[√] Done. Install the built package by running:"
|
||||||
echo " python3 setup.py install"
|
echo " python3 setup.py install"
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ./bin/build_docker.sh dev 'linux/arm/v7'
|
|
||||||
|
|
||||||
### Bash Environment Setup
|
### Bash Environment Setup
|
||||||
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# ./bin/build_docker.sh dev 'linux/arm/v7'
|
|
||||||
|
|
||||||
### Bash Environment Setup
|
|
||||||
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
|
||||||
# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
|
||||||
# set -o xtrace
|
|
||||||
set -o errexit
|
|
||||||
set -o errtrace
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
IFS=$'\n'
|
|
||||||
|
|
||||||
REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )"
|
|
||||||
cd "$REPO_DIR"
|
|
||||||
|
|
||||||
which docker > /dev/null || exit 1
|
|
||||||
which jq > /dev/null || exit 1
|
|
||||||
# which pdm > /dev/null || exit 1
|
|
||||||
|
|
||||||
SUPPORTED_PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7"
|
|
||||||
|
|
||||||
TAG_NAME="${1:-$(git rev-parse --abbrev-ref HEAD)}"
|
|
||||||
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
|
||||||
SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')"
|
|
||||||
SELECTED_PLATFORMS="${2:-$SUPPORTED_PLATFORMS}"
|
|
||||||
|
|
||||||
echo "[+] Building Docker image: tag=$TAG_NAME version=$SHORT_VERSION arch=$SELECTED_PLATFORMS"
|
|
||||||
|
|
||||||
function check_platforms() {
|
|
||||||
INSTALLED_PLATFORMS="$(docker buildx inspect | grep 'Platforms:' )"
|
|
||||||
|
|
||||||
for REQUIRED_PLATFORM in ${SELECTED_PLATFORMS//,/$IFS}; do
|
|
||||||
echo "[+] Checking for: $REQUIRED_PLATFORM..."
|
|
||||||
if ! (echo "$INSTALLED_PLATFORMS" | grep -q "$REQUIRED_PLATFORM"); then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function remove_builder() {
|
|
||||||
# remove existing xbuilder
|
|
||||||
docker buildx stop xbuilder || true
|
|
||||||
docker buildx rm xbuilder || true
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_builder() {
|
|
||||||
docker buildx use xbuilder && return 0
|
|
||||||
echo "[+] Creating new xbuilder for: $SELECTED_PLATFORMS"
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Switch to buildx builder if already present / previously created
|
|
||||||
docker buildx create --name xbuilder --driver docker-container --bootstrap --use --platform "$SELECTED_PLATFORMS" || true
|
|
||||||
docker buildx inspect --bootstrap || true
|
|
||||||
}
|
|
||||||
|
|
||||||
function recreate_builder() {
|
|
||||||
# Install QEMU binaries for cross-platform building if not installed
|
|
||||||
docker run --privileged --rm 'tonistiigi/binfmt' --install all
|
|
||||||
|
|
||||||
remove_builder
|
|
||||||
create_builder
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if docker is ready for cross-plaform builds, if not, recreate builder
|
|
||||||
docker buildx use xbuilder 2>&1 >/dev/null || create_builder
|
|
||||||
check_platforms || (recreate_builder && check_platforms) || exit 1
|
|
||||||
|
|
||||||
|
|
||||||
# Build python package lists
|
|
||||||
echo "[+] Generating requirements.txt and pdm.lock from pyproject.toml..."
|
|
||||||
pdm lock --group=':all' --strategy="cross_platform" --production
|
|
||||||
pdm export --group=':all' --production --without-hashes -o requirements.txt
|
|
||||||
|
|
||||||
echo "[+] Building archivebox:$VERSION docker image..."
|
|
||||||
# docker builder prune
|
|
||||||
# docker build . --no-cache -t archivebox-dev \
|
|
||||||
# replace --load with --push to deploy
|
|
||||||
docker buildx build --platform "$SELECTED_PLATFORMS" --load . \
|
|
||||||
-t archivebox/archivebox \
|
|
||||||
-t archivebox/archivebox:$TAG_NAME \
|
|
||||||
-t archivebox/archivebox:$VERSION \
|
|
||||||
-t archivebox/archivebox:$SHORT_VERSION \
|
|
||||||
-t archivebox/archivebox:latest \
|
|
||||||
-t nikisweeting/archivebox \
|
|
||||||
-t nikisweeting/archivebox:$TAG_NAME \
|
|
||||||
-t nikisweeting/archivebox:$VERSION \
|
|
||||||
-t nikisweeting/archivebox:$SHORT_VERSION \
|
|
||||||
-t nikisweeting/archivebox:latest \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$TAG_NAME \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$VERSION \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$SHORT_VERSION
|
|
|
@ -21,12 +21,10 @@ cd "$REPO_DIR"
|
||||||
# Run all the build scripts
|
# Run all the build scripts
|
||||||
./bin/build_git.sh
|
./bin/build_git.sh
|
||||||
./bin/build_deb.sh
|
./bin/build_deb.sh
|
||||||
./bin/build_docker.sh
|
|
||||||
|
|
||||||
# Push relase to public repositories
|
# Push relase to public repositories
|
||||||
./bin/release_git.sh
|
./bin/release_git.sh
|
||||||
./bin/release_deb.sh
|
./bin/release_deb.sh
|
||||||
./bin/release_docker.sh
|
|
||||||
|
|
||||||
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
||||||
echo "[√] Done. Published version v$VERSION"
|
echo "[√] Done. Published version v$VERSION"
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
### Bash Environment Setup
|
|
||||||
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
|
||||||
# https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
|
|
||||||
# set -o xtrace
|
|
||||||
set -o errexit
|
|
||||||
set -o errtrace
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
IFS=$'\n'
|
|
||||||
|
|
||||||
REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )"
|
|
||||||
cd "$REPO_DIR"
|
|
||||||
|
|
||||||
SUPPORTED_PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7"
|
|
||||||
|
|
||||||
TAG_NAME="${1:-$(git rev-parse --abbrev-ref HEAD)}"
|
|
||||||
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
|
||||||
SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')"
|
|
||||||
SELECTED_PLATFORMS="${2:-$SUPPORTED_PLATFORMS}"
|
|
||||||
|
|
||||||
|
|
||||||
# echo "[*] Logging in to Docker Hub & Github Container Registry"
|
|
||||||
# docker login --username=nikisweeting
|
|
||||||
# docker login ghcr.io --username=pirate
|
|
||||||
|
|
||||||
echo "[^] Building docker image"
|
|
||||||
./bin/build_docker.sh "$TAG_NAME" "$SELECTED_PLATFORMS"
|
|
||||||
|
|
||||||
echo "[^] Uploading docker image"
|
|
||||||
docker buildx build --platform "$SELECTED_PLATFORMS" --push . \
|
|
||||||
-t archivebox/archivebox \
|
|
||||||
-t archivebox/archivebox:$TAG_NAME \
|
|
||||||
-t archivebox/archivebox:$VERSION \
|
|
||||||
-t archivebox/archivebox:$SHORT_VERSION \
|
|
||||||
-t archivebox/archivebox:latest \
|
|
||||||
-t nikisweeting/archivebox \
|
|
||||||
-t nikisweeting/archivebox:$TAG_NAME \
|
|
||||||
-t nikisweeting/archivebox:$VERSION \
|
|
||||||
-t nikisweeting/archivebox:$SHORT_VERSION \
|
|
||||||
-t nikisweeting/archivebox:latest \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$TAG_NAME \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$VERSION \
|
|
||||||
-t ghcr.io/archivebox/archivebox/archivebox:$SHORT_VERSION
|
|
Loading…
Reference in a new issue