Run just fix
#388
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: CI | |
env: | |
IMAGE_NAME: actions-registry | |
PUBLIC_IMAGE_NAME: ghcr.io/opensafely-core/actions-registry | |
REGISTRY: ghcr.io | |
SSH_AUTH_SOCK: /tmp/agent.sock | |
on: | |
push: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: npm | |
- name: Install node_modules | |
run: npm ci | |
- name: Build assets | |
run: npm run build | |
- name: Store assets | |
uses: actions/upload-artifact@v3 | |
with: | |
name: node-assets | |
path: assets/dist | |
check: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
cache-dependency-path: requirements.*.txt | |
- uses: extractions/setup-just@v1 | |
- name: Check formatting, linting and import sorting | |
run: just check | |
test: | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: extractions/setup-just@v1 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
cache-dependency-path: requirements.*.txt | |
- name: Retrieve assets | |
uses: actions/download-artifact@v3 | |
with: | |
name: node-assets | |
path: assets/dist | |
- name: Run tests | |
env: | |
SECRET_KEY: 12345 | |
run: just test | |
lint-dockerfile: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: hadolint/hadolint-action@f988afea3da57ee48710a9795b6bb677cc901183 # v2.1.0 | |
with: | |
failure-threshold: error | |
dockerfile: docker/Dockerfile | |
docker-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: extractions/setup-just@aa5d15c144db4585980a44ebfdd2cf337c4f14cb # v1.4.0 | |
- name: Build docker image and run tests in it | |
run: | | |
# build docker and run test | |
just docker-test | |
deploy: | |
needs: [check, test, docker-test, lint-dockerfile] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
if: github.ref == 'refs/heads/main' | |
concurrency: deploy-production | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: extractions/setup-just@aa5d15c144db4585980a44ebfdd2cf337c4f14cb # v1.4.0 | |
- name: Build docker image | |
run: | | |
# docker-test step will build the dev image by default, so build the prod image | |
just docker-build prod | |
- name: Login to Packages Container registry | |
run: | | |
docker login $REGISTRY -u ${{ github.actor }} --password ${{ secrets.GITHUB_TOKEN }} | |
- name: publish docker image | |
run: | | |
docker tag $IMAGE_NAME $PUBLIC_IMAGE_NAME:latest | |
docker push $PUBLIC_IMAGE_NAME:latest | |
- name: Setup SSH Agent | |
run: | | |
ssh-agent -a $SSH_AUTH_SOCK > /dev/null | |
ssh-add - <<< "${{ secrets.DOKKU3_DEPLOY_SSH_KEY }}" | |
- name: Deploy | |
run: | | |
SHA=$(docker inspect --format='{{index .RepoDigests 0}}' $PUBLIC_IMAGE_NAME:latest) | |
ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" [email protected] git:from-image actions-registry $SHA | |
- name: Create Sentry release | |
uses: getsentry/action-release@744e4b262278339b79fb39c8922efcae71e98e39 | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_RELEASE_INTEGRATION_TOKEN }} | |
SENTRY_ORG: ebm-datalab | |
SENTRY_PROJECT: actions-registry | |
with: | |
environment: production | |
ignore_empty: true |