diff --git a/.github/workflows/build-and-push-to-the-registry.yml b/.github/workflows/build-and-push-to-the-registry.yml deleted file mode 100644 index 9f569d5..0000000 --- a/.github/workflows/build-and-push-to-the-registry.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Create image and Deploy - -on: - push: - branches: - - 'master' -jobs: - build_and_push_to_registry: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Login to GitHub Container Registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push shell - uses: docker/build-push-action@v2 - with: - context: ./shell-docker - platforms: linux/amd64 - push: true - tags: | - ghcr.io/acdh-oeaw/generic-environments/shell:latest - - name: Build and push perl - uses: docker/build-push-action@v2 - with: - context: ./perl-docker - platforms: linux/amd64 - push: true - tags: | - ghcr.io/acdh-oeaw/generic-environments/perl:latest - - name: Build and push perlsimple - uses: docker/build-push-action@v2 - with: - context: ./perlsimple-docker - platforms: linux/amd64 - push: true - tags: | - ghcr.io/acdh-oeaw/generic-environments/perlsimple:latest - - name: Build and push java8 - uses: docker/build-push-action@v2 - with: - context: ./java8-docker - platforms: linux/amd64 - push: true - tags: | - ghcr.io/acdh-oeaw/generic-environments/java8:latest - diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml new file mode 100644 index 0000000..5abdae1 --- /dev/null +++ b/.github/workflows/starter.yaml @@ -0,0 +1,139 @@ +name: workflows starter +# env: is empty, see setup-env and the outputs there +on: + push: {} + workflow_dispatch: {} +jobs: + setup_workflow_env: + runs-on: ubuntu-latest +# Optionally specify the environment that should be used on this branch + # environment: review/dev + outputs: +# It seems you have to specify the environment twice (passed to reusable workflow) +# as there is no way yet to get the active environment + # environment: review/dev +# or see the switch on ref_name script below + environment: ${{ steps.get_environment_from_git_ref.outputs.environment }} + environment_short: ${{ steps.get_environment_from_git_ref.outputs.environment_short }} + image_name: your-image-name +# Please note that the next line only works correctly with repositories that don't contain +# upper case characters. If you have such a repo name please replace ${{ github.repository }} +# with org/repo-name (all lower case). +# E. g. ACDH-OEAW/OpenAtlas-Discovery -> acdh-oeaw/openatlas-discovery + registry_root: ghcr.io/${{ github.repository }}/ + default_port: "5000" +# Usually you don't deal with all commits since the repository was created. +# Increase if you e.g don't find a tag you want to display in the application + fetch-depth: 10 + submodules: "true" +# herokuish_base_image: ghcr.io/acdh-oeaw/herokuish-for-cypress/main:latest-22 + APP_NAME: your-app-name +# This together with the branch name is also used as the namespace to deploy to + APP_ROOT: "/" + # SERVICE_ID: "99999" # Better use GtiHub environment variables for this + # PUBLIC_URL: "https://some-stuff.acdh-ch-dev.oeaw.ac.at" # Use GitHub environment variables for a stable custom public url + # POSTGRES_ENABLED: "false" # needs to be set to true to enable a postgres db installed next to the deployed app +# You should not need to have to change anything below this line +#----------------------------------------------------------------------------------------------------- + steps: + - name: Get environment from git ref + id: get_environment_from_git_ref + run: | + echo "Running on branch ${{ github.ref_name }}" + if [ "${{ github.ref }}" = "refs/heads/main" ]; then + echo "environment=production" + echo "environment=production" >> $GITHUB_OUTPUT + echo "environment_short=prod" >> $GITHUB_OUTPUT + else + echo "environment=review/${{ github.ref_name }}" + echo "environment=review/${{ github.ref_name }}" >> $GITHUB_OUTPUT + echo "environment_short=$(echo -n ${{ github.ref_name }} | sed 's/feat\(ure\)\{0,1\}[_/]//' | tr '_' '-' | tr '[:upper:]' '[:lower:]' | cut -c -63 )" >> $GITHUB_OUTPUT + fi + generate_workflow_vars: + needs: [setup_workflow_env] + environment: + name: ${{ needs.setup_workflow_env.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: Generate PUBLIC_URL if not set + id: generate_public_url + run: | + kube_ingress_base_domain="${{ vars.KUBE_INGRESS_BASE_DOMAIN }}" + public_url="${{ needs.setup_workflow_env.outputs.PUBLIC_URL || vars.PUBLIC_URL }}" + if [ "${public_url}x" == 'x' ] + then public_url=https://${{ needs.setup_workflow_env.outputs.environment_short }}.${kube_ingress_base_domain} + fi + echo "public_url=$public_url" >> $GITHUB_OUTPUT + outputs: + PUBLIC_URL: ${{ steps.generate_public_url.outputs.public_url }} + _1_shell: + needs: [setup_workflow_env, generate_workflow_vars] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-dockerfile-and-push-to-registry.yaml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_name: ${{ needs.setup_workflow_env.outputs.image_name }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + PUBLIC_URL: ${{ needs.generate_workflow_vars.outputs.PUBLIC_URL }} + fetch-depth: ${{ fromJson(needs.setup_workflow_env.outputs.fetch-depth) }} + submodules: ${{ needs.setup_workflow_env.outputs.submodules }} + context: shell-docker + file: shell-docker/Dockerfile + _1_perl: + needs: [setup_workflow_env, generate_workflow_vars] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-dockerfile-and-push-to-registry.yaml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_name: ${{ needs.setup_workflow_env.outputs.image_name }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + PUBLIC_URL: ${{ needs.generate_workflow_vars.outputs.PUBLIC_URL }} + fetch-depth: ${{ fromJson(needs.setup_workflow_env.outputs.fetch-depth) }} + submodules: ${{ needs.setup_workflow_env.outputs.submodules }} + context: perl-docker + file: perl-docker/Dockerfile + _1_perlsimple: + needs: [setup_workflow_env, generate_workflow_vars] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-dockerfile-and-push-to-registry.yaml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_name: ${{ needs.setup_workflow_env.outputs.image_name }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + PUBLIC_URL: ${{ needs.generate_workflow_vars.outputs.PUBLIC_URL }} + fetch-depth: ${{ fromJson(needs.setup_workflow_env.outputs.fetch-depth) }} + submodules: ${{ needs.setup_workflow_env.outputs.submodules }} + context: perlsimple-docker + file: perlsimple-docker/Dockerfile + _1_java8: + needs: [setup_workflow_env, generate_workflow_vars] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-dockerfile-and-push-to-registry.yaml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_name: ${{ needs.setup_workflow_env.outputs.image_name }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + PUBLIC_URL: ${{ needs.generate_workflow_vars.outputs.PUBLIC_URL }} + fetch-depth: ${{ fromJson(needs.setup_workflow_env.outputs.fetch-depth) }} + submodules: ${{ needs.setup_workflow_env.outputs.submodules }} + context: java8-docker + file: java8-docker/Dockerfile +# _3: +# needs: [setup_workflow_env, generate_workflow_vars, _1, _2] +# uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/deploy.yml@main +# secrets: inherit +# with: +# environment: ${{ needs.setup_workflow_env.outputs.environment}} +# fetch-depth: ${{ fromJson(needs.setup_workflow_env.outputs.fetch-depth) }} +# DOCKER_TAG: ${{ needs.setup_workflow_env.outputs.registry_root }}${{ needs.setup_workflow_env.outputs.image_name }} +# APP_NAME: ${{ needs.setup_workflow_env.outputs.APP_NAME }}-${{ needs.setup_workflow_env.outputs.environment_short }} +# APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} +# SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} +# PUBLIC_URL: ${{ needs.generate_workflow_vars.outputs.PUBLIC_URL }} +# POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} +# default_port: "${{ needs.setup_workflow_env.outputs.default_port}}" +# submodules: ${{ needs.setup_workflow_env.outputs.submodules }} \ No newline at end of file