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

WIP: Test deploying gitea and publishing an npm package to it #550

Closed
wants to merge 2 commits into from
Closed
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
51 changes: 51 additions & 0 deletions .gitea/workflows/gitea.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Test Gitea

on:
pull_request:
branches: '*'
push:
branches:
- main
- zach-test
- new-gitea-test

# Needed until we can incorporate docker startup into the executor container
env:
DOCKER_HOST: unix:///var/run/dind.sock

jobs:
test:
name: "Run Gitea package registry test"
runs-on: ubuntu-latest
steps:
- name: 'Update'
run: apt-get update
- name: 'Setup jq'
run: apt-get install jq -y
- name: 'Check jq'
run: |
which jq
jq --version
- name: "Clone project repository"
uses: actions/checkout@v3
- name: "Install Python"
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: "Print Python version"
run: python3 --version
- name: "Install shiv"
run: pip install shiv
- name: "Generate build version file"
run: ./scripts/create_build_tag_file.sh
- name: "Build local shiv package"
run: ./scripts/build_shiv_package.sh
- name: Start dockerd # Also needed until we can incorporate into the executor
run: |
dockerd -H $DOCKER_HOST --userland-proxy=false &
sleep 5
- name: "Run gitea tests"
run: |
export CERC_SCRIPT_DEBUG=true &
./tests/gitea/test.sh

29 changes: 29 additions & 0 deletions .github/workflows/gitea.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Gitea Test

on:
pull_request:
branches: '*'
push:
branches: '*'

jobs:
test:
name: "Run basic test suite"
runs-on: ubuntu-latest
steps:
- name: "Clone project repository"
uses: actions/checkout@v3
- name: "Install Python"
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: "Print Python version"
run: python3 --version
- name: "Install shiv"
run: pip install shiv
- name: "Generate build version file"
run: ./scripts/create_build_tag_file.sh
- name: "Build local shiv package"
run: ./scripts/build_shiv_package.sh
- name: "Run gitea tests"
run: ./tests/gitea/test.sh
4 changes: 2 additions & 2 deletions app/build_npms.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ def build_package(package):
try:
docker.run(builder_js_image_name,
remove=True,
interactive=True,
tty=True,
interactive=False,
tty=False,
user=f"{os.getuid()}:{os.getgid()}",
envs=envs,
# TODO: detect this host name in npm_registry_url rather than hard-wiring it
Expand Down
39 changes: 29 additions & 10 deletions app/data/container-build/cerc-builder-js/build-npm-package.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
#!/bin/bash
# Usage: build-npm-package.sh <registry-url> <publish-with-this-version>
# Note: supply the registry auth token in CERC_NPM_AUTH_TOKEN
#


if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi

echo "GITEA ACTIONS 1 is: $GITEA_ACTIONS"
echo "GITEA ACTIONS 2 is: ${GITEA_ACTIONS}"

echo "token 1 is: $CERC_NPM_AUTH_TOKEN"
echo "token 2 is: ${CERC_NPM_AUTH_TOKEN}"

if [[ "$GITEA_ACTIONS" = "true" ]]; then
echo "WORKS"
else
echo "WTF"
fi

if ! [[ $# -eq 1 || $# -eq 2 ]]; then
echo "Illegal number of parameters" >&2
exit 1
Expand All @@ -28,17 +44,20 @@ npm config set @lirewine:registry ${local_npm_registry_url}
local_npm_registry_url_fixed=$( echo ${local_npm_registry_url} | sed -e 's/^http[s]\{0,1\}://')
npm config set -- ${local_npm_registry_url_fixed}:_authToken ${CERC_NPM_AUTH_TOKEN}
# First check if the version of this package we're trying to build already exists in the registry
# but this line: "jq -r .data.dist.tarball" fails only in gitea, so skip this block
if [[ "${GITEA_ACTIONS}" != "true" ]]; then
package_exists=$( yarn info --json ${package_name}@${package_publish_version} 2>/dev/null | jq -r .data.dist.tarball )
if [[ ! -z "$package_exists" && "$package_exists" != "null" ]]; then
echo "${package_publish_version} of ${package_name} already exists in the registry"
if [[ ${CERC_FORCE_REBUILD} == "true" ]]; then
# Attempt to unpublish the existing package
echo "NOTE: unpublishing existing package version since force rebuild is enabled"
npm unpublish --force ${package_name}@${package_publish_version}
else
echo "skipping build since target version already exists"
exit 0
fi
if [[ ! -z "$package_exists" && "$package_exists" != "null" ]]; then
echo "${package_publish_version} of ${package_name} already exists in the registry"
if [[ ${CERC_FORCE_REBUILD} == "true" ]]; then
# Attempt to unpublish the existing package
echo "NOTE: unpublishing existing package version since force rebuild is enabled"
npm unpublish --force ${package_name}@${package_publish_version}
else
echo "skipping build since target version already exists"
exit 0
fi
fi
fi
echo "Build and publish ${package_name} version ${package_publish_version}"
yarn install
Expand Down
40 changes: 40 additions & 0 deletions tests/gitea/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
set -e

export CERC_SCRIPT_DEBUG=true
if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
# Dump environment variables for debugging
echo "Environment variables:"
env

echo "holla 1 $GITEA_ACTIONS"
echo "Running gitea test"

# Bit of a hack, test the most recent package
TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 )
# Set a non-default repo dir
export CERC_REPO_BASE_DIR=~/stack-orchestrator-gitea-test
echo "Testing this package: $TEST_TARGET_SO"
echo "Test version command"
reported_version_string=$( $TEST_TARGET_SO version )
echo "Version reported is: ${reported_version_string}"
echo "Cloning repositories into: $CERC_REPO_BASE_DIR"
rm -rf $CERC_REPO_BASE_DIR
mkdir -p $CERC_REPO_BASE_DIR

$TEST_TARGET_SO --stack build-support build-containers
$TEST_TARGET_SO --stack package-registry setup-repositories
$TEST_TARGET_SO --stack package-registry build-containers
output=$($TEST_TARGET_SO --stack package-registry deploy-system up)
token=$(echo $output | grep -o 'export CERC_NPM_AUTH_TOKEN=[^ ]*' | cut -d '=' -f 2)
export CERC_NPM_AUTH_TOKEN=$token
export GITEA_ACTIONS=true
echo "holla 2 $GITEA_ACTIONS"
$TEST_TARGET_SO --stack fixturenet-laconicd setup-repositories
$TEST_TARGET_SO --stack fixturenet-laconicd --verbose --debug build-npms --include laconic-sdk

# Clean up
$TEST_TARGET_SO --stack package-registry deploy-system down
echo "Test passed"