Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apimgmt 558 #475

Merged
merged 10 commits into from
Oct 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 98 additions & 49 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
- jp-partial
# Run for PRs on main and staging
pull_request:
branches: [main, staging]
branches: [ main, staging, mj-main ]

jobs:
# The lint job checks that all content is sanitized,
Expand All @@ -23,19 +23,19 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10

# We use node 14 and Python 3.8
# We use node 18 and Python 3.12
strategy:
matrix:
node-version: [14.x]
python-version: [3.8]
node-version: [ 18.x ]
python-version: [ 3.12 ]

# The following steps are performed for each lint job
steps:
- name: Check out the repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

Expand All @@ -45,7 +45,7 @@ jobs:
pip install yamllint

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

Expand All @@ -61,13 +61,14 @@ jobs:
push-to-en:
# We run this on the latest ubuntu
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
# TODO: change it back
if: github.ref == 'refs/heads/mj-main'
timeout-minutes: 10

# We use node 14.X
# We use node 18.X
strategy:
matrix:
node-version: [14.x]
node-version: [ 18.x ]

# Requires the lint and test jobs to pass first
needs:
Expand All @@ -76,49 +77,43 @@ jobs:
# The following steps are performed for each job
steps:
- name: Check out the repo
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Build content
run: |
yarn install
yarn build:spec
yarn build:content

- name: Push API specification
uses: s0/git-publish-subdir-action@v2.4.0
uses: s0/git-publish-subdir-action@v2.6.0
env:
REPO: self
BRANCH: en
FOLDER: compiled/spec
BRANCH: mj-en
FOLDER: openapi
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Notify other repositories of update
uses: peter-evans/repository-dispatch@v1
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.REPO_ACCESS_TOKEN }}
repository: box/box-postman
event-type: openapi-update
client-payload: "{}"

- name: "Trigger Netlify deployment"
uses: joelwmale/webhook-action@2.0.2
uses: joelwmale/webhook-action@2.4.1
env:
WEBHOOK_URL: ${{ secrets.NETLIFY_BOXDEV_WEBHOOK }}
data: "{}"

- name: "Trigger Netlify deployment (Box.dev mirror)"
uses: joelwmale/webhook-action@2.0.2
uses: joelwmale/webhook-action@2.4.1
env:
WEBHOOK_URL: ${{ secrets.NETLIFY_BOXDEV_MIRROR_WEBHOOK }}
data: "{}"

- name: Send Slack notification
uses: Ilshidur/action-slack@2.0.2
uses: Ilshidur/action-slack@2.1.0
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_USERNAME: GitHub Actions
Expand All @@ -127,7 +122,7 @@ jobs:
args: "Pushed latest OpenAPI changes to `en` branch :rocket:"

- name: Send Slack notification
uses: Ilshidur/action-slack@2.0.2
uses: Ilshidur/action-slack@2.1.0
if: ${{ failure() }}
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
Expand All @@ -136,17 +131,42 @@ jobs:
with:
args: "Error running `deploy` job in OpenAPI CI"

- name: Send Slack using Slack GHA notification
uses: slackapi/[email protected]
with:
payload: |
{
"text": "**new gha**\nPushed latest OpenAPI changes to `en` branch :rocket:",
"icon_url": "https://avatars3.githubusercontent.com/u/8659759?s=200&v=4",
"username": "GitHub Actions"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}

- name: Send Slack using Slack GHA notification
uses: slackapi/[email protected]
if: ${{ failure() }}
with:
payload: |
{
"text": "**new gha**\nError running `deploy` job in OpenAPI CI",
"icon_url": "https://avatars3.githubusercontent.com/u/8659759?s=200&v=4",
"username": "GitHub Actions"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}

# The deploy task actually deploys any changes to the en-staging branch
push-to-en-staging:
# We run this on the latest ubuntu
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/staging'
if: github.ref == 'refs/heads/mj-staging'
timeout-minutes: 10

# We use node 14.X
# We use node 18.X
strategy:
matrix:
node-version: [14.x]
node-version: [ 18.x ]

# Requires the lint and test jobs to pass first
needs:
Expand All @@ -155,34 +175,29 @@ jobs:
# The following steps are performed for each job
steps:
- name: Check out the repo
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Build content
run: |
yarn install
yarn build:spec

- name: Push API specification
uses: s0/git-publish-subdir-action@v2.4.0
uses: s0/git-publish-subdir-action@v2.6.0
env:
REPO: self
BRANCH: en-staging
FOLDER: compiled/spec
BRANCH: mj-staging
FOLDER: openapi
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: "Trigger Netlify deployment"
uses: joelwmale/webhook-action@2.0.2
uses: joelwmale/webhook-action@2.4.1
env:
WEBHOOK_URL: ${{ secrets.NETLIFY_BOXDEV_STAGING_WEBHOOK }}
data: "{}"

- name: Send Slack notification
uses: Ilshidur/action-slack@2.0.2
uses: Ilshidur/action-slack@2.1.0
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_USERNAME: GitHub Actions
Expand All @@ -191,7 +206,7 @@ jobs:
args: "Pushed latest OpenAPI changes to `en-staging` branch :rocket:"

- name: Send Slack notification
uses: Ilshidur/action-slack@2.0.2
uses: Ilshidur/action-slack@2.1.0
if: ${{ failure() }}
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
Expand All @@ -200,6 +215,31 @@ jobs:
with:
args: "Error running `deploy-staging` job in OpenAPI CI"

- name: Send Slack using Slack GHA notification
uses: slackapi/[email protected]
with:
payload: |
{
"text": "**new gha**\nPushed latest OpenAPI changes to `en-staging` branch :rocket:",
"icon_url": "https://avatars3.githubusercontent.com/u/8659759?s=200&v=4",
"username": "GitHub Actions"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}

- name: Send Slack using Slack GHA notification
uses: slackapi/[email protected]
if: ${{ failure() }}
with:
payload: |
{
"text": "**new gha**\nError running `deploy-staging` job in OpenAPI CI",
"icon_url": "https://avatars3.githubusercontent.com/u/8659759?s=200&v=4",
"username": "GitHub Actions"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}

# Build the OpenAPI spec and validate using Codegen
validate-spec:
name: Validate OpenAPI spec using Codegen
Expand All @@ -209,17 +249,19 @@ jobs:
# The following steps are performed for each job
steps:
- name: Check out the repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: box-openapi
# TODO: remove `ref`
ref: apimgmt-558

- name: Set up Node.js 16.x
uses: actions/setup-node@v3
- name: Set up Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 16.x
node-version: 20.x

- name: Check out the Codegen repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: box/box-codegen
ref: main
Expand All @@ -232,5 +274,12 @@ jobs:
npm install
cd scripts
npm install
cp $GITHUB_WORKSPACE/box-openapi/openapi.json .
npm run generate ./openapi.json output typescript,swift,python,c#
echo "pwd"
pwd
echo "GITHUB_WORKSPACE"
ls $GITHUB_WORKSPACE
echo "GITHUB_WORKSPACE/box-openapi"
ls $GITHUB_WORKSPACE/box-openapi
echo "GITHUB_WORKSPACE/box-openapi/openapi"
ls $GITHUB_WORKSPACE/box-openapi/openapi
npm run generate $GITHUB_WORKSPACE/box-openapi/openapi/openapi.json output typescript,swift,python,c#
Loading
Loading