* ci: update workflow triggers for linting and building to include specific paths * ci: rename workflow to clarify purpose as App-Service Build test * chore(ci): specify the path context when building for appservice --------- Co-authored-by: dkeven <dkvvven@gmail.com>
245 lines
8.0 KiB
YAML
245 lines
8.0 KiB
YAML
name: Lint and Test Charts
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main", "release-*" ]
|
|
paths:
|
|
- '!docs/**'
|
|
- 'apps/.olares/**'
|
|
- 'build/**'
|
|
- 'cli/**'
|
|
- 'daemon/**'
|
|
- 'framework/**/.olares/**'
|
|
- 'infrastructure/**/.olares/**'
|
|
- 'platform/**/.olares/**'
|
|
- 'vendor/**'
|
|
pull_request_target:
|
|
branches: [ "main", "release-*" ]
|
|
paths:
|
|
- '!docs/**'
|
|
- 'apps/.olares/**'
|
|
- 'build/**'
|
|
- 'cli/**'
|
|
- 'daemon/**'
|
|
- 'framework/**/.olares/**'
|
|
- 'infrastructure/**/.olares/**'
|
|
- 'platform/**/.olares/**'
|
|
- 'vendor/**'
|
|
|
|
workflow_dispatch:
|
|
|
|
|
|
jobs:
|
|
lint-test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
- name: Set up Helm
|
|
uses: azure/setup-helm@v3
|
|
with:
|
|
version: v3.12.1
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.9'
|
|
check-latest: true
|
|
|
|
- name: Set up chart-testing
|
|
uses: helm/chart-testing-action@v2.6.0
|
|
|
|
- name: Pre package
|
|
run: |
|
|
bash build/package.sh
|
|
|
|
- name: Run chart-testing (lint)
|
|
run: ct lint --chart-dirs .dist/wizard/config,.dist/wizard/config/apps,.dist/wizard/config/gpu --check-version-increment=false --all
|
|
|
|
# - name: Create kind cluster
|
|
# if: steps.list-changed.outputs.changed == 'true'
|
|
# uses: helm/kind-action@v1.7.0
|
|
|
|
# - name: Run chart-testing (install)
|
|
# if: steps.list-changed.outputs.changed == 'true'
|
|
# run: ct install --chart-dirs wizard/charts,wizard/config --target-branch ${{ github.event.repository.default_branch }}
|
|
|
|
test-version:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
version: ${{ steps.generate.outputs.version }}
|
|
steps:
|
|
- id: generate
|
|
run: |
|
|
v=1.12.3-$(echo $RANDOM$RANDOM)
|
|
echo "version=$v" >> "$GITHUB_OUTPUT"
|
|
|
|
upload-cli:
|
|
needs: test-version
|
|
uses: ./.github/workflows/release-cli.yaml
|
|
secrets: inherit
|
|
with:
|
|
version: ${{ needs.test-version.outputs.version }}
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
upload-daemon:
|
|
needs: test-version
|
|
uses: ./.github/workflows/release-daemon.yaml
|
|
secrets: inherit
|
|
with:
|
|
version: ${{ needs.test-version.outputs.version }}
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
push-image:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: "Checkout source code"
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
# test
|
|
- env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: "us-east-1"
|
|
run: |
|
|
bash build/image-manifest.sh && bash build/upload-images.sh .manifest/images.mf
|
|
|
|
push-image-arm64:
|
|
runs-on: [self-hosted, linux, ARM64]
|
|
|
|
steps:
|
|
- name: Install skopeo (Ubuntu)
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y skopeo
|
|
|
|
|
|
- name: 'Checkout source code'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
|
|
- env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: 'us-east-1'
|
|
run: |
|
|
export PATH=$PATH:/usr/local/bin:/home/ubuntu/.local/bin
|
|
bash build/image-manifest.sh && bash build/upload-images.sh .manifest/images.mf linux/arm64
|
|
|
|
|
|
push-deps:
|
|
needs: [test-version, upload-daemon]
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: "Checkout source code"
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
# test
|
|
- env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: "us-east-1"
|
|
VERSION: ${{ needs.test-version.outputs.version }}
|
|
REPO_PATH: '${{ secrets.REPO_PATH }}'
|
|
run: |
|
|
bash build/deps-manifest.sh && bash build/upload-deps.sh
|
|
|
|
push-deps-arm64:
|
|
needs: [test-version, upload-daemon]
|
|
runs-on: [self-hosted, linux, ARM64]
|
|
|
|
steps:
|
|
- name: "Checkout source code"
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
- name: Install coscmd
|
|
run: pip install coscmd
|
|
|
|
# test
|
|
- env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: "us-east-1"
|
|
VERSION: ${{ needs.test-version.outputs.version }}
|
|
REPO_PATH: '${{ secrets.REPO_PATH }}'
|
|
run: |
|
|
export PATH=$PATH:/usr/local/bin:/home/ubuntu/.local/bin
|
|
bash build/deps-manifest.sh linux/arm64 && bash build/upload-deps.sh linux/arm64
|
|
|
|
|
|
upload-package:
|
|
needs: [lint-test, test-version, push-image, push-image-arm64, push-deps, push-deps-arm64]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
|
|
- name: Package installer
|
|
run: |
|
|
bash build/build.sh ${{ needs.test-version.outputs.version }}
|
|
|
|
- name: Upload package
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: 'us-east-1'
|
|
run: |
|
|
md5sum install-wizard-v${{ needs.test-version.outputs.version }}.tar.gz > install-wizard-v${{ needs.test-version.outputs.version }}.md5sum.txt && \
|
|
aws s3 cp install-wizard-v${{ needs.test-version.outputs.version }}.md5sum.txt s3://terminus-os-install/install-wizard-v${{ needs.test-version.outputs.version }}.md5sum.txt --acl=public-read && \
|
|
aws s3 cp install-wizard-v${{ needs.test-version.outputs.version }}.tar.gz s3://terminus-os-install/install-wizard-v${{ needs.test-version.outputs.version }}.tar.gz --acl=public-read
|
|
|
|
|
|
install-test:
|
|
needs: [test-version, upload-cli, upload-package]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Deploy Request
|
|
uses: fjogeleit/http-request-action@v1
|
|
with:
|
|
url: 'https://cloud-dev-api.bttcdn.com/v1/resource/installTest'
|
|
method: 'POST'
|
|
customHeaders: '{"Authorization": "${{ secrets.INSTALL_SECRET }}"}'
|
|
data: 'versions=${{ needs.test-version.outputs.version }}&downloadUrl=https://cdn.olares.com/install-wizard-v${{ needs.test-version.outputs.version }}.tar.gz'
|
|
contentType: "application/x-www-form-urlencoded"
|
|
|
|
- name: Check Result
|
|
uses: eball/poll-check-endpoint@v0.1.0
|
|
with:
|
|
url: https://cloud-dev-api.bttcdn.com/v1/resource/installResult
|
|
method: 'POST'
|
|
expectStatus: 200
|
|
failedBodyRegex: '"installedAt":"[0-9]{10,}".*"isSuccess":false'
|
|
expectBodyRegex: '"isSuccess":true'
|
|
timeout: 1800000
|
|
interval: 30000
|
|
customHeaders: '{"Authorization": "${{ secrets.INSTALL_SECRET }}", "Content-Type": "application/x-www-form-urlencoded"}'
|
|
data: 'versions=${{ needs.test-version.outputs.version }}'
|