Skip to content

Commit 58c1614

Browse files
committed
improvements
1 parent 0d9b142 commit 58c1614

File tree

1 file changed

+34
-41
lines changed

1 file changed

+34
-41
lines changed

.github/workflows/wrangler.yaml

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@ on:
66
- "*"
77

88
jobs:
9-
prepare:
9+
deploy:
1010
runs-on: ubuntu-latest
11-
outputs:
12-
secrets: ${{ steps.extract-secrets.outputs.secrets }}
13-
env_flag: ${{ steps.check-env.outputs.env_flag }}
11+
name: Deploy
1412
steps:
1513
- uses: actions/checkout@v4
1614

17-
- name: Extract secrets
18-
id: extract-secrets
19-
run: |
20-
SECRETS_LIST=$(echo '${{ toJSON(secrets) }}' | jq -r 'to_entries | map(select(.key | startswith("github_") | not) | select(.key != "CLOUDFLARE_API_TOKEN") | .key) | tostring')
21-
echo "secrets=$SECRETS_LIST" >> $GITHUB_OUTPUT
15+
- name: Setup Node.js
16+
uses: actions/setup-node@v4
17+
with:
18+
node-version: "20"
19+
20+
- name: Install Dependencies
21+
run: npm install
2222

2323
- name: Check wrangler.toml for environments
2424
id: check-env
@@ -34,49 +34,42 @@ jobs:
3434
echo "env_flag=" >> $GITHUB_OUTPUT
3535
fi
3636
37-
set-secrets:
38-
needs: prepare
39-
runs-on: ubuntu-latest
40-
strategy:
41-
matrix:
42-
secret: ${{ fromJson(needs.prepare.outputs.secrets) }}
43-
# Allow all parallel jobs to run even if one fails
44-
fail-fast: false
45-
# Run up to 10 parallel jobs
46-
max-parallel: 10
47-
steps:
4837
- name: Install wrangler
4938
run: npm install -g wrangler
5039

51-
- name: Set secret
40+
- name: Install parallel
41+
run: sudo apt-get update && sudo apt-get install -y parallel
42+
43+
- name: Sync All Secrets to Cloudflare
5244
env:
45+
SECRETS_CONTEXT: ${{ toJSON(secrets) }}
5346
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
54-
SECRET_VALUE: ${{ secrets[matrix.secret] }}
5547
run: |
56-
if [ -n "${{ needs.prepare.outputs.env_flag }}" ]; then
57-
echo "Setting ${{ matrix.secret }} for environment ${{ needs.prepare.outputs.env_flag }}"
58-
echo "$SECRET_VALUE" | wrangler secret put "${{ matrix.secret }}" ${{ needs.prepare.outputs.env_flag }}
59-
else
60-
echo "Setting ${{ matrix.secret }} for default environment"
61-
echo "$SECRET_VALUE" | wrangler secret put "${{ matrix.secret }}"
62-
fi
48+
# Create a temporary file with secret names and values
49+
echo "$SECRETS_CONTEXT" | jq -r 'to_entries | .[] | select(.key | startswith("github_") | not) | select(.key != "CLOUDFLARE_API_TOKEN") | [.key, .value] | @tsv' > secrets.txt
6350
64-
deploy:
65-
needs: [prepare, set-secrets]
66-
runs-on: ubuntu-latest
67-
steps:
68-
- uses: actions/checkout@v4
51+
# Function to set a secret
52+
set_secret() {
53+
secret_name="$1"
54+
secret_value="$2"
55+
if [ -n "${{ steps.check-env.outputs.env_flag }}" ]; then
56+
echo "Setting $secret_name for environment ${{ steps.check-env.outputs.env_flag }}"
57+
echo "$secret_value" | wrangler secret put "$secret_name" ${{ steps.check-env.outputs.env_flag }}
58+
else
59+
echo "Setting $secret_name for default environment"
60+
echo "$secret_value" | wrangler secret put "$secret_name"
61+
fi
62+
}
63+
export -f set_secret
6964
70-
- name: Setup Node.js
71-
uses: actions/setup-node@v4
72-
with:
73-
node-version: "20"
65+
# Use parallel to set secrets (2 arguments per job)
66+
parallel --colsep '\t' set_secret {1} {2} :::: secrets.txt
7467
75-
- name: Install Dependencies
76-
run: npm install
68+
# Clean up
69+
rm secrets.txt
7770
7871
- name: Deploy
7972
uses: cloudflare/wrangler-action@v3
8073
with:
8174
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
82-
command: deploy ${{ needs.prepare.outputs.env_flag }}
75+
command: deploy ${{ steps.check-env.outputs.env_flag }}

0 commit comments

Comments
 (0)