Pin every action to latest SHA (#10779)
Co-authored-by: Eric Bailey <git@esb.lol> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -22,13 +22,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ env.USERNAME}}
|
username: ${{ env.USERNAME}}
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -51,7 +51,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ env.USERNAME }}
|
username: ${{ env.USERNAME }}
|
||||||
@@ -37,7 +37,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -46,7 +46,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ env.USERNAME}}
|
username: ${{ env.USERNAME}}
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ env.USERNAME}}
|
username: ${{ env.USERNAME}}
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
|
||||||
- name: Setup Docker buildx
|
- name: Setup Docker buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
||||||
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
- name: Log into registry ${{ env.REGISTRY }}
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ env.USERNAME}}
|
username: ${{ env.USERNAME}}
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Extract Docker metadata
|
- name: Extract Docker metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
id: build-and-push
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ on:
|
|||||||
- testflight-android
|
- testflight-android
|
||||||
- production
|
- production
|
||||||
|
|
||||||
|
# Deploys happen via EAS using EXPO_TOKEN; the GITHUB_TOKEN only checks out code
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
if: github.repository == 'bluesky-social/social-app'
|
if: github.repository == 'bluesky-social/social-app'
|
||||||
@@ -28,32 +32,32 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 5
|
fetch-depth: 5
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 🪛 Setup jq
|
- name: 🪛 Setup jq
|
||||||
uses: dcarbone/install-jq-action@v2
|
uses: dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
|
||||||
|
|
||||||
- name: ⚙️ Install dependencies
|
- name: ⚙️ Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: 🔨 Setup Expo CLI
|
- name: 🔨 Setup Expo CLI
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
packager: 'pnpm --allow-build=dtrace-provider'
|
packager: 'pnpm --allow-build=dtrace-provider'
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
||||||
with:
|
with:
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
@@ -98,14 +102,12 @@ jobs:
|
|||||||
|
|
||||||
- name: ⏰ Get a timestamp
|
- name: ⏰ Get a timestamp
|
||||||
id: timestamp
|
id: timestamp
|
||||||
uses: nanzm/get-time-action@master
|
run: echo "time=$(date -u +'%m-%d-%H-%M-%S')" >> "$GITHUB_OUTPUT"
|
||||||
with:
|
|
||||||
format: "MM-DD-HH-mm-ss"
|
|
||||||
|
|
||||||
- name: 🚀 Upload Production Artifact
|
- name: 🚀 Upload Production Artifact
|
||||||
id: upload-artifact-production
|
id: upload-artifact-production
|
||||||
if: ${{ inputs.profile == 'production' }}
|
if: ${{ inputs.profile == 'production' }}
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
compression-level: 6
|
compression-level: 6
|
||||||
@@ -115,7 +117,7 @@ jobs:
|
|||||||
- name: 🚀 Upload Testflight Artifact
|
- name: 🚀 Upload Testflight Artifact
|
||||||
id: upload-artifact-testflight
|
id: upload-artifact-testflight
|
||||||
if: ${{ inputs.profile != 'production' }}
|
if: ${{ inputs.profile != 'production' }}
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
compression-level: 6
|
compression-level: 6
|
||||||
@@ -128,7 +130,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 🔔 Notify Slack of Production Build
|
- name: 🔔 Notify Slack of Production Build
|
||||||
if: ${{ inputs.profile == 'production' }}
|
if: ${{ inputs.profile == 'production' }}
|
||||||
uses: slackapi/slack-github-action@v3.0.3
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
|
||||||
with:
|
with:
|
||||||
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
||||||
webhook-type: incoming-webhook
|
webhook-type: incoming-webhook
|
||||||
@@ -138,7 +140,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 🔔 Notify Slack of Testflight Build
|
- name: 🔔 Notify Slack of Testflight Build
|
||||||
if: ${{ inputs.profile != 'production' }}
|
if: ${{ inputs.profile != 'production' }}
|
||||||
uses: slackapi/slack-github-action@v3.0.3
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
|
||||||
with:
|
with:
|
||||||
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
||||||
webhook-type: incoming-webhook
|
webhook-type: incoming-webhook
|
||||||
@@ -165,7 +167,7 @@ jobs:
|
|||||||
- name: 🚀 Upload Production APK Artifact
|
- name: 🚀 Upload Production APK Artifact
|
||||||
id: upload-artifact-production-apk
|
id: upload-artifact-production-apk
|
||||||
if: ${{ inputs.profile == 'production' }}
|
if: ${{ inputs.profile == 'production' }}
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
compression-level: 6
|
compression-level: 6
|
||||||
@@ -174,7 +176,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 🔔 Notify Slack of Production APK Build
|
- name: 🔔 Notify Slack of Production APK Build
|
||||||
if: ${{ inputs.profile == 'production' }}
|
if: ${{ inputs.profile == 'production' }}
|
||||||
uses: slackapi/slack-github-action@v3.0.3
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
|
||||||
with:
|
with:
|
||||||
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
||||||
webhook-type: incoming-webhook
|
webhook-type: incoming-webhook
|
||||||
@@ -184,7 +186,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Restore Cache
|
- name: ⬇️ Restore Cache
|
||||||
id: get-base-commit
|
id: get-base-commit
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
if: ${{ inputs.profile == 'testflight-android' }}
|
if: ${{ inputs.profile == 'testflight-android' }}
|
||||||
with:
|
with:
|
||||||
path: most-recent-testflight-commit.txt
|
path: most-recent-testflight-commit.txt
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ on:
|
|||||||
- testflight
|
- testflight
|
||||||
- production
|
- production
|
||||||
|
|
||||||
|
# Deploys happen via EAS using EXPO_TOKEN; the GITHUB_TOKEN only checks out code
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
if: github.repository == 'bluesky-social/social-app'
|
if: github.repository == 'bluesky-social/social-app'
|
||||||
@@ -28,42 +32,42 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 5
|
fetch-depth: 5
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 🪛 Setup jq
|
- name: 🪛 Setup jq
|
||||||
uses: dcarbone/install-jq-action@v2
|
uses: dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
|
||||||
|
|
||||||
- name: ⚙️ Install dependencies
|
- name: ⚙️ Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: 🔨 Setup Expo CLI
|
- name: 🔨 Setup Expo CLI
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
packager: 'pnpm --allow-build=dtrace-provider'
|
packager: 'pnpm --allow-build=dtrace-provider'
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
- uses: maxim-lobanov/setup-xcode@v1
|
- uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
|
||||||
with:
|
with:
|
||||||
xcode-version: "26.4"
|
xcode-version: "26.4"
|
||||||
|
|
||||||
- name: ☕️ Setup Cocoapods
|
- name: ☕️ Setup Cocoapods
|
||||||
uses: maxim-lobanov/setup-cocoapods@v1
|
uses: maxim-lobanov/setup-cocoapods@8e97e1e98e6ccf42564fdf5622c8feec74199377 # v1.4.0
|
||||||
with:
|
with:
|
||||||
version: 1.16.2
|
version: 1.16.2
|
||||||
|
|
||||||
- name: 💾 Cache Pods
|
- name: 💾 Cache Pods
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
id: pods-cache
|
id: pods-cache
|
||||||
with:
|
with:
|
||||||
path: ./ios/Pods
|
path: ./ios/Pods
|
||||||
@@ -155,7 +159,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 🔔 Notify Slack of Production Build
|
- name: 🔔 Notify Slack of Production Build
|
||||||
if: ${{ inputs.profile == 'production' }}
|
if: ${{ inputs.profile == 'production' }}
|
||||||
uses: slackapi/slack-github-action@v3.0.3
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
|
||||||
with:
|
with:
|
||||||
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
||||||
webhook-type: incoming-webhook
|
webhook-type: incoming-webhook
|
||||||
@@ -165,7 +169,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Restore Cache
|
- name: ⬇️ Restore Cache
|
||||||
id: get-base-commit
|
id: get-base-commit
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
if: ${{ inputs.profile == 'testflight' }}
|
if: ${{ inputs.profile == 'testflight' }}
|
||||||
with:
|
with:
|
||||||
path: most-recent-testflight-commit.txt
|
path: most-recent-testflight-commit.txt
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ on:
|
|||||||
description: Runtime version (in x.x.x format) that this update is for
|
description: Runtime version (in x.x.x format) that this update is for
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
# Deploys happen via EAS using EXPO_TOKEN; the GITHUB_TOKEN only checks out code
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bundleDeploy:
|
bundleDeploy:
|
||||||
if: github.repository == 'bluesky-social/social-app'
|
if: github.repository == 'bluesky-social/social-app'
|
||||||
@@ -48,7 +52,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -56,17 +60,17 @@ jobs:
|
|||||||
if: ${{ github.ref != 'refs/heads/main' }}
|
if: ${{ github.ref != 'refs/heads/main' }}
|
||||||
run: git fetch origin main:main --depth 100
|
run: git fetch origin main:main --depth 100
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 📷 Check fingerprint and install dependencies
|
- name: 📷 Check fingerprint and install dependencies
|
||||||
id: fingerprint
|
id: fingerprint
|
||||||
uses: bluesky-social/github-actions/fingerprint-native@main
|
uses: bluesky-social/github-actions/fingerprint-native@ebc6aa6d7466dc1e78b1e832041b7b81f6f95030 # v0.1.0
|
||||||
with:
|
with:
|
||||||
profile: ${{ inputs.channel || 'testflight' }}
|
profile: ${{ inputs.channel || 'testflight' }}
|
||||||
previous-commit-tag: ${{ inputs.runtimeVersion }}
|
previous-commit-tag: ${{ inputs.runtimeVersion }}
|
||||||
@@ -87,7 +91,7 @@ jobs:
|
|||||||
run: pnpm typecheck
|
run: pnpm typecheck
|
||||||
|
|
||||||
- name: 🔨 Setup EAS
|
- name: 🔨 Setup EAS
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
@@ -96,7 +100,7 @@ jobs:
|
|||||||
|
|
||||||
- name: 🪛 Setup jq
|
- name: 🪛 Setup jq
|
||||||
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
||||||
uses: dcarbone/install-jq-action@v2
|
uses: dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
|
||||||
|
|
||||||
# eas.json not used here, set EXPO_PUBLIC_ENV
|
# eas.json not used here, set EXPO_PUBLIC_ENV
|
||||||
- name: Env
|
- name: Env
|
||||||
@@ -137,7 +141,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Restore Cache
|
- name: ⬇️ Restore Cache
|
||||||
id: get-base-commit
|
id: get-base-commit
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
||||||
with:
|
with:
|
||||||
path: most-recent-testflight-commit.txt
|
path: most-recent-testflight-commit.txt
|
||||||
@@ -167,20 +171,20 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 5
|
fetch-depth: 5
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 🔨 Setup EAS
|
- name: 🔨 Setup EAS
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
packager: 'pnpm --allow-build=dtrace-provider'
|
packager: 'pnpm --allow-build=dtrace-provider'
|
||||||
@@ -189,17 +193,17 @@ jobs:
|
|||||||
- name: ⚙️ Install dependencies
|
- name: ⚙️ Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- uses: maxim-lobanov/setup-xcode@v1
|
- uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
|
||||||
with:
|
with:
|
||||||
xcode-version: "26.4"
|
xcode-version: "26.4"
|
||||||
|
|
||||||
- name: ☕️ Setup Cocoapods
|
- name: ☕️ Setup Cocoapods
|
||||||
uses: maxim-lobanov/setup-cocoapods@v1
|
uses: maxim-lobanov/setup-cocoapods@8e97e1e98e6ccf42564fdf5622c8feec74199377 # v1.4.0
|
||||||
with:
|
with:
|
||||||
version: 1.16.2
|
version: 1.16.2
|
||||||
|
|
||||||
- name: 💾 Cache Pods
|
- name: 💾 Cache Pods
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
id: pods-cache
|
id: pods-cache
|
||||||
with:
|
with:
|
||||||
path: ./ios/Pods
|
path: ./ios/Pods
|
||||||
@@ -282,7 +286,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Restore Cache
|
- name: ⬇️ Restore Cache
|
||||||
id: get-base-commit
|
id: get-base-commit
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
if: ${{ inputs.channel == 'testflight' }}
|
if: ${{ inputs.channel == 'testflight' }}
|
||||||
with:
|
with:
|
||||||
path: most-recent-testflight-commit.txt
|
path: most-recent-testflight-commit.txt
|
||||||
@@ -314,26 +318,26 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 5
|
fetch-depth: 5
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 🔨 Setup EAS
|
- name: 🔨 Setup EAS
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
packager: 'pnpm --allow-build=dtrace-provider'
|
packager: 'pnpm --allow-build=dtrace-provider'
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
- uses: actions/setup-java@v5
|
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
||||||
with:
|
with:
|
||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
java-version: "17"
|
java-version: "17"
|
||||||
@@ -372,13 +376,11 @@ jobs:
|
|||||||
|
|
||||||
- name: ⏰ Get a timestamp
|
- name: ⏰ Get a timestamp
|
||||||
id: timestamp
|
id: timestamp
|
||||||
uses: nanzm/get-time-action@master
|
run: echo "time=$(date -u +'%m-%d-%H-%M-%S')" >> "$GITHUB_OUTPUT"
|
||||||
with:
|
|
||||||
format: "MM-DD-HH-mm-ss"
|
|
||||||
|
|
||||||
- name: 🚀 Upload Artifact
|
- name: 🚀 Upload Artifact
|
||||||
id: upload-artifact
|
id: upload-artifact
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
@@ -386,7 +388,7 @@ jobs:
|
|||||||
path: build.apk
|
path: build.apk
|
||||||
|
|
||||||
- name: 🔔 Notify Slack
|
- name: 🔔 Notify Slack
|
||||||
uses: slackapi/slack-github-action@v3.0.3
|
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
|
||||||
with:
|
with:
|
||||||
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
webhook: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
|
||||||
webhook-type: incoming-webhook
|
webhook-type: incoming-webhook
|
||||||
@@ -396,7 +398,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Restore Cache
|
- name: ⬇️ Restore Cache
|
||||||
id: get-base-commit
|
id: get-base-commit
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
if: ${{ inputs.channel != 'testflight' && inputs.channel != 'production' }}
|
if: ${{ inputs.channel != 'testflight' && inputs.channel != 'production' }}
|
||||||
with:
|
with:
|
||||||
path: most-recent-testflight-commit.txt
|
path: most-recent-testflight-commit.txt
|
||||||
|
|||||||
@@ -54,18 +54,18 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
- name: Configure AWS credentials (OIDC)
|
- name: Configure AWS credentials (OIDC)
|
||||||
uses: aws-actions/configure-aws-credentials@v6
|
uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
|
||||||
with:
|
with:
|
||||||
role-to-assume: ${{ secrets.AWS_BEDROCK_REVIEW_ROLE_ARN }}
|
role-to-assume: ${{ secrets.AWS_BEDROCK_REVIEW_ROLE_ARN }}
|
||||||
aws-region: us-east-2
|
aws-region: us-east-2
|
||||||
|
|
||||||
- name: Claude
|
- name: Claude
|
||||||
uses: anthropics/claude-code-action@v1
|
uses: anthropics/claude-code-action@4d7e1f0cd85743fdc93b1c8040ab54395da024e2 # v1.0.149
|
||||||
with:
|
with:
|
||||||
use_bedrock: 'true'
|
use_bedrock: 'true'
|
||||||
additional_permissions: |
|
additional_permissions: |
|
||||||
|
|||||||
@@ -40,18 +40,18 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
- name: Configure AWS credentials (OIDC)
|
- name: Configure AWS credentials (OIDC)
|
||||||
uses: aws-actions/configure-aws-credentials@v6
|
uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0
|
||||||
with:
|
with:
|
||||||
role-to-assume: ${{ secrets.AWS_BEDROCK_REVIEW_ROLE_ARN }}
|
role-to-assume: ${{ secrets.AWS_BEDROCK_REVIEW_ROLE_ARN }}
|
||||||
aws-region: us-east-2
|
aws-region: us-east-2
|
||||||
|
|
||||||
- name: Claude review
|
- name: Claude review
|
||||||
uses: anthropics/claude-code-action@v1
|
uses: anthropics/claude-code-action@4d7e1f0cd85743fdc93b1c8040ab54395da024e2 # v1.0.149
|
||||||
with:
|
with:
|
||||||
use_bedrock: 'true'
|
use_bedrock: 'true'
|
||||||
additional_permissions: |
|
additional_permissions: |
|
||||||
|
|||||||
@@ -10,14 +10,17 @@ concurrency:
|
|||||||
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}"
|
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}"
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-test:
|
build-and-test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Git Checkout
|
- name: Git Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Set up Go tooling
|
- name: Set up Go tooling
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
|
||||||
with:
|
with:
|
||||||
go-version-file: bskyweb/go.mod
|
go-version-file: bskyweb/go.mod
|
||||||
cache-dependency-path: bskyweb/go.sum
|
cache-dependency-path: bskyweb/go.sum
|
||||||
@@ -33,9 +36,9 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Git Checkout
|
- name: Git Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Set up Go tooling
|
- name: Set up Go tooling
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
|
||||||
with:
|
with:
|
||||||
go-version-file: bskyweb/go.mod
|
go-version-file: bskyweb/go.mod
|
||||||
cache-dependency-path: bskyweb/go.sum
|
cache-dependency-path: bskyweb/go.sum
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
job: [lint, prettier, typecheck]
|
job: [lint, prettier, typecheck]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- name: Verify Node version pins match package.json
|
- name: Verify Node version pins match package.json
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@@ -50,9 +50,9 @@ jobs:
|
|||||||
v=$(grep -oE '"node":[[:space:]]*"[0-9]+\.[0-9]+\.[0-9]+"' eas.json | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | sort -u)
|
v=$(grep -oE '"node":[[:space:]]*"[0-9]+\.[0-9]+\.[0-9]+"' eas.json | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | sort -u)
|
||||||
check "eas.json" "$v"
|
check "eas.json" "$v"
|
||||||
exit $rc
|
exit $rc
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
@@ -87,10 +87,10 @@ jobs:
|
|||||||
shard: [1, 2, 3, 4]
|
shard: [1, 2, 3, 4]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out Git repository
|
- name: Check out Git repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
ssh-key: ${{secrets.GH_ACTION_DEPLOY_KEY}}
|
ssh-key: ${{secrets.GH_ACTION_DEPLOY_KEY}}
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
@@ -30,12 +30,12 @@ jobs:
|
|||||||
- name: Extract language strings
|
- name: Extract language strings
|
||||||
run: pnpm intl:extract
|
run: pnpm intl:extract
|
||||||
- name: Create commit
|
- name: Create commit
|
||||||
uses: stefanzweifel/git-auto-commit-action@v5
|
uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7.1.0
|
||||||
with:
|
with:
|
||||||
commit_message: Nightly source-language update
|
commit_message: Nightly source-language update
|
||||||
file_pattern: ./src/locale/locales/en/messages.po
|
file_pattern: ./src/locale/locales/en/messages.po
|
||||||
- name: Push source lang to Crowdin
|
- name: Push source lang to Crowdin
|
||||||
uses: crowdin/github-action@v2
|
uses: crowdin/github-action@52aa776766211d83d975df51f3b9c53c2f8ba35f # v2.16.3
|
||||||
with:
|
with:
|
||||||
upload_sources: true
|
upload_sources: true
|
||||||
upload_sources_args: "-b main"
|
upload_sources_args: "-b main"
|
||||||
|
|||||||
@@ -5,16 +5,15 @@ on:
|
|||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
|
|
||||||
# Permissiosn to make comments in the pull request
|
# Permissions are granted per-job below; anything unlisted defaults to none
|
||||||
permissions:
|
permissions: {}
|
||||||
pull-requests: write
|
|
||||||
actions: write
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
handle-comment:
|
handle-comment:
|
||||||
if: github.event.issue.pull_request
|
if: github.event.issue.pull_request
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
outputs:
|
outputs:
|
||||||
should-deploy: ${{ steps.check-org.outputs.result }}
|
should-deploy: ${{ steps.check-org.outputs.result }}
|
||||||
|
|
||||||
@@ -45,10 +44,10 @@ jobs:
|
|||||||
echo "mentioned=false" >> $GITHUB_OUTPUT
|
echo "mentioned=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Check organization membership
|
- name: Check commenter has write access
|
||||||
if: steps.check-mention.outputs.mentioned == 'true'
|
if: steps.check-mention.outputs.mentioned == 'true'
|
||||||
id: check-org
|
id: check-org
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
try {
|
try {
|
||||||
@@ -72,13 +71,16 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [handle-comment]
|
needs: [handle-comment]
|
||||||
if: needs.handle-comment.outputs.should-deploy == 'true'
|
if: needs.handle-comment.outputs.should-deploy == 'true'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Get PR HEAD SHA
|
- name: Get PR HEAD SHA
|
||||||
env:
|
env:
|
||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
id: pr-info
|
id: pr-info
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const pr = await github.rest.pulls.get({
|
const pr = await github.rest.pulls.get({
|
||||||
@@ -87,6 +89,16 @@ jobs:
|
|||||||
pull_number: process.env.ISSUE_NUMBER,
|
pull_number: process.env.ISSUE_NUMBER,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// This workflow runs with repo secrets in scope, so never build
|
||||||
|
// code from a fork: the commenter authorizes the deploy, but a
|
||||||
|
// fork controls what code would run during it
|
||||||
|
const expected = `${context.repo.owner}/${context.repo.repo}`;
|
||||||
|
const head = pr.data.head.repo?.full_name;
|
||||||
|
if (head !== expected) {
|
||||||
|
core.setFailed(`OTA deploys are only allowed for branches in ${expected}, not forks (got ${head})`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
console.log(`PR HEAD SHA: ${pr.data.head.sha}`);
|
console.log(`PR HEAD SHA: ${pr.data.head.sha}`);
|
||||||
console.log(`PR HEAD REF: ${pr.data.head.ref}`);
|
console.log(`PR HEAD REF: ${pr.data.head.ref}`);
|
||||||
|
|
||||||
@@ -94,7 +106,7 @@ jobs:
|
|||||||
core.setOutput('head-ref', pr.data.head.ref);
|
core.setOutput('head-ref', pr.data.head.ref);
|
||||||
|
|
||||||
- name: 💬 Drop a comment
|
- name: 💬 Drop a comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
with:
|
with:
|
||||||
header: pull-request-eas-build-${{ steps.pr-info.outputs.head-sha }}
|
header: pull-request-eas-build-${{ steps.pr-info.outputs.head-sha }}
|
||||||
number: ${{ github.event.issue.number }}
|
number: ${{ github.event.issue.number }}
|
||||||
@@ -113,14 +125,14 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
ref: ${{ steps.pr-info.outputs.head-sha }}
|
ref: ${{ steps.pr-info.outputs.head-sha }}
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
@@ -141,14 +153,14 @@ jobs:
|
|||||||
run: pnpm typecheck
|
run: pnpm typecheck
|
||||||
|
|
||||||
- name: 🔨 Setup EAS
|
- name: 🔨 Setup EAS
|
||||||
uses: expo/expo-github-action@v9
|
uses: expo/expo-github-action@eab7a230208c952974db8c3245cfd78402c7b385 # 9.0.0
|
||||||
with:
|
with:
|
||||||
eas-version: '19.0.5'
|
eas-version: '19.0.5'
|
||||||
packager: 'pnpm --allow-build=dtrace-provider'
|
packager: 'pnpm --allow-build=dtrace-provider'
|
||||||
token: ${{ secrets.EXPO_TOKEN }}
|
token: ${{ secrets.EXPO_TOKEN }}
|
||||||
|
|
||||||
- name: 🪛 Setup jq
|
- name: 🪛 Setup jq
|
||||||
uses: dcarbone/install-jq-action@v2
|
uses: dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
|
||||||
|
|
||||||
- name: Env
|
- name: Env
|
||||||
id: env
|
id: env
|
||||||
@@ -181,7 +193,7 @@ jobs:
|
|||||||
RUNTIME_VERSION:
|
RUNTIME_VERSION:
|
||||||
|
|
||||||
- name: 💬 Drop a comment
|
- name: 💬 Drop a comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
env:
|
env:
|
||||||
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
with:
|
with:
|
||||||
@@ -198,7 +210,7 @@ jobs:
|
|||||||
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
|
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
|
||||||
|
|
||||||
- name: 💬 Drop a comment
|
- name: 💬 Drop a comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
header: pull-request-eas-build-${{ steps.pr-info.outputs.head-sha }}
|
header: pull-request-eas-build-${{ steps.pr-info.outputs.head-sha }}
|
||||||
|
|||||||
@@ -13,25 +13,28 @@ concurrency:
|
|||||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
permissions:
|
# Permissions are granted per-job below; anything unlisted defaults to none.
|
||||||
pull-requests: write
|
# pull-requests: write is needed by sticky-pull-request-comment to post the
|
||||||
actions: write
|
# bundle-size and fingerprint diffs
|
||||||
contents: read
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
webpack-analyzer:
|
webpack-analyzer:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
|
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
@@ -68,7 +71,7 @@ jobs:
|
|||||||
|
|
||||||
- name: ⬇️ Get base stats from cache
|
- name: ⬇️ Get base stats from cache
|
||||||
id: get-base-stats
|
id: get-base-stats
|
||||||
uses: actions/cache@v5
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
||||||
with:
|
with:
|
||||||
path: stats-base.json
|
path: stats-base.json
|
||||||
key: stats-base-${{ steps.base-commit.outputs.base-commit }}
|
key: stats-base-${{ steps.base-commit.outputs.base-commit }}
|
||||||
@@ -89,14 +92,14 @@ jobs:
|
|||||||
|
|
||||||
- name: % Get diff
|
- name: % Get diff
|
||||||
id: get-diff
|
id: get-diff
|
||||||
uses: NejcZdovc/bundle-size-diff@v1
|
uses: NejcZdovc/bundle-size-diff@5321de41d2d62a7b0f4d6e60f59d1280a0034160 # v1.1.0
|
||||||
with:
|
with:
|
||||||
base_path: "stats-base.json"
|
base_path: "stats-base.json"
|
||||||
pr_path: "../stats-new.json"
|
pr_path: "../stats-new.json"
|
||||||
excluded_assets: "(.+).chunk.js|(.+).js.map|(.+).json|(.+).png|(.+).svg|(.+).webp|(.+).jpg|(.+).ico"
|
excluded_assets: "(.+).chunk.js|(.+).js.map|(.+).json|(.+).png|(.+).svg|(.+).webp|(.+).jpg|(.+).ico"
|
||||||
|
|
||||||
- name: 💬 Drop a comment
|
- name: 💬 Drop a comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
with:
|
with:
|
||||||
header: bundle-diff
|
header: bundle-diff
|
||||||
message: |
|
message: |
|
||||||
@@ -108,9 +111,12 @@ jobs:
|
|||||||
fingerprint-native:
|
fingerprint-native:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
|
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request'}}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: ⬇️ Checkout
|
- name: ⬇️ Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 100
|
fetch-depth: 100
|
||||||
|
|
||||||
@@ -118,22 +124,22 @@ jobs:
|
|||||||
run: git fetch origin main:main --depth 100
|
run: git fetch origin main:main --depth 100
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: 🔧 Setup Node
|
- name: 🔧 Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: 📷 Check fingerprint and install dependencies
|
- name: 📷 Check fingerprint and install dependencies
|
||||||
id: fingerprint
|
id: fingerprint
|
||||||
uses: bluesky-social/github-actions/fingerprint-native@main
|
uses: bluesky-social/github-actions/fingerprint-native@ebc6aa6d7466dc1e78b1e832041b7b81f6f95030 # v0.1.0
|
||||||
with:
|
with:
|
||||||
profile: pull-request
|
profile: pull-request
|
||||||
|
|
||||||
- name: 💬 Drop a comment
|
- name: 💬 Drop a comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
if: ${{ steps.fingerprint.outputs.includes-changes }}
|
if: ${{ steps.fingerprint.outputs.includes-changes }}
|
||||||
with:
|
with:
|
||||||
header: fingerprint-diff
|
header: fingerprint-diff
|
||||||
@@ -151,7 +157,7 @@ jobs:
|
|||||||
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
|
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
|
||||||
|
|
||||||
- name: 💬 Delete comment
|
- name: 💬 Delete comment
|
||||||
uses: marocchino/sticky-pull-request-comment@v3
|
uses: marocchino/sticky-pull-request-comment@0ea0beb66eb9baf113663a64ec522f60e49231c0 # v3.0.4
|
||||||
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
if: ${{ !steps.fingerprint.outputs.includes-changes }}
|
||||||
with:
|
with:
|
||||||
header: fingerprint-diff
|
header: fingerprint-diff
|
||||||
|
|||||||
@@ -4,22 +4,29 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
|
|
||||||
|
# The push to the internal repo uses the app token below, not the GITHUB_TOKEN
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
sync:
|
sync:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository == 'bluesky-social/social-app'
|
if: github.repository == 'bluesky-social/social-app'
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout public repo
|
- name: Checkout public repo
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: app-token
|
id: app-token
|
||||||
uses: actions/create-github-app-token@v3
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.SYNC_INTERNAL_APP_ID }}
|
app-id: ${{ vars.SYNC_INTERNAL_APP_ID }}
|
||||||
private-key: ${{ secrets.SYNC_INTERNAL_PK }}
|
private-key: ${{ secrets.SYNC_INTERNAL_PK }}
|
||||||
repositories: social-app-internal
|
repositories: social-app-internal
|
||||||
|
# Scope the token down from the app's full installation permissions;
|
||||||
|
# pushing is the only thing this token is used for
|
||||||
|
permission-contents: write
|
||||||
- name: Push to internal repo
|
- name: Push to internal repo
|
||||||
env:
|
env:
|
||||||
TOKEN: ${{ steps.app-token.outputs.token }}
|
TOKEN: ${{ steps.app-token.outputs.token }}
|
||||||
|
|||||||
@@ -6,13 +6,16 @@ concurrency:
|
|||||||
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}"
|
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}"
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
verify-pnpm-lock:
|
verify-pnpm-lock:
|
||||||
name: No manual pnpm-lock.yaml edits
|
name: No manual pnpm-lock.yaml edits
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out PR HEAD
|
- name: Check out PR HEAD
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -21,10 +24,10 @@ jobs:
|
|||||||
BASE_REF: ${{ github.base_ref }}
|
BASE_REF: ${{ github.base_ref }}
|
||||||
run: git fetch origin $BASE_REF --depth=1
|
run: git fetch origin $BASE_REF --depth=1
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v6
|
- uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
|
||||||
|
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
||||||
with:
|
with:
|
||||||
node-version-file: package.json
|
node-version-file: package.json
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
name: Workflow security
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
paths: [".github/**"]
|
||||||
|
pull_request:
|
||||||
|
paths: [".github/**"]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: "${{ github.workflow }}-${{ github.head_ref || github.ref }}"
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
# The github.token is only used by zizmor's online audits (read-only API calls)
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
zizmor:
|
||||||
|
name: Audit workflows with zizmor
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out Git repository
|
||||||
|
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Run zizmor
|
||||||
|
uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
|
||||||
|
with:
|
||||||
|
# Annotate the PR directly instead of uploading SARIF to the
|
||||||
|
# security tab, and fail the check on any finding
|
||||||
|
advanced-security: false
|
||||||
|
annotations: true
|
||||||
|
# Low-confidence findings (e.g. artipacked on workflows that never
|
||||||
|
# push) are too noisy to gate CI on
|
||||||
|
min-confidence: medium
|
||||||
+2
-1
@@ -90,7 +90,8 @@
|
|||||||
"generate-webpack-stats-file": "EXPO_PUBLIC_GENERATE_STATS=1 pnpm build-web",
|
"generate-webpack-stats-file": "EXPO_PUBLIC_GENERATE_STATS=1 pnpm build-web",
|
||||||
"open-analyzer": "EXPO_PUBLIC_OPEN_ANALYZER=1 pnpm build-web",
|
"open-analyzer": "EXPO_PUBLIC_OPEN_ANALYZER=1 pnpm build-web",
|
||||||
"icons:optimize": "svgo -f ./assets/icons",
|
"icons:optimize": "svgo -f ./assets/icons",
|
||||||
"prettier": "prettier --check ."
|
"prettier": "prettier --check .",
|
||||||
|
"update-actions": "pnpm dlx actions-up --min-age 7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@atproto/api": "0.20.15",
|
"@atproto/api": "0.20.15",
|
||||||
|
|||||||
Reference in New Issue
Block a user