Skip to content

Commit d8a3472

Browse files
committed
Use prebuilt mc binary in place of docker image
Signed-off-by: Kostis Papazafeiropoulos <[email protected]>
1 parent d9ec71d commit d8a3472

File tree

4 files changed

+92
-73
lines changed

4 files changed

+92
-73
lines changed

.github/workflows/test.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Test action
2+
3+
on: push
4+
5+
jobs:
6+
upload:
7+
runs-on: self-hosted
8+
steps:
9+
- name: Checkout repo
10+
uses: actions/checkout@v4
11+
12+
- name: Generate test files
13+
run: |
14+
mkdir -p files
15+
echo "Minio Test 1" > files/test1.txt
16+
echo "Minio Test 2" > files/test2.txt
17+
18+
- name: Test single file upload
19+
uses: ./
20+
with:
21+
url: https://s3.nubificus.com
22+
access-key: ${{ secrets.AWS_ACCESS_KEY }}
23+
secret-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
24+
local-path: "./files/test1.txt"
25+
remote-path: "github/minio/"
26+
27+
- name: Test wildcard with extension upload
28+
uses: ./
29+
with:
30+
url: https://s3.nubificus.com
31+
access-key: ${{ secrets.AWS_ACCESS_KEY }}
32+
secret-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
33+
local-path: "./files/*.txt"
34+
remote-path: "github/minio/"
35+
36+
- name: Test wildcard upload
37+
uses: ./
38+
with:
39+
url: https://s3.nubificus.com
40+
access-key: ${{ secrets.AWS_ACCESS_KEY }}
41+
secret-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
42+
local-path: "./files/*"
43+
remote-path: "github/minio/"

Dockerfile

Lines changed: 0 additions & 5 deletions
This file was deleted.

action.yml

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,52 @@ inputs:
2424
required: false
2525

2626
runs:
27-
using: 'docker'
28-
image: 'Dockerfile'
29-
entrypoint: '/entrypoint.sh'
30-
args:
31-
- ${{ inputs.url }}
32-
- ${{ inputs.access-key }}
33-
- ${{ inputs.secret-key }}
34-
- ${{ inputs.local-path }}
35-
- ${{ inputs.remote-path }}
36-
- ${{ inputs.policy }}
27+
using: composite
28+
steps:
29+
- name: Setup mc
30+
working-directory: /usr/local/bin
31+
run: |
32+
[ -n "$(which mc)" ] && exit 0
33+
arch=$(dpkg --print-architecture | sed 's/armhf/arm/g')
34+
sudo wget --progres=dot:binary \
35+
"https://dl.min.io/client/mc/release/linux-${arch}/mc"
36+
sudo chmod +x mc
37+
shell: bash
38+
39+
- name: Setup s3 alias
40+
run: |
41+
mc alias set s3 "${{ inputs.url }}" \
42+
"${{ inputs.access-key }}" "${{ inputs.secret-key }}"
43+
shell: bash
44+
45+
- name: Upload objects
46+
run: |
47+
echo "Will upload ${{ inputs.local-path }} to ${{ inputs.remote-path }}"
48+
local_path=${{ inputs.local-path }}
49+
if [ "${local_path#*'*'}" != "$local_path" ]; then
50+
# Handle local_files with wildcards
51+
local_dir=$(dirname "$local_path")
52+
local_files=$(basename "$local_path")
53+
path_depth=$(echo "$local_dir" | awk -F"/" '{print NF-1}')
54+
IFS=$'\n'
55+
for p in $(find "$local_dir" \
56+
-name "$local_files" -maxdepth "$path_depth"); do
57+
[ "$p" = "$local_dir" ] && continue
58+
mc cp -r "$p" "s3/${{ inputs.remote-path }}"
59+
done
60+
unset IFS
61+
else
62+
mc cp -r "$local_path" "s3/${{ inputs.remote-path }}"
63+
fi
64+
shell: bash
65+
66+
- name: Set policy
67+
run: |
68+
if [ "${{ inputs.policy }}" = 1 ] ; then
69+
echo "Will make ${{ inputs.remote-path }} public"
70+
mc anonymous -r set download "s3/${{ inputs.remote-path }}"
71+
else
72+
echo "Will make ${{ inputs.remote-path }} private"
73+
mc anonymous -r set private "s3/${{ inputs.remote-path }}" || true
74+
fi
75+
shell: bash

entrypoint.sh

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)