From 591d515c3e1a0c75d4b57e9409bb6d34a86c5776 Mon Sep 17 00:00:00 2001 From: Mandy Parson Date: Thu, 30 Jan 2025 19:19:33 -0700 Subject: [PATCH] KMS-524: Creating github actions --- .github/pull_request_template.md | 36 +++++++++ .github/workflows/ci.yml | 128 +++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/ci.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..158aa24 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,36 @@ +# Overview + +### What is the feature? + +Please summarize the feature or fix. + +### What is the Solution? + +Summarize what you changed. + +### What areas of the application does this impact? + +List impacted areas. + +# Testing + +### Reproduction steps + +- **Environment for testing:** +- **Collection to test with:** + +1. Step 1 +2. Step 2... + +### Attachments + +Please include relevant screenshots or files that would be helpful in reviewing and verifying this change. + +# Checklist + +- [ ] I have added automated tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ccc023f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,128 @@ +name: CI + +on: + push: + branches: [main] + pull_request: {} + +jobs: + eslint: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['lts/hydrogen'] + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: Cache node modules + uses: actions/cache@v4 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + # not caching node_modules because `npm ci` removes it + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Install dependencies + run: npm ci + - name: Run eslint + run: npm run lint + stylelint: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['lts/hydrogen'] + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: Cache node modules + uses: actions/cache@v4 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + # not caching node_modules because `npm ci` removes it + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Install dependencies + run: npm ci + - name: Run stylelint + run: npm run lint:css + vitest: + needs: [eslint, stylelint] + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['lts/hydrogen'] + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: Cache node modules + uses: actions/cache@v4 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + # not caching node_modules because `npm ci` removes it + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Install dependencies + run: npm ci + - name: Run Vitest tests + run: npm run test + - name: Upload coverage to codecov + uses: codecov/codecov-action@v4 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + tests-passed: + needs: [vitest] + runs-on: ubuntu-latest + steps: + - name: All Tests Have Passed + run: 'echo true' + + sync: + if: success() && github.ref == 'refs/heads/main' # only run on main success + needs: [tests-passed] # only run after vitest and cypress jobs complete + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install SSH key + uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.SSH_KEY }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Push to ECC + run: | + git remote add ecc ssh://git@git.earthdata.nasa.gov:7999/kms/kms.git + git fetch ecc "+refs/heads/*:refs/remotes/origin/*" + + git fetch --unshallow || true + echo "GITHUB_COMMIT=$GITHUB_SHA" + git push ecc $GITHUB_SHA:refs/heads/main