Skip to content

test workflow

test workflow #22

Workflow file for this run

name: ship
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches: ["main2"]
paths:
- .github/workflows/ship.yml
- "**"
jobs:
image-build-push:
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- name: Generate .env.production file
run: |
cat << EOF > .env.production
# Environment
NEXT_PUBLIC_ENVIRONMENT=${{ vars.NEXT_PUBLIC_ENVIRONMENT }}
# Sentry
NEXT_PUBLIC_SENTRY_DSN=${{ secrets.NEXT_PUBLIC_SENTRY_DSN }}
SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
# GTM
NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID }}
# Braze
BRAZE_INSTANCE_URL=${{ secrets.BRAZE_INSTANCE_URL }}
BRAZE_API_KEY=${{ secrets.BRAZE_API_KEY }}
BRAZE_GENERAL_WAITLIST_GROUP_ID=${{ secrets.BRAZE_GENERAL_WAITLIST_GROUP_ID }}
BRAZE_DEVELOPERS_WAITLIST_GROUP_ID=${{ secrets.BRAZE_DEVELOPERS_WAITLIST_GROUP_ID }}
# OneTrust
NEXT_PUBLIC_ONE_TRUST_ID=${{ secrets.NEXT_PUBLIC_ONE_TRUST_ID }}
# Dune
NEXT_PUBLIC_DUNE_API_KEY=${{ secrets.NEXT_PUBLIC_DUNE_API_KEY }}
# WalletConnect
NEXT_PUBLIC_WC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_WC_PROJECT_ID }}
# hCaptcha
HCAPTCHA_SECRET=${{ secrets.HCAPTCHA_SECRET }}
NEXT_PUBLIC_HCAPTCHA_SITEKEY=${{ secrets.NEXT_PUBLIC_HCAPTCHA_SITEKEY }}
# Segment
NEXT_PUBLIC_SEGMENT_WRITE_KEY=${{ secrets.NEXT_PUBLIC_SEGMENT_WRITE_KEY }}
# Kraken Connect
NEXT_PUBLIC_KRAKEN_CLIENT_ID=${{ secrets.NEXT_PUBLIC_KRAKEN_CLIENT_ID }}
KRAKEN_CLIENT_SECRET=${{ secrets.KRAKEN_CLIENT_SECRET }}
# App Submission Bot
INK_APP_SUBMISSION_BOT_GITHUB_APP_ID=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_APP_ID }}
INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY }}
INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID=${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID }}
INK_APP_SUBMISSION_TARGET_ORG=${{ secrets.INK_APP_SUBMISSION_TARGET_ORG }}
INK_APP_SUBMISSION_TARGET_REPO=${{ secrets.INK_APP_SUBMISSION_TARGET_REPO }}
INK_APP_SUBMISSION_TARGET_BRANCH=${{ secrets.INK_APP_SUBMISSION_TARGET_BRANCH }}
INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL=${{ secrets.INK_APP_SUBMISSION_SLACK_NOTIFICATION_CHANNEL }}
INK_APP_SUBMISSION_SLACK_BOT_TOKEN=${{ secrets.INK_APP_SUBMISSION_SLACK_BOT_TOKEN }}
# Smart Account Experiment
NEXT_PUBLIC_BUNDLER_URL=${{ secrets.NEXT_PUBLIC_BUNDLER_URL }}
NEXT_PUBLIC_PASSKEY_SERVER_URL=${{ secrets.NEXT_PUBLIC_PASSKEY_SERVER_URL }}
NEXT_PUBLIC_PAYMASTER_URL=${{ secrets.NEXT_PUBLIC_PAYMASTER_URL }}
NEXT_PUBLIC_GELATO_BRIDGE_URL=${{ secrets.NEXT_PUBLIC_GELATO_BRIDGE_URL }}
NEXT_PUBLIC_FAUCET_API_URL=${{ secrets.NEXT_PUBLIC_FAUCET_API_URL }}
# Testnet Faucet Experiment
MULTIPLIER_JWT_SECRET=${{ secrets.MULTIPLIER_JWT_SECRET }}
EOF
# - uses: ./.github/actions/image-build-push
# with:
# repository-name: ink-web-app
# dockerfile-path: ./Dockerfile
# docker-context: ./
# github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Generate GitHub App Token
id: generate-token
run: |
# Create a JWT using the app ID and private key
JWT_PAYLOAD=$(echo -n '{"iat":'"$(($(date +%s) - 60))"',"exp":'"$(($(date +%s) + 600))"',"iss":"${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_APP_ID }}"}' | base64 | tr -d '=' | tr '/+' '_-')
JWT_HEADER=$(echo -n '{"alg":"RS256","typ":"JWT"}' | base64 | tr -d '=' | tr '/+' '_-')
# Write private key to temp file
echo "${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_PRIVATE_KEY }}" > private-key.pem
# Sign the JWT
JWT_SIGNATURE=$(echo -n "${JWT_HEADER}.${JWT_PAYLOAD}" | openssl dgst -binary -sha256 -sign private-key.pem | openssl base64 | tr -d '=' | tr '/+' '_-')
JWT="${JWT_HEADER}.${JWT_PAYLOAD}.${JWT_SIGNATURE}"
# Exchange JWT for installation token
INSTALLATION_TOKEN=$(curl -s -X POST \
-H "Authorization: Bearer ${JWT}" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/app/installations/${{ secrets.INK_APP_SUBMISSION_BOT_GITHUB_INSTALLATION_ID }}/access_tokens" \
| jq -r .token)
# Clean up
rm private-key.pem
# Set output
echo "token=${INSTALLATION_TOKEN}" >> $GITHUB_OUTPUT
- name: Trigger infra update
if: github.ref == 'refs/heads/main2'
run: |
curl -X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer ${{ steps.generate-token.outputs.token }}" \
${{ secrets.TARGET_REPOSITORY_DISPATCH_URL }} \
-d '{"event_type": "update-test-file", "client_payload": {"message": "Test commit from GitHub Actions"}}'