diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..3c8e5fd --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,13 @@ +{ + "extends": ["config:base"], + "regexManagers": [ + { + "fileMatch": ["^requirements\\.txt$"], + "matchStrings": [ + "^(?[a-zA-Z0-9\\-_]+)==(?[a-zA-Z0-9\\.]+) --hash=sha256:(?[a-fA-F0-9]{64})$" + ], + "datasourceTemplate": "pypi", + "depNameTemplate": "{{depName}}" + } + ] +} \ No newline at end of file diff --git a/.woodpecker/build-s3cmd.yml b/.woodpecker/build-s3cmd.yml new file mode 100644 index 0000000..381bcd9 --- /dev/null +++ b/.woodpecker/build-s3cmd.yml @@ -0,0 +1,62 @@ +--- +variables: + - &build_vars + DOCKER_URL: "docker.io" + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + QUAY_URL: "quay.io" + QUAY_USERNAME: + from_secret: quay_username + QUAY_PASSWORD: + from_secret: quay_password + +when: + - event: push + path: 's3cmd/*' + - event: push + path: '.woodpecker/*' + - event: cron + +matrix: + include: + - platform: linux/amd64 + clone_image: woodpeckerci/plugin-git + build_image: docker + socket_mount: /var/run/docker.sock:/var/run/docker.sock + - platform: windows/amd64 + clone_image: opencloudeu/woodpecker-windows-git-plugin:v2 + build_image: winamd64/docker:windowsservercore-ltsc2022 + socket_mount: \\.\pipe\docker_engine\:\\.\pipe\docker_engine\ + +labels: + platform: ${platform} + backend: docker + +clone: + - name: clone + image: ${clone_image} + +steps: + - name: build windows + when: + - matrix: + platform: windows/amd64 + image: ${build_image} + volumes: + - ${socket_mount} + environment: *build_vars + commands: + - .woodpecker/build.ps1 + + - name: build linux + when: + - matrix: + platform: linux/amd64 + image: ${build_image} + volumes: + - ${socket_mount} + environment: *build_vars + commands: + - sh .woodpecker/build.sh diff --git a/.woodpecker/build.ps1 b/.woodpecker/build.ps1 new file mode 100644 index 0000000..c6951f3 --- /dev/null +++ b/.woodpecker/build.ps1 @@ -0,0 +1,34 @@ +$date = get-date -format FileDate +$DOCKER_URL = $env:DOCKER_URL +$DOCKER_USERNAME = $env:DOCKER_USERNAME +$DOCKER_PASSWORD = $env:DOCKER_PASSWORD +$QUAY_URL = $env:QUAY_URL +$QUAY_USERNAME = $env:QUAY_USERNAME +$QUAY_PASSWORD = $env:QUAY_PASSWORD + +docker login "$DOCKER_URL" --username "$DOCKER_USERNAME" --password "$DOCKER_PASSWORD" +docker login "$QUAY_URL" --username "$QUAY_USERNAME" --password "$QUAY_PASSWORD" +cd s3cmd + +docker build . -f Dockerfile -t opencloudeu/s3cmd:w-v$date +docker tag opencloudeu/s3cmd:w-v$date opencloudeu/s3cmd:w-v1 +docker tag opencloudeu/s3cmd:w-v$date $DOCKER_URL/opencloudeu/s3cmd:w-v$date +docker tag opencloudeu/s3cmd:w-v$date $DOCKER_URL/opencloudeu/s3cmd:w-v1 +docker tag opencloudeu/s3cmd:w-v$date $QUAY_URL/opencloudeu/s3cmd:w-v$date +docker tag opencloudeu/s3cmd:w-v$date $QUAY_URL/opencloudeu/s3cmd:w-v1 + +docker push opencloudeu/s3cmd:w-v$date +docker push opencloudeu/s3cmd:w-v1 +docker push $DOCKER_URL/opencloudeu/s3cmd:w-v$date +docker push $DOCKER_URL/opencloudeu/s3cmd:w-v1 +docker push $QUAY_URL/opencloudeu/s3cmd:w-v$date +docker push $QUAY_URL/opencloudeu/s3cmd:w-v1 + +docker manifest create -a opencloudeu/s3cmd:v1 opencloudeu/s3cmd:l-v1 opencloudeu/s3cmd:w-v1 +docker manifest push opencloudeu/s3cmd:v1 + +docker manifest create -a $DOCKER_URL/opencloudeu/s3cmd:v1 $DOCKER_URL/opencloudeu/s3cmd:l-v1 $DOCKER_URL/opencloudeu/s3cmd:w-v1 +docker manifest push $DOCKER_URL/opencloudeu/s3cmd:v1 + +docker manifest create -a $QUAY_URL/opencloudeu/s3cmd:v1 $QUAY_URL/opencloudeu/s3cmd:l-v1 $QUAY_URL/opencloudeu/s3cmd:w-v1 +docker manifest push $QUAY_URL/opencloudeu/s3cmd:v1 diff --git a/.woodpecker/build.sh b/.woodpecker/build.sh new file mode 100644 index 0000000..120559c --- /dev/null +++ b/.woodpecker/build.sh @@ -0,0 +1,28 @@ +date=$(date +%Y%m%d) + +echo "$DOCKER_PASSWORD" | docker login "$DOCKER_URL" --username "$DOCKER_USERNAME" --password-stdin +echo "$QUAY_PASSWORD" | docker login "$QUAY_URL" --username "$QUAY_USERNAME" --password-stdin +cd s3cmd + +docker build . -f Dockerfile -t opencloudeu/s3cmd:l-v$date +docker tag opencloudeu/s3cmd:l-v$date opencloudeu/s3cmd:l-v1 +docker tag opencloudeu/s3cmd:l-v$date $DOCKER_URL/opencloudeu/s3cmd:l-v$date +docker tag opencloudeu/s3cmd:l-v$date $DOCKER_URL/opencloudeu/s3cmd:l-v1 +docker tag opencloudeu/s3cmd:l-v$date $QUAY_URL/opencloudeu/s3cmd:l-v$date +docker tag opencloudeu/s3cmd:l-v$date $QUAY_URL/opencloudeu/s3cmd:l-v1 + +docker push opencloudeu/s3cmd:l-v$date +docker push opencloudeu/s3cmd:l-v1 +docker push $DOCKER_URL/opencloudeu/s3cmd:l-v$date +docker push $DOCKER_URL/opencloudeu/s3cmd:l-v1 +docker push $QUAY_URL/opencloudeu/s3cmd:l-v$date +docker push $QUAY_URL/opencloudeu/s3cmd:l-v1 + +docker manifest create -a opencloudeu/s3cmd:v1 opencloudeu/s3cmd:l-v1 opencloudeu/s3cmd:w-v1 +docker manifest push opencloudeu/s3cmd:v1 + +docker manifest create -a $DOCKER_URL/opencloudeu/s3cmd:v1 $DOCKER_URL/opencloudeu/s3cmd:l-v1 $DOCKER_URL/opencloudeu/s3cmd:w-v1 +docker manifest push $DOCKER_URL/opencloudeu/s3cmd:v1 + +docker manifest create -a $QUAY_URL/opencloudeu/s3cmd:v1 $QUAY_URL/opencloudeu/s3cmd:l-v1 $QUAY_URL/opencloudeu/s3cmd:w-v1 +docker manifest push $QUAY_URL/opencloudeu/s3cmd:v1 diff --git a/s3cmd/Dockerfile b/s3cmd/Dockerfile new file mode 100644 index 0000000..11c2a44 --- /dev/null +++ b/s3cmd/Dockerfile @@ -0,0 +1,16 @@ +#escape=` + +# This Dockerfile will be build on Windows and Linux +# It will rename the s3cmd script to s3cmd.py on Windows +# Afterwards "s3cmd" will be available as a global command +FROM python:3 + +LABEL maintainer="OpenCloud.eu Team " ` + name="opencloudeu/s3cmd" ` + vendor="OpenCloud GmbH" ` + source="https://github.com/opencloud-eu/ci-docker-desktop" + +COPY . . + +RUN python -m pip install -r requirements.txt ; ` + python rename_script.py diff --git a/s3cmd/rename_script.py b/s3cmd/rename_script.py new file mode 100644 index 0000000..0da66b3 --- /dev/null +++ b/s3cmd/rename_script.py @@ -0,0 +1,5 @@ +import os +if os.name == 'nt': + # rename file on windows to make sure it runs as python script + os.rename('/Python/Scripts/s3cmd', '/Python/Scripts/s3cmd.py') +exit(0) diff --git a/s3cmd/requirements.txt b/s3cmd/requirements.txt new file mode 100644 index 0000000..d5e5fb4 --- /dev/null +++ b/s3cmd/requirements.txt @@ -0,0 +1,4 @@ +python-magic==0.4.27 --hash=sha256:c212960ad306f700aa0d01e5d7a325d20548ff97eb9920dcd29513174f0294d3 +six==1.17.0 --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 +python-dateutil==2.9.0.post0 --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 +s3cmd==2.4.0 --hash=sha256:13ad8a44d44cc0535ba8c878c91fd68cd830dc48f6388722fa44a7aaf3f18017 \ No newline at end of file